반응형

1. 기존의 데이터를 수정하지는 않는다.

2. 다음 쿼리를 통해 캐릭터셋이 2개 이상 조회된다면 (같은 케릭터셋이 2개의 타입이라면..) 데이터를 주고 받을 때 정상적이지 않을수 있다 ~.

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
       decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
                     9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
                    96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
                   112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
   from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);


3. 시스템 환경을 케릭터 셋으로 변경한다.(/as sysdba)
   ※ 반드시 백업받고 수행한다
   SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER SYSTEM ENABLE RESTRICTED SESSION;
   ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
   ALTER SYSTEM SET AQ_TM_PROCESSES=0;
   ALTER DATABASE OPEN;
   COL VALUE NEW_VALUE CHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
   COL VALUE NEW_VALUE NCHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
   ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;



절차

 SQL> SHUTDOWN IMMEDIATE;
<do a full backup>
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 KO16KSC5601;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;



참고 사이트 : http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_2.html
반응형

+ Recent posts