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

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

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

 아래 내용은 구글, 네이버 등의 사이트에서 검색한 내용중에서 실제로 적용이 되었던 내용입니다. 물론 실제로 적용이 되었던 환경은 리눅스가 아니라 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

+ Recent posts