본문 바로가기

DB-Oracle

문자셋(character set) 확인 및 변경

728x90
반응형

https://jehna.tistory.com/34

"[Oracle] 문자셋(characterset) 확인 및 변경"

 

 

 

※ 참고 및 주의사항 (문자셋 변경 전 꼭!! 읽어봐야 함)

    - CENTOS7에 ORACLE을 설치함 (아래 내용은 윈도우여도 동일한 것 같다.) 

    - ORACLE에 SYSDBA로 접속

    - 데이터베이스에 데이터가 있는 경우 문자셋 변경은 매우 위험할 수 있다. 

 

 

1. 문자셋 확인 

 



    select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
 // nls_database_parameters 테이블에서 캐릭터셋만 조회




 

2. 문자셋 변경

 



    SQL> update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';
// value에 변경하려는 문자셋 입력

    SQL> update props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; 
// value에 변경하려는 문자셋 입력 

    SQL> commit;  // 변경된 내용 저장
    SQL> shutdown immediate // 오라클 서버 종료 (immediate: 현재 처리 중인 것들은 모두 stop)
    SQL> startup // 서버 시작

 

 

 

참고) 한글을 지원하는 문자셋(캐릭터셋)

 



 * KO16KSC5601
   완성형 한글- 일반적으로 많이 사용되며 2350자의 한글, 4888자의 한자, 히라카나, 카타카나, 영문 및 각종 기호를 포함하고 있음.  (한글바이트: 2byte)
 * KO16MSWIN949
   조합형 한글- 완성형을 포함하여 11172자의 한글을 표현함 (한글바이트: 2byte)
 * AL32UTF8 
   Unicode의 CES 중 하나- 11172자의 한글을 지원 (한글바이트: 3byte)

 

 

만약!!!! 오류가 발생한다면??

http://jehna.tistory.com/36 글 참고



출처: https://jehna.tistory.com/34 [Jehna :)]



















2. 문자셋 변경하기

   - // 뒤에 설명을 달아두어 좀 지저분하지만 나중에도 알아보기 위해 설명을 달아놨다능..

 



   SQL> SHUTDOWN IMMEDIATE;   // 접속중인 세션이나 진행 중인 트랜잭션 모두 강제 종료
   Database closed.
   Database dismounted.
   ORACLE instance shut down.






   SQL> STARTUP MOUNT;    // 마운트 단계까지 오라클 시작
   Total System Global Area  536870912 bytes
   Fixed Size     2097696 bytes
   Variable Size   230690272 bytes
   Database Buffers   297795584 bytes
   Redo Buffers     6287360 bytes
   Database mounted.






   SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
 // 세션 제한 모드 활성화 (문자셋 변경 중 오류를 막기 위해)

   System altered.






   SQL> ALTER SYSTEM SET AQ_TM_PROCESSES = 0;   
// 문자셋 변경 중 오류를 막기 위해 QueueMonitorCoordinator 비활성화 (자세한 내용은 아래참고)

   System altered.






   SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0; 
 // job queue안의 job을 수행하지 않도록 설정 (문자셋 변경 중 오류를 막기 위해)

   System altered.




   SQL> ALTER DATABASE OPEN;    
 
// 데이터 베이스 오픈

   System altered.






   SQL> col value new_value charset   
 // SELECT 쿼리 실행 시 결과값과 컬럼명을 같이 보여주라는 의미

   SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';   // NLS_CHARACTERSET 의 문자셋 확인
   VALUE
   --------------------------------------------------------------------------------
   KO16MSWIN949






   SQL> col value new_value ncharset
   SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_NCHAR_CHARACTERSET'; 
    //NLS_NCHAR_CHARACTERSET 확인
   VALUE
   --------------------------------------------------------------------------------
   AL16UTF16






   SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE & CHARSET;
   old   1: ALTER DATABASE CHARACTER SET INTERNAL_USE & CHARSET
 
   new   1: ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949


   Database altered.






   SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE & NCHARSET; 
   //문자셋 변경시, 데이터 손상 방지를 위한 검사를 건너뛰고 변경(INTERNAL_USE가 검사를 건너뛰겠다는 의미)
   old   1: ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE & NCHARSET
   new   1: ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16


   Database altered.
   




   SQL> SHUTDOWN IMMEDIATE; // 종료
   Database closed.
   Database dismounted.
   ORACLE instance shut down.






   SQL> STARTUP;  // 시작
   ORACLE instance started.


   Total System Global Area  536870912 bytes
   Fixed Size     2097696 bytes
   Variable Size   230690272 bytes
   Database Buffers   297795584 bytes
   Redo Buffers     6287360 bytes
   Database mounted.
   Database opened




   SQL> SHUTDOWN IMMEDIATE; // 종료
   Database closed.
   Database dismounted.
   ORACLE instance shut down.






   SQL> STARTUP;  // 시작
   ORACLE instance started.


   Total System Global Area  536870912 bytes
   Fixed Size     2097696 bytes
   Variable Size   230690272 bytes
   Database Buffers   297795584 bytes
   Redo Buffers     6287360 bytes
   Database mounted.
   Database opened
   
   



출처: https://jehna.tistory.com/36 [Jehna :)]

728x90
반응형