Oracle Characterset 변경하기

Error troubleshooting 2012. 6. 5. 00:50 posted by socl

사례

서로 다른 인코딩 정보로 인해 imp 대상 서버에 dmp를 할 수 없는 문제
dmp 원본 서버 인코딩 : KO16KSC5601
imp 대상 서버 인코딩 : WE8ISO8859P15


해결방법

1. 오라클 데이터베이스 관리자로 접속하여 NLS_characterset, NCHAR의 CHARACTERSET에 한국어를 지원하도록 파라미터의 속성값을 KO16KSC5601로 변경

[문자셋 변경]
SQL> update sys.props$ set value$=’KO16KSC5601’ where name=’NLS_CHARACTERSET’;
1 row updated.

SQL> update sys.props$ set value$=’KO16KSC5601’ where name=’NLS_NCHAR_CHARACTERSET’;
1 row updated.

[언어셋 변경]
SQL> update sys.props$ set value$=’AMERICAN_AMERICA.KO16KSC5601’ where name=’NLS_LANGUAGE’;
1 row updated.

[변경사항 저장 및 데이터베이스 재연동]
SQL> commit;
Commit complete.

[오라클 재시작]
SQL> shutdown
Database closed.
Database dismounted.
Oracle instance shut down.

SQL> startup
ORACLE instance started.
Total System Global Area 235999352 bytes

Fixed Size 450680 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.

[변경사항 확인]
SQL> select * from v$nls_parameters;

2. 문자셋과 마찬가지로 오라클 데이터베이스 관리자로 접속하여 NLS_LANGUAGE 파라미터의 속성값을 AMERICAN_AMERICA.KO16KSC5601로 변경
오라클을 설치할 때 지정해 주었던 .bash_profile 파일에서 Oracle 언어 환경변수를 다음과 같이 변경해 준다.

export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601