본문 바로가기

낙서장/Oracle

Oracle character set 인코딩 방식 - SELECT

select sys_context('userenv', 'language') from dual;

 

오라클 인코딩 방식 변경 방법 [KO16MSWIN949 = 원하는 인코딩 방식으로 변경]

sqlplus '/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;	
ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949;	
SHUTDOWN IMMEDIATE;		
STARTUP;

 

아래 테이블 출처 :  테이블 출처 링크

한글을 지원하는 캐릭터셋 비교 테이블
  KO16KSC5601 KO16MSWIN949 UTF8 AL32UTF8
한글 지원상태 한글 2350 KO16KSC5601 + 확장 8822( 11172) 한글 11172 한글 11172
캐릭터셋/인코딩 버전 한글완성형 완성형코드포함
확장된 8822자는 MS Windows Codepage 949 따라 배열
8.1.6 이전 : Unicode 2.1
8.1.7 
이후: Unicode 3.0
9i Rel1: Unicode 3.0
9i Rel2 : Unicode 3.1
10g Rel1 : Unicode 3.2
1/0g Rel2 : Unicode 4.0
한글바이트 2바이트 2바이트 3바이트 3바이트
지원버전 7.x 8.0.6 이상 8.0 이후 9i Release 1 이상
Database Characterset으로 설정 가능 여부 가능 가능 가능 가능
National Characterset으로 설정 가능 여부 불가능 불가능 가능 불가능
한글정렬 단순 바이너리 정렬로 구현 가능 KOREAN_M 또는 UNICODE_BINARY  특수한 옵션 필요
(
한글 정렬에 관한 설명 참조)
한글 정렬은 단순 바이너리 정렬로 가능. 한자 정렬은 KOREAN_M 옵션 필요  
장점 - 특별한 장점이 없음. 완성형 코드만을 입출력하는 것이 확실할 경우에는 높은 성능 - 2바이트로 모든 한글 저장/입출력 가능. 공간의 소모가 적으면서도 모든 한글을 입출력할  있다

- 현대 한글 11172자가 정확한 순서로 배열되어 정렬이 효과적
- 
다른 언어들(중국어 태국어 ) 또한 같은 데이타베이스 인스턴스에 저장되어야  경우 UTF8 등의 유니코드 캐릭터셋 이외에 다른 대안이 있을  없음
- 한글 지원은 UTF8 동일
단점 - 한글을 2350자밖에 지원하지 못한다는 치명적인 단점이 있어 미래에는 사용이 자제되어야  캐릭터셋 - 완성형과 호환을 하려다보니, 글자배열순서와 정렬 순서가 다르게 . 단순한 "ORDER BY" 절로는 제대로 한글 정렬을   없음 한글  캐릭터가 3바이트를 소모하게 되어 공간의 소모가 크고, 유니코드 인코딩/디코딩에 성능을 소모해야 한다  

 

기존 캐릭터셋 새로운 캐릭터셋 변경 가능 여부
US7ASCII KO16KSC5601/KO16MSWIN949/UTF8/AL32UTF8 가능
KO16KSC5601 KO16MSWIN949 가능
KO16MSWIN949 UTF8 불가능
UTF8 AL32UTF8 가능

'낙서장 > Oracle' 카테고리의 다른 글

Oracle DROP Table 복구방법  (0) 2022.07.18
오라클 제약조건명 - SELECT  (0) 2022.07.14
Oracle export/import  (0) 2022.06.29
Oracle 데이터 없는 날짜 표시하는 방법  (0) 2022.06.01
SQL 날짜 계산  (0) 2022.02.23