Database

Oracle characterset

Jack Moon 2012. 10. 8. 16:10

Oracle characterset

출처 : http://misskor.com/135

 

1. NLS_CHARACTERSET 과 NLS_NCHAR_CHARACTERSET

NLS_CHARACTERSET는 char,varchar 같은 데이터 타입에서 사용하는 문자 집합이고,
NLS_NCHAR_CHARACTERSET는  nchar, nvarchar 같은 데이터 타입에서 사용하는 문자 집합입니다.


NLS_NCHAR_CHARACTERSET는 AL16UTF16를 포함하여  두가지 밖에 없습니다.
일반적으로 주로 사용하는 언어에 대하여 NLS_CHARACTERSET을 지정합니다.

한글과 영어만 사용하실 경우에는 KO16KSC5601, KO16MSWIN949가 있습니다.

한글과 영어를 제외한 언어를 사용하실 경우에는 UTF8과 같은 문자 집합이나, 각 나라 언어에 맞는 문자 집합을 설정하시면 됩니다.

가끔 한글을 사용하시는데 US7ASCII를 설정하시는 경우가 있는데 이것은 한글을 제대로 입력하지 못하기 때문에 자료이전 시에 큰 문제를 야기 시킬수 있습니다.

일반적으로 KO16KSC5601, KO16MSWIN949로  문자 집합을 설정하고, 한글과 영어를 제외한 다른 나라 언어 입력시에는 데이터 타입을 ncahr, nvarchar로 사용하시면 됩니다.

 

2. 한글을 지원하는 Character Set
KO16KSC5601 : 완성형이고 한글 2350자를 지원한다.

KO16MSWIN949 : 확장완성형이고 MS에서 만든 것으로 한글 11172자를 지원하다.


KSC5601에서 지원하는 2350자의 글자는 가나다 순이지만 그 외 글자는 뒤죽박죽으로 정의됨 ==> 뒤죽박죽 부분에서     정렬이 문제될 수 있음
Oracle 8.0.6 이상에서만 사용가능(8.0.5 이하 버전과의 DB Link나 client가 8.0.5 이하인 경우 문제 발생)

 

 

UTF8 : ASCII는 1byte, 그 외 유럽쪽은 2byte, 아시아는 3byte
한글 11172자 지원 및 가나다 순 정렬

 

AL32UTF8 :
Oracle 9i부터 지원됨
UTF8과 한글지원 부분은 동일함

 

모든 한글표현을 하고 용량을 줄이려면 ===> KO16MSWIN949
모든 한글표현을 하고 모든 한글문자에 대해 올바른 정렬을 하고 Oracle 8i와 연동하지 않는다면 ===> AL32UTF8

 

 

3. Character Set 변경 방법
NLS_CHARACTERSET 확인
SELECT * FROM nls_database_parameters
 WHERE parameter='NLS_CHARACTERSET'
       OR parameter='NLS_LANGUAGE'


NLS_CHARACTERSET 변경(Oracle 계정으로 로그인)
sqlplus "/ as sysdba"

(DB 종료상태에서...)
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;

(아래처럼 변경한다. character set 은 KO16MSWIN949 도 사용가능 하다.)
ALTER DATABASE CHARACTER SET KO16KSC5601;
 
(혹시 superset 이 틀리다는 오류가 나면 아래처럼 강제로 수정할 수 있다.)
ALTER DATABASE CHARACTER SET INTERNAL_USE KO16KSC5601;

(종료)
SHUTDOWN IMMEDIATE;

(시작)
STARTUP;

 

 

그래서 imp쪽의 NLS_NCHAR_CHARACTERSET 이 값을 변경했습니다.

이렇게요  -------

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

 

'Database' 카테고리의 다른 글

Oracle SQLPLUS 에서 백스페이스를 눌러 글자 지우기  (0) 2012.10.08
Oracle Instantclient (window 설치)  (0) 2012.10.08
Oracle 에러  (0) 2012.10.08
Oracle 복구  (0) 2012.10.08
Oracle 백업  (0) 2012.10.08