본문 바로가기

IT/DB

[Oracle] Oracle 10g Character set 변경

Oracle 10g Character set변경

kor 버전으로 받는다면 기본적으로 설치되는 버전은 KO16MSWIN949 일 경우가 많다.
한글을 지원하는 Character Set을 비교해보자.
1. KO16KSC5601
    - 한글 지원상태 : 한글 2350자
    - 지원버전 : 7.x
    - 한글바이트 : 2바이트
2. KO16MSWIN949
    - 한글 지원상태 : KO16KSC5601 + 확장 ( 총 11172자 )
    - 지원버전 : 8.0.6 이상
    - 한글바이트 : 2바이트
3. UTF8
    - 한글 지원상태 : 한글 11172자
    - 지원버전 : 8.0 이후
    - 한글바이트 : 3바이트
4. AL32UTF8
    - 한글 지원상태 : 한글 11172자
    - 지원버전 : 9i Release 1 이상
    - 한글바이트 : 3바이트
UTF8은 많은 문자를 지원하지만 한글을 3바이트 소모한다는 단점이 있다.
(못느낄 정도로 빠른 컴퓨터가 별 차이가 없을 듯함)
캐릭터셋이 어떻게 설정되어 있나 확인 쿼리는 다음과 같다ㅣ
SELECT * FROM sys.props$ where name='NLS_CHARACTERSET';
 
Oracle 10g Character Set 변경
SQLPLUS 접속후 (system 계정으로 로그인 혹시 모른다면 sqlplus /nolog; 후 conn /as sysdba; 로 접속한다)
C:\>sqlplus /nolog;
sql>conn /as sysdba;
 
변경하고자하는 캐릭터셋을 수정
sql>update sys.props$ set value$='UTF8' where name='NLS_CHARACTERSET';
sql>update sys.props$ set value$='UTF8' where name='NLS_NCHAR_CHARACTERSET';
sql>update sys.props$ set value$='KOREAN_KOREA.UTF8' where name='NLS_LANGUAGE';
sql>commit;

 

sql>update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';

sql>update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET';
sql>update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE';
sql>commit;

 

sql>update sys.props$ set value$='KO16KSC5601' where name='NLS_CHARACTERSET';

sql>update sys.props$ set value$='KO16KSC5601' where name='NLS_NCHAR_CHARACTERSET';
sql>update sys.props$ set value$='KOREAN_KOREA.KO16KSC5601' where name='NLS_LANGUAGE'; 

sql>commit;


재시작
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 UTF8;

or sql>alter database character set KO16MSWIN949;
sql>shutdown immediate;
sql>startup;

 

 

Session nls값 변경

1. Language값 변경

alter session set nls_language='AMERICAN'

 

2. Date형만 변경

ALTER SESSION SET NLS_DATE_LANG='AMERICAN_AMERICA.KO16MSWIN949';

alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';

 

3. 한글OS일 경우, 국가 및 언어 옵션을 바꿔준다

 

 

## character set 확인

SQL> select * from v$nls_parameters where parameter like '%CHARACTER%'

## 문자 Set 변경

 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;

 

# oracle character set및 language set 확인
desc sys.props$

'IT > DB' 카테고리의 다른 글

[Oracle SQL] 테이블 정의서 query  (0) 2015.07.27
[Oracle] DECODE 함수  (0) 2015.07.27
[Oracle] PL/SQL 문법정리  (0) 2015.07.27
[Oracle] Oralce 10g Windows7에 설치  (0) 2015.07.27
[Oracle] PCTFREE와 PCTUSED 정리  (0) 2015.07.27