oracle7에서는 SYS.PROPS$ table을 update하여 character set을 변경할 수
있었으나, oracle8i 에서는 character set에 대한 정보가 여러곳에 저장되어 있어,
단순히 SYS.PROPS$ table을 update하는 것만으로 character set을 변경할 수는
없으며, 다음의 방법으로 character set 변경을 지원합니다.
ALTER DATABASE [<db_name>] CHARACTER SET INTERNAL_USE <new_character_set>
ALTER DATABASE [<db_name>] NATIONAL CHARACTER SET INTERNAL_USE
<new_NCHAR_character_set>
db_name은 optional이며 character set name은 single quotes 없이 그대로
사용됩니다.
예) ALTER DATABASE CHARACTER SET INTERNAL_USE KO16KSC5601;
Database의 character set을 변경하기 위해서는 아래의 절차대로 작업을
수행하시기 바랍니다.
SVRMGR> SHUTDOWN IMMEDIATE; -- or NORMAL
< do a full backup >
SVRMGR> STARTUP MOUNT;
SVRMGR> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SVRMGR> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SVRMGR> ALTER DATABASE OPEN;
SVRMGR> ALTER DATABASE CHARACTER SET INTERNAL_USE <new_character_set>;
SVRMGR> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE
<new_character_set>;
SVRMGR> SHUTDOWN IMMEDIATE; -- or NORMAL
SVRMGR> STARTUP;
National character set을 변경하기 위해서는 "alter database national
character set ..." command를 사용하실 수 있으며, db character set과
동시에 변경이 가능합니다.
<발생 가능 문제>
작업을 수행하는 도중 다음과 같은 error를 만날 수 있으며, 이 때는 아래의
사항을 check하여 보시기 바랍니다.
ORA-01679: database must be mounted EXCLUSIVE and not open to activate
- enable restricted session 이 수행되었나 ?
- queue process의 값을 0로 setting 하였나 ?
- 작업자 이외의 다른 login user가 존재하는가 ?
상기 작업은 이전의 character set이 US7ASCII 이거나, 변경하려는 character
set과 동일한 경우(old character set itself)를 제외하고는 수행되지 않으며,
그렇지 않은 경우에는 ORA-24329 error를 받게 됩니다.
ORA-24329: invalid character set identifier
한국 Oracle 자료 입니다.
|