본문 바로가기

Developer Diary/SQL & DB

왜 제 오라클 DB에선 한글을 3 Byte로 인식하는 거죠?

Q. 제가 A라는 테이블을 하나 만들었습니다. name이란 칼럼이 있는데요,
이 칼럼엔 '홍길동', '이순신'과 같은 세 글자 이름이 들어가도록 하려고 합니다.
그래서 name 칼럼의 데이터 타입 길이는 6 Byte로 지정했습니다. 그런데 insert가 되지 않습니다.
그래서 데이터 타입 길이를 9 Byte로 해 주었더니 인제야 insert가 됩니다. 아무래도 한글 한 글자를 3 Byte로 인식하는 것 같은데, 왜 이런 걸까요?

A. 간단합니다. 오라클 설치할 때 문자 집합을 어떻게 설정했느냐에 따라 한글을 인식하는 Byte 길이가 달라집니다. KO16KSC5601(한글 완성형), KO16MSWIN949는 한글 한 글자를 2 Byte로 인식합니다. 하지만, UTF8/AL32UTF8의 경우 한글 한 글자의 길이를 3 Byte로 인식합니다. UTF8/AL32UTF8의 장점은 한글 정렬(order by)이 가능하지만, 3 Byte 길이를 소모합니다.

SQL PLUS 접속하신 후,
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';

명령어를 실행시켜 주십시오. 현재 사용 중인 문자 집합을 확인할 수 있습니다.