개발자의 팩션골드의 지식베이스 입니다.



변경 조건

WE8MSWIN1252 => AL32UTF8

 

1.     기존 데이터 백업
기존의 NLS_LANG을 변경 후, export 한다.

export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

exp 아이디/비번 file=백업명.dmp

 

2.     기존 데이터 삭제
깨끗하게, 계정을 새로 생성한다.

drop user 아이디 cascade;

create user 아이디 identified by 비번;

grant connect, resource to 아이디;

grant create view to 아이디;

 

3.     인코딩을 AL32UTF8로 변경

update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

commit;

shutdown immediate;

startup mount;

alter system enable restricted session;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open;

alter database character set AL32UTF8;

shutdown immediate;

startup;

 

4.     기존 데이터 복원

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

imp 아이디/비번 file=백업명.dmp

 

 

Comment +1

참고

kor 버전으로 받는다면 기본적으로 설치되는 버전은 KO16MSWIN949 일 경우가 많다.

한글을 지원하는 Character Set을 비교해보자.

1. KO16KSC5601

    - 한글 지원상태 : 한글 2350자

    - 지원버전 : 7.x

    - 한글바이트 : 2바이트

2. KO16MSWIN949

    - 한글 지원상태 : KO16KSC5601 + 확장 ( 총 11172자 )

    - 지원버전 : 8.0.6 이상

    - 한글바이트 : 2바이트

3. UTF8

    - 한글 지원상태 : 한글 11172자

    - 지원버전 : 8.0 이후

    - 한글바이트 : 3바이트

4. AL32UTF8

    - 한글 지원상태 : 한글 11172자

    - 지원버전 : 9i Release 1 이상

    - 한글바이트 : 3바이트

UTF8은 많은 문자를 지원하지만 한글을 3바이트 소모한다는 단점이 있다.

(못느낄 정도로 빠른 컴퓨터가 별 차이가 없을 듯함)

** National Characterset은 UTF8과 AL16UTF16(기본값)만 지원

 

캐릭터셋이 어떻게 설정되어 있나 확인 쿼리는 다음과 같다

 

Oracle Character Set 변경

1. 접속

sqlplus '/as sysdba'



2. 확인

select distinct(nls_charset_name(charsetid)) CHARACTERSET, decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'), 9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'), 96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'), 112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96,112);


3. 변경

Characterset: KO16MSWIN949,National Characterset: AL16UTF16 로 변경하는 방법

update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE';

commit; 

shutdown immediate; 

startup mount; 

alter system enable restricted session; 

alter system set job_queue_processes=0; 

alter system set aq_tm_processes=0; 

alter database open; 

alter database character set KO16MSWIN949; 

shutdown immediate; 
startup; 



Characterset: WE8MSWIN1252,National Characterset: AL16UTF16 로 변경하는 방법

update sys.props$ set value$='WE8MSWIN1252' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='AMERICAN_AMERICA.WE8MSWIN1252' where name='NLS_LANGUAGE';

commit; 

shutdown immediate; 

startup mount; 

alter system enable restricted session; 

alter system set job_queue_processes=0; 

alter system set aq_tm_processes=0; 

alter database open; 

alter database character set KO16MSWIN949; 

shutdown immediate; 
startup; 

Comment +1