2008년 10월 31일
Oracle - 캐릭터셋 변경 (문자셋, CHARACTER)
현재 캐릭터 셋 확인.
SYS.PROPS$ 에서 NAME에 CHAR나 NLS가 포함되는 행의 VALUE$를 확인한다.
SELECT NAME,VALUE$
FROM SYS.PROPS$
WHERE NAME ='NLS_LANGUAGE'
OR NAME ='NLS_TERRITORY'
OR NAME ='NLS_CHARACTERSET'
OR NAME ='NLS_NCHAR_CHARACTERSET';
변경 방법.
캐릭터 셋 변경하는 부분에 internal_use 이라는 옵션이 있다.
이 옵션을 지정해 주지 않으면 기존 캐릭터셋의 상위 셋으로 밖에 변환이 안된는 에러 메세지가 출력된다.
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
물론 이 옵션을 사용해서 에러를 무시한다면 기존의 캐릭터형 데이터가 손상될 확률은 지극히 높다.
SQL> SHUTDOWN IMMEDIATE;
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 internal_use SETAL32UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
SYS.PROPS$ 에서 NAME에 CHAR나 NLS가 포함되는 행의 VALUE$를 확인한다.
SELECT NAME,VALUE$
FROM SYS.PROPS$
WHERE NAME ='NLS_LANGUAGE'
OR NAME ='NLS_TERRITORY'
OR NAME ='NLS_CHARACTERSET'
OR NAME ='NLS_NCHAR_CHARACTERSET';
변경 방법.
캐릭터 셋 변경하는 부분에 internal_use 이라는 옵션이 있다.
이 옵션을 지정해 주지 않으면 기존 캐릭터셋의 상위 셋으로 밖에 변환이 안된는 에러 메세지가 출력된다.
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
물론 이 옵션을 사용해서 에러를 무시한다면 기존의 캐릭터형 데이터가 손상될 확률은 지극히 높다.
SQL> SHUTDOWN IMMEDIATE;
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 internal_use SETAL32UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
# by | 2008/10/31 11:48 | ORACLE | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]