이것저것 정리하는 블로그

 Oracle DBMS를 사용하면서 수 많은 개발자들이 한번쯤은 접하게되는 문제가 "지금 운영중인 DB의 캐릭터셋 설정때문에 한자, 혹은 특정 한글 문자의 입력이 안되는게 당연합니다. 지금 캐릭터셋을 바꾸면 Data가 깨질수도 있어요."라는 DBA의 답변...이다.
 이런말 하기는 참 싫지만 내가 설치한 DB도 아니고... 새로 구축하는 DB면 이렇게 설치 안 하겠는데... 암튼...
(사실 이렇게 말해놓고는 지난번에 설치한 DB는 이 회사 왕고참 과장님의 의견(기존에 사용하던 DB와 캐릭터셋이 같아야 한다는...)에 따라서 KSC5601로 설치했다. 아~ 소신대로 살기 참 힘들죠~잉~)

OTN에 NLS관련 내용을 정리한 문서가 있어서 소개합니다. 언젠간 저도 이런 곳에 문서를 올릴 수 있는 능력자가 될 수 있기를...

보러가기
오라클과 NLS의 찰떡궁합 들여다보기(1)
오라클과 NLS의 찰떡궁합 들여다보기(2)

Comment +0

 아래 내용은 구글, 네이버 등의 사이트에서 검색한 내용중에서 실제로 적용이 되었던 내용입니다. 물론 실제로 적용이 되었던 환경은 리눅스가 아니라 SUN 장비에 Solaris 9 이였습니다.64비트 CPU였구요. 하지만 리눅스 서버에서도 잘 되리라 생각합니다.


-----------------------------------------------------------------------------------------------

운영체제 : RedHat Linux 9
DBMS : Oracle 9i


1. 문자셋 확인

 SQL>select * from v$nls_parameters where parameter like '%CHARACTER%';


2. 문자셋 변경

 SQL>STARTUP MOUNT;
 SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
 SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
 SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
 SQL>ALTER DATABASE OPEN;
 SQL>ALTER DATABASE CHARACTER SET [UTF8];  // [변경하고자 하는 문자셋] ,AL32UTF8
 SQL>SHUTDOWN IMMEDIATE;
 SQL>STARTUP;


 

 ORA-12712 ; new character set must be a superset of old character set

 해당 메세지의 경우 문자셋 변경이 어렵다.


 위와 같은 메세지가 나오는 경우 기존 오라클 인스턴스를 삭제 후

 $ORACLE_HOME/bin/dbca 를 실행하여 새로운 인스턴스를 만드는 것이 추천 방법이다.


 ※ 언어가 문자셋을 말하는 것은 아니다.


NLS_LANG=KOREAN_KOREA.KO16KSC5601

Comment +0