블로그 이미지
BJcomm
bjcomm

공지사항

최근에 받은 트랙백

글 보관함

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
06-29 12:38

캐릭터 셋에 변경할 시 기존에 있던 자료들의 캐릭터 셋으로 설정된 데이터들도 변경이 글자가 깨집니다.

캐릭터 셋 변경시 많은 주의 사항이 요구 됩니다.

Oracle 데이터베이스(9i) 생성시에 캐릭터 셋을 기본값으로 설정하게 되면 WE8DEC 로 설정됩니다.

 

유의 사항으로 이 방법은 9i까지 지원하며, 10g부터는 지원하지 않습니다.

10g 부터는 CSSCAN과 CSALTER 라는 유틸리티를 이용해서 변경하시기 바랍니다.

 

 

1. 현재 오라클 서버에 설정된 캐릭터 셋 조회

 

SQL> select * from nls_database_parameters

         where parameter = 'NLS_CHARACTERSET';

 

PARAMETER                            VALUE
------------------------------ --------------------
NLS_CHARACTERSET               WE8ISO8859P1


또는

 

SQL> select * from props$ where name='NLS_CHARACTERSET';

 

NAME                          VALUE$             COMMENT$
---------------------- --------------- -------------
NLS_CHARACTERSET   WE8ISO8859P1    Character set


 

2. WE8ISO8859P1 을 KO16KSC5601으로 변경

 

① sysdba 권한으로 접속

SQL> sqlplus '/as sysdba'

 

② 시스템 정상 종료 및 마운트 접속

SQL> shutdown immediate;

SQL> startup mount;

 

③ 일반 사용자의 세션 가능 제한모드

SQL> alter system enable restricted session;

 

④  job_queue_processes 에 등록된 JOB 프로세스 정지

SQL> alter system set job_queue_processes=0;

 

⑤ aq_tm_processes 에 등록된 JOB 프로세스 정지

SQL> alter system set aq_tm_processes=0;

 

⑥ DB 오픈

SQL> alter database open;

 

⑦ 변경할 캐릭터 셋으로 변경(한글 캐릭터 셋 : KO16MSWIN949 , KO16KSC5601)

SQL> alter database character set internal_use KO16KSC5601;

 

⑧ DB 정상 종료

SQL> shutdown immediate;

 

⑨ DB 재시작

SQL> startup

 

⑩ 파라미터 파일 캐릭터셋 값 업데이트

SQL> update sys.props$ set value$='KO16KSC5601' where name='NLS_CHARACTERSET';
SQL> update sys.props$ set value$='KO16KSC5601' where name='NLS_NCHAR_CHARACTERSET';
SQL> update sys.props$ set value$='AMERICAN_AMERICA.KO16KSC5601' where name='NLS_LANGUAGE';

 

3. 변경한 캐릭터 셋 확인

SQL> select * from nls_database_parameters

         where parameter = 'NLS_CHARACTERSET';

 

PARAMETER                            VALUE
------------------------------ --------------------
NLS_CHARACTERSET               KO16KSC5601;


또는

 

SQL> select * from props$ where name='NLS_CHARACTERSET';

 

NAME                          VALUE$            COMMENT$
---------------------- --------------- -------------
NLS_CHARACTERSET   KO16KSC5601     Character set
[출처] 오라클 캐릭터 셋(CHARACTER SET) 변경하기(9i)|작성자 Top Secret

 

Comment