Đổi NLS_CHARACTERSET trong Oracle

Khi chuyển đổi dữ liệu Oracle từ máy này sang máy khác. Tôi gặp một số trường hợp bị lỗi font Tiếng Việt trên máy đích.

Có một nguyên nhân sinh lỗi font đó là do NLS_CHARACTERSET trên máy nguồn và máy đích khác nhau.

1, Kiểm tra NLS_CHARACTERSET trên mỗi máy.

$sqlplus /nolog

$conn / as sysdb

>SELECT value$ FROM sys.props$ WHERE name = ‘NLS_CHARACTERSET’ ;

2, Nếu NLS_CHARACTERSET trên mỗi máy khác nhau, cách khả thi nhất là chuyển NLS_CHARACTERSET

máy đích về AL32UTF8

2.1 Đăng nhập tài khoản quản trị sysdba giống như bước 1

2.2 Tắt hệ thống,  sao lưu dữ liệu.

> SHUTDOWN IMMEDIATE;

2.3 Bật dưới chế độ RESTRICT

> STARTUP RESTRICT;

2.4 Chuyển các tham số về mặc định:

> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

2.5 Chuyển NLS_CHARACTERSET

> ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

2.6 Tắt CSDL và khởi động lại CSDL ở chế độ bình thường:

> SHUTDOWN IMMEDIATE;
> STARTUP;
Advertisements

Import export dữ liệu trên Oracle sử dụng exp, imp

Cuyển dữ liệu oracle schema từ máy này sang oracle schema trên máy khác sử  dụng exp, imp

Giả định:

Máy 1: user1, passwd1

Máy 2: user2, passwd2

Bước 1: Đăng nhập bằng tài khoản chạy oracle trên linux terminal vào máy 1.

Chạy lệnh sau:

$exp user1/passwd1 file=data_from_m1.dmp log=export_data.log

Sau khi chạy xong ta được file data_from_m1.dmp.

Bước 2: Copy file này sang máy 2. Đăng nhập bằng tài khoản chạy oracle trên linux terminal máy 2.

Chạy lệnh sau:

$imp user2/password2 file=data_from_m1.dmp log=import_data.log fromuser=user1 touser=user2

Import, Export Oracle sử dụng data dump

1. Đăng nhập bằng tài khoản sys as sysdba.
2. Sau đó, tạo một thư mục tạm tại máy nguồn và máy đích:
CREATE OR REPLACE DIRECTORY tempdump AS '/temp/tempdump/';
GRANT READ, WRITE ON DIRECTORY tempdump TO a;

CREATE OR REPLACE DIRECTORY tempdump AS '/temp/tempdump/';
GRANT READ, WRITE ON DIRECTORY tempdump TO b;

3. Xuất dữ liệu:
Xuất toàn bộ dữ liệu:
expdp system/ DIRECTORY=exp_dir DUMPFILE=expfull.dmp FULL=y LOGFILE=expfull.og
Xuất dữ liệu từ schema:
expdp hr/hr DIRECTORY=exp_dir DUMPFILE=schema_exp.dmp SCHEMAS=hr,sh,oe
Xuất dữ liệu từ các bảng:
expdp hr/hr DIRECTORY=exp_dir DUMPFILE=tables_exp.dmp TABLES=employees,jobs,departments
3. Nhập dữ liệu:

Nhập toàn bộ dữ liệu:
$ impdp system/ DIRECTORY=exp_dir DUMPFILE=expfull.dmp FULL=y LOGFILE=impfull.og
Nhập dữ liệu từ schema:
impdp hr/hr DIRECTORY=exp_dir DUMPFILE=expfull.dmp SCHEMAS=hr,sh,oe
Nhập dữ liệu từ các bảng:
impdp hr/hr DIRECTORY=exp_dir DUMPFILE=expfull.dmp TABLES=employees,jobs,departments