개발자 쿠키

[Oracle, Tibero] NLS_CHARACTERSET과 NLS_NCHAR_CHARACTER 차이 본문

database

[Oracle, Tibero] NLS_CHARACTERSET과 NLS_NCHAR_CHARACTER 차이

개발자 쿠키 2025. 10. 30. 09:08

DB에서 어떤 자료형을 사용하느냐에 따라 기본 문자셋이 달랐습니다. 저는 Tibero의 NCLOB 자료형을 사용하려 했는데, 다른 문자형은 정상 작동했지만 NCLOB만 데이터 정합성이 깨지는 현상이 있었습니다.

Tibero 기술지원팀에 문의한 결과, National 문자형 계열(NCLOB, NCHAR, NVARCHAR2) 은 기본적으로 UTF-16 인코딩을 사용하고, 일반 문자형은 UTF-8을 사용한다는 것을 알게 되었습니다.

UTF-8은 영어 1바이트, 한글 3바이트로 가변 길이지만, UTF-16은 대부분의 문자를 2바이트로 고정 처리하기 때문에 문자 단위 연산이 간단하고 다국어 환경에서의 호환성이 높습니다. 이러한 이유로 Tibero는 Oracle과 마찬가지로 National 문자형의 기본 인코딩을 UTF-16으로 설정하고 있었습니다.

 

 

NLS_CHARACTERSET

- DB 서버가 사용하는 기본 문자집합
- CHAR, VARCHAR2, CLOB 등 일반 문자열 타입 컬럼이 이 설정 따름

 

NLS_NCHAR_CHARACTERSET

- DB 서버에서 National 문자형(NCHAR, NVARCHAR2, NCLOB) 타입에 적용되는 문자집합
- Tibero 기본값은 보통 UTF16
- 다국어 지원용으로 설계

 

OS 계정의 LANG 확인 방법

$ locale | grep LANG
LANG=en_US.UTF-8


터미널 상의 Character Set 설정

 

tbdns.tbr 파일  Character Set  설정

$  vi $TB_HOME/client/config/tbdsn.tbr
 
 tibero=(
   (INSTANCE=(HOST=localhost)
             (PORT=8629)
             (DB_NAME=tibero)
   )
)
tibero_SP=(
   (INSTANCE=(HOST=localhost)
             (PORT=8630)
             (DB_NAME=tibero)
   )
)

TB_NLS_LANG=UTF8

 

 

Oracle

 

 

Tibero

 

OS, 터미널, DB 문자셋이 일치해야 데이터 정합성을 유지할 수 있습니다.

'database' 카테고리의 다른 글

[MSSQL] CentOS 7.6 환경에서 설치  (0) 2025.09.15
[AWS] Redshift  (0) 2025.09.10
NoSQL  (0) 2025.07.22
[Tibero DB] 설치 방법  (1) 2025.06.27
[PostgreSQL] 설치 방법  (0) 2025.05.18