이 블로그 검색

2009년 11월 15일 일요일

NLS_LANG 및 CHARACTER SET 설정 변경

NLS_LANG(언어설정)은 CHARACTER SET(문자설정)이 아니다!!
CHARACTER SET은 DB의 테이블에 입력 가능한 언어를 의미하고,
NLS_LANG은 오라클에서 표시하는 메세지 및 각종 SQL문에 입력가능한 언어를 의미한다.!!


1. NLS_LANG 변경
:언어설정 변경은 OS레벨과 DB레벨 둘 다 수정해야 한다.

1) OS레벨에서 변경(ORACLE 10g 기준)
- WINDOWS
:실행 창 -> regedit -> HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
에서 NLS_LANG값을 AMERICAN_AMERICA.KO16KSC5601로 변경한다.
(변경 값을 JAPANESE_JAPAN.JA16SJIS로 설정하면 일본어로 표시됨)

- LINUX
:오라클 설치 시, 지정해주었던 .bash_profile에서 오라클 언어 환경변수를 다음과 같이 변경한다.
export NLS_LANG = AMERICAN_AMERICA.KO16KSC5601
(리눅스도 마찬가지로, 변경 값을 JAPANESE_JAPAN.JA16SJIS로 설정하면 일본어로 표시됨)

2) DB레벨에서 변경
:먼저 현재 DB의 언어설정을 다음 SQL문으로 확인해보자.

SQL> COL name FORMAT a20
SQL> COL value$ FORMAT a40
SQL> SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_LANGUAGE';

NAME                       VALUE$
-------------------- ----------------------------------------
NLS_LANGUAGE         AMERICAN_AMERICA.KO16KSC5601


NLS_LANGUAGE의 값이 AMERICAN_AMERICA.KO16KSC5601아니라면 다음 SQL문으로
AMERICAN_AMERICA.KO16KSC5601로 변경한다.


SQL> UPDATE sys.props$ SET value$ = 'AMERICAN_AMERICA.KO16KSC5601'
  WHERE name = 'NLS_LANGUAGE';

1 행이 갱신되었습니다.

SQL> commit;

커밋이 완료되었습니다.


2. CHARACTER SET 변경

현재의 문자설정을 다음 SQL문으로 확인해보자.


SQL> COL name FORMAT a35
SQL> COL value$ FORMAT a35
SQL> SELECT name, value$ FROM sys.props$ WHERE name LIKE '%CHARACTERSET%';

NAME                                              VALUE$
----------------------------------- -----------------------------------
NLS_CHARACTERSET                       KO16KSC5601
NLS_NCHAR_CHARACTERSET           KO16KSC5601

SQL>

NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET 의 값이 KO16KSC5601아니라면
다음 SQL문으로 KO16KSC5601로 변경한다.


SQL> UPDATE sys.props$ SET value$='KO16KSC5601' WHERE name='NLS_CHARACTERSET';

1 행이 갱신되었습니다.

SQL> UPDATE sys.props$ SET value$='KO16KSC5601' WHERE name='NLS_NCHAR_CHARACTERSET';

1 행이 갱신되었습니다.

SQL> commit;

커밋이 완료되었습니다.

참고로, NLS LANG과 CHARACTER SET을 일본어로 변경하고자 하는 경우엔
다음 SQL문을 실행하면 된다.

--NLS LANG 변경
UPDATE sys.props$ SET value$ = 'JAPANESE' WHERE name = 'NLS_LANGUAGE';

--CHARACTER SET 변경
UPDATE sys.props$ SET value$='JA16SJIS' WHERE name='NLS_CHARACTERSET';
UPDATE sys.props$ SET value$='AL16UTF16' WHERE name='NLS_NCHAR_CHARACTERSET';


댓글 없음:

댓글 쓰기