상세 컨텐츠

본문 제목

[ORACLE] NLS_DATABASE_PARAMETERS

Database/Oracle

by Dev. Orion 2025. 9. 9. 23:15

본문

728x90

NLS_DATABASE_PARAMETERS
[ORACLE] NLS_DATABASE_PARAMETERS

 

 

 

Oracle NLS(Globalization) 설정은 다국어 지원과 날짜·숫자·통화·문자 집합 처리를 제어하는 핵심 기능입니다. 이 중 NLS_DATABASE_PARAMETERS는 데이터베이스 레벨에서 적용되는 기본값을 관리하는 중요한 뷰로, 세션·인스턴스·데이터베이스 환경 설정을 명확히 이해해야 안정적인 운영이 가능합니다.


1. NLS_DATABASE_PARAMETERS 개념

NLS_DATABASE_PARAMETERS데이터베이스 생성 시 설정된 기본 NLS 값을 보여주는 뷰입니다. 특정 파라미터를 세션 또는 인스턴스 레벨에서 오버라이딩하지 않는 한, 해당 값이 Oracle 전역에서 기본 동작으로 사용됩니다.

Tip: SQL에서 포맷을 지정하지 않을 경우, Oracle은 다음 순서대로 NLS 설정을 적용합니다.
NLS_SESSION_PARAMETERS → NLS_INSTANCE_PARAMETERS → NLS_DATABASE_PARAMETERS

주요 파라미터 예시

  • 언어·지역: NLS_LANGUAGE, NLS_TERRITORY
  • 날짜·시간: NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT
  • 숫자·통화: NLS_NUMERIC_CHARACTERS, NLS_CURRENCY
  • 문자 집합: NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET
  • 정렬·비교: NLS_SORT, NLS_COMP
-- 데이터베이스 레벨 NLS 파라미터 조회
SELECT parameter, value
FROM   nls_database_parameters
WHERE  parameter IN (
  'NLS_LANGUAGE', 'NLS_TERRITORY',
  'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT',
  'NLS_NUMERIC_CHARACTERS', 'NLS_CURRENCY',
  'NLS_SORT', 'NLS_COMP',
  'NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET'
)
ORDER BY parameter;

2. 세션 / 인스턴스 / 데이터베이스 NLS 비교

구분 대표 뷰 적용 범위 변경 명령 사용 예시
세션(Session) NLS_SESSION_PARAMETERS 현재 접속 세션 ALTER SESSION SET ... 배치 작업, 보고서 생성 시 임시 포맷 지정
인스턴스(Instance) NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS 현재 인스턴스 ALTER SYSTEM SET ... 서버 재시작 전후로 인스턴스 수준 변경 시
데이터베이스(Database) NLS_DATABASE_PARAMETERS 전체 DB 기본값 DB 생성 시 설정 또는 캐릭터셋 변경 새 세션이 아무 설정 없이 사용할 기본 포맷 제공

3. 안전한 변경 전략

NLS_DATABASE_PARAMETERS 값은 데이터베이스 생성 시 결정되며, 일부는 변경이 불가능합니다. 예를 들어 NLS_CHARACTERSET은 DB 재생성 또는 캐릭터셋 마이그레이션을 해야만 바꿀 수 있습니다.

주의: NLS_CHARACTERSETNLS_NCHAR_CHARACTERSET 변경 시, 데이터 손상 위험이 있으므로 반드시 백업과 테스트 환경 검증 후 진행해야 합니다.
-- 세션 단위 포맷 변경 예제
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

-- 인스턴스 단위 포맷 변경 예제
ALTER SYSTEM SET NLS_LANGUAGE = 'AMERICAN' SCOPE=SPFILE;

4. 자주 발생하는 이슈와 해결법

  • 문자 깨짐 문제: NLS_CHARACTERSET 불일치 시 발생 → DB와 클라이언트 문자셋 동기화 필요
  • 날짜 포맷 불일치: 세션과 DB 레벨 NLS_DATE_FORMAT 값이 달라서 → 세션 단위 명시적 포맷 지정
  • 통화 기호 오류: NLS_CURRENCYNLS_ISO_CURRENCY 설정 재검증 필요

5. 실무 점검 체크리스트

  • 배포 전 NLS_DATABASE_PARAMETERS 스냅샷 백업
  • 클라이언트 환경 변수(NLS_LANG)와 DB 설정 일치 여부 확인
  • 다국어 환경은 반드시 NLS_CHARACTERSET 호환성 검증
  • 운영·개발 환경 간 NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT 차이 점검

6. 결론

NLS_DATABASE_PARAMETERS는 Oracle 데이터베이스의 기본 언어·지역·포맷 정책을 결정하는 핵심 요소입니다. 실무에서 문제를 예방하려면 세션·인스턴스·DB 레벨의 동작 차이를 명확히 이해하고, 변경 전후에 반드시 영향을 검증하는 것이 중요합니다.


출처

  • Oracle® Database Globalization Support Guide 19c
  • Oracle® Database SQL Language Reference 19c
728x90

관련글 더보기