본문 바로가기
오라클/이론 및 실습

Character Set

by LaTale 2019. 7. 18.

Character Set이란 데이터베이스 내부에 데이터가 저장될 때 참조되는 글자의 종류를 적어놓은 일종의 사전이다.


만약 사용자가 입력한 글자가 Character Set에 없는 글자라면 ?로 저장된다.


한글 Character Set의 경우 다음과 같이 3가지가 있다.


1. KO16KSC5601

 가장 많이 사용되는 2350자의 한글, 4888자의 한자와 일본어, 영문 및 각종 기호들을 포함한다. 만든지 오래되었다.


2. KO16MSWIN949

 KO16KSC5601을 모두 포함하고 있으며 현대 한글 조합으로 표현할 수 있는 모든 글자수인 8822자의 한글이 추가되어있다.


3. UTF8/AL32UTF8

 유니코드를 구현한 Character Set중에 가변길이 인코딩 방식을 택하고 있다. 가변 길이를 위해 각 바이트마다 플래그 비트를 포함해야해서 한 글자를 표현할 때 최대 3바이트까지 필요하다.


superset과 subset

 글자를 더 많이 가지고 있는 것을 superset이라 한다. 즉, KO16KSC5601이 subset이고 KO16MSWIN949가 superset이다.


subset -> superset은 문제가 없지만 superset -> subset은 글자가 깨져 ?로 나올 수 있다.


이 때 CSSCAN이라는 툴을 이용해 data의 손실 여부를 미리 테스트 할 수 있다.


사용법은 다음과 같다.


우선 csscan을 실행하기 전에 먼저 필요한 정보들을 미리 생성해주어야 한다.


이런 작업을 해주는 스크립트가 $ORACLE_HOME/rdbms/admin/csminst.sql이며 sys계정으로 실행해주면 된다.


사전 작업을 마치고 csscan system/oracle full=y tochar=UTF8 이라는 명령을 통해 테스트해보도록 하겠다.


정상적으로 실행되어 스캔중이다. 시간이 약간 걸린다.


스캔을 마치면 결과를 파일로 저장해둔다. 보통 위와 같이 3개의 파일이 생성된다.


그 중 scan.txt를 열어보도록 하겠다.

우선 scan한 내용을 요약한 부분이다.


각 테이블 스페이스별로 사용량과 크기 등을 볼 수 있고 작업 소요시간도 볼 수 있다.


Expansion을 주의 깊게 보아야 하는데 KO16MSWIN949 ->UTF8이기에 2바이트 문자가 3바이트 문자로 변경될 수 있다. Expansion은 변경 후 기존보다 사이즈가 늘어나는 용량을 계산해주는 항목이다.


scan 관련 주요 설정 값을 보여준다.


각 데이터별로 필요없는 수, 변경가능 수, 손실(lossy)를 보여준다. 당연히 손실이 0이어야 한다.




'오라클 > 이론 및 실습' 카테고리의 다른 글

Datapump(3)  (0) 2019.07.18
Datapump(2) - impdp  (0) 2019.07.18
Datapump(1) - expdp  (0) 2019.07.18
Flashback(2)  (0) 2019.07.16
Flashback(1)  (0) 2019.07.16