오라클 캐릭터셋 확인및 변경
Oracle / 2012.01.16 02:20
오라클을 사용하다 보면 서버와 클라이언트간의 캐릭터셋이 맞지 않아 한글이 깨지는 현상을 종종 볼 수 있다.
오라클은 어떤 캐릭터셋을 사용하든지 관계없이 서버에 설정된 캐릭터셋과 클라이언트에 설정된 캐릭터셋이 일치하면
정상적으로 문자열을 읽어 온다.
1. 서버에 설정된 캐릭터셋 확인 방법
SELECT NAME, VALUE$ FROM SYS.PROPS$
위와같이 쿼리를 하면 서버의 환경설정값들이 가져오는데 NLS_LANGUAGE, NLS_TERRITORY, NLS_CHARACTERSET을
확인하면 된다. 한글을 정상적으로 표시하려면 KOREAN_KOREA.KO16MSWIN949 또는 KOREAN_KOREA.KO16KSC5601을
사용해야 하며 권장사항은 윈도우의 기본 한글 문자셋인 KO16MSWIN949이다.
하지만 간혹 오래된 시스템인 경우 AMRECAN_AMERICA.US7ASCII를 사용하고 있는데 한글을 표현할 수는 있지만 보장하진
않기 때문에 오라클사에서도 권장하지 않고 있다.
2. 서버의 캐릭터셋 변경 방법(예 AMRICAN_AMRICA.US7ASCII -> KOREAN_KOREA.KO16MSWIN949)
1. SYSDBA권한으로 오라클 로그인(그렇지 않을경우 권한문제로 캐릭터셋 업데이트 불가)
2. UPDATE SYS.PROPS$ SET VALUE$='KOREAN' WHERE NAME='NLS_LANGUAGE';
3. UPDATE SYS.RPOPS$ SET VALUE$='KOREA' WHERE NAME='NLS_TERRITORY';
4. UPDATE SYS.PROPS$ SET VALUE$='KO16MSWIN949' WHERE NAME='NLS_CHARACTERSET';
5. COMMIT;
6. SHUTDOWN IMMEDIATE
7. STARTUP
8. 레지스트리편집기에서 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\오라클홈이름\NLS_LANG의 값을
KOREAN_KOREA.KO16MSWIN949로 변경
2. UPDATE SYS.PROPS$ SET VALUE$='KOREAN' WHERE NAME='NLS_LANGUAGE';
3. UPDATE SYS.RPOPS$ SET VALUE$='KOREA' WHERE NAME='NLS_TERRITORY';
4. UPDATE SYS.PROPS$ SET VALUE$='KO16MSWIN949' WHERE NAME='NLS_CHARACTERSET';
5. COMMIT;
6. SHUTDOWN IMMEDIATE
7. STARTUP
8. 레지스트리편집기에서 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\오라클홈이름\NLS_LANG의 값을
KOREAN_KOREA.KO16MSWIN949로 변경
3. 클라이언트의 캐릭터셋 변경 방법
서버와 마찬가지로 레지스트리 편집기에서 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\오라클홈이름\NLS_LANG의 값을 KOREAN_KOREA.KO16MSWIN949로 변경
'Oracle' 카테고리의 다른 글
계정 생성 (0) | 2012.01.16 |
---|---|
오라클 캐릭터셋 확인및 변경 (0) | 2012.01.16 |
오라클 시작 종료 간편하게 하기 (0) | 2009.03.03 |