현재 데이터베이스가 어떤 문자셋을 사용하고 있는지 확인하려면 다음 SQL을 실행합니다.
SELECT parameter, value
FROM nls_database_parameters
WHERE parameter LIKE 'NLS_CHARACTERSET'
OR parameter LIKE 'NLS_NCHAR_CHARACTERSET';
| PARAMETER | VALUE |
|---|---|
| NLS_CHARACTERSET | AL32UTF8 |
| NLS_NCHAR_CHARACTERSET | AL16UTF16 |
NLS_CHARACTERSET: VARCHAR2, CLOB 등의 문자셋NLS_NCHAR_CHARACTERSET: NCHAR, NVARCHAR2, NCLOB의 문자셋| 구분 | AL16UTF16 | AL32UTF8 |
|---|---|---|
| 인코딩 방식 | UTF-16 (Fixed 2-byte or 4-byte) | UTF-8 (Variable 1~4 bytes) |
| 문자 단위 | 16-bit (2-byte) 고정 길이 | 8-bit (1~4 byte) 가변 길이 |
| 저장 공간 | 대부분의 문자 2바이트, 일부는 4바이트 사용 | 영어 1바이트, 한글·중국어 3바이트, 특수문자 최대 4바이트 |
| 사용 대상 | NCHAR, NVARCHAR2, NCLOB (NLS_NCHAR_CHARACTERSET) |
VARCHAR2, CLOB, CHAR (NLS_CHARACTERSET) |
| 국제 표준 | UTF-16 표준 (Windows 기본 인코딩) | UTF-8 표준 (웹과 글로벌 환경에서 가장 널리 사용) |
| 성능 | 다국어 처리 성능 우수 (문자 길이 일정) | 저장 공간 효율적, 네트워크 전송 최적화 |
| 데이터 타입 | 길이 특성 | 유니코드 지원 | 공백 채움 여부 | 최대 길이 | 주요 사용 사례 |
|---|---|---|---|---|---|
| CHAR(n) | 고정 길이 | X | O (공백으로 채움) | 2000 BYTE | 고정 길이 문자열 (예: 성별 코드 'M', 'F') |
| VARCHAR2(n) | 가변 길이 | X | X | 4000 BYTE | 일반적인 문자열 데이터 저장 |
| NCHAR(n) | 고정 길이 | O | O (공백으로 채움) | 2000 BYTE | 다국어(유니코드) 지원이 필요한 고정 길이 데이터 |
| NVARCHAR2(n) | 가변 길이 | O | X | 4000 BYTE | 다국어(유니코드) 지원이 필요한 가변 길이 데이터 |
| 데이터 타입 | 저장 값 | 실제 길이 (LENGTH) | 공백 포함 여부 |
|---|---|---|---|
CHAR(10) |
'Oracle' | 10 | O (공백 포함) |
VARCHAR2(10) |
'Oracle' | 6 | X |
NCHAR(10) |
N'오라클' | 10 | O (공백 포함) |
NVARCHAR2(10) |
N'오라클' | 3 | X |
🔹 정리
CHAR, NCHAR → 고정 길이 (공백 포함)VARCHAR2, NVARCHAR2 → 가변 길이 (공백 없음)NCHAR, NVARCHAR2 → 유니코드 지원 (다국어 가능)