반응형
/********************************************************************************************
-- Title : [10g] NLS_LANG 관련 내용
-- Reference : rabbii.springnote.com
-- Key word : nls lang
********************************************************************************************/

NLS_LANG

Oracle에서는 많은 환경변수값을 사용하고 있다. 그렇지만 지금은 한글에 관한 이야기를 하고 있어서 NLS_LANG만 가지고 설명하려 한다.

내가 주변에서 흔히 보는 경우가 Oracle DB 와 사용자의 Client간 NLS_LANG값을 동일하게 하여 사용하는 경우가 100에 99정도이며 사실 나도 그렇게 사용하고 있다. 이렇게 사용하는 이유는 Oracle Client 프로그램을 이용하여 직접 Oracle DB에 접속하여 작업하는 경우가 대부분 일것이다.

그러나 NLS_LANG 변수의 값은 Oracle DB 환경변수 값이 아니라, 사용자 자신이 속해 있는 환경을 Oracle DB 알려주는 역할을 하는 환경변수이다.

NLS_LANG = [언어]_[영역].[캐릭터셋]

언어 : 현재 사용자가 사용하는 언어적 특성을 결정짓는 값

영역 :현재 사용자가 위치한 영역의 특성을 결정짓는 값

캐릭 터셋 :현재 사용자의 시스템이 인식할 수 있는 캐릭터셋의 값

만약에 Windows Client에서 한국어 환경을 사용하는 경우 NLS_LANG 값을'KOREAN_KOREA.KO16MSWIN949'로 그리고, 유닉스 Client에서 한국어를 입출력한다면 다음과 같이 NLS_LANG을 'KOREAN_KOREA.KO16KO16KSC5601'로 설정 할 수 있다.

Oracle 캐릭터셋과 Client 캐릭터셋을 동일하게 설정해야 경우

위에서 이야기 했지만 NLS_LANG값은 Client값이기 때문에 Oracle DB와 동일하게 설정할 필요는 없지만 작업 및 그동안의 관습(?)에 따라 Oracle DB와 NLS_LANG 변수 값을 동일하게 설정하는 경우가 많다.

그러나 Oracle에서 밑에 나열한 작업이 필요할 경우 꼭 Oracle DB와 NLS_LANG값을 동일하게 하는 것을 권장하고 있다.

  • 데이타베이스로부터 데이타를 export받을 때
  • export 받은 데이타베이스와 같은 캐릭터셋을 가진 데이타베이스로 export된 파일을 import할 때
  • 기타 다국어 지원 애플리케이션에서 목적에 따라 사용할 때

NLS관련 주요 변수

  • NLS_TERRITORY : 영역 설정 - NLS_LANG 변수값에 의해 자동 설정
    • 설정 방법예 : ALTER SESSION SET NLS_TERRITORY = 'KOREA'
  • NLS_LANGUAGE : 언어 설정- NLS_LANG 변수값에 의해 자동 설정 초기화변수
    • 설정 방법예 : ALTER SESSION SET NLS_TERRITORY = 'KOREAN'
  • NLS_LANG : 언어,영역, 캐릭터셋 설정 - 기본값은 'AMERICAN_AMERICA.US7ASCII'
    • 설정 방법예 : OS 환경변수로 설정
  • NLS_COMP : SQL에서의 비교 방식(<,>,=) 설정 - BINARY값으로 비교
    • 설정 방법예 : ALTER SESSION SET NLS_COMP = ''
  • NLS_SORT : 문자열의 정렬방법 설정 - NLS_LANGUAGE값에 따라 결정
    • 설정 방법예 : ALTER SESSION SET NLS_SORT = 'KOREAN_M'


  • NLS_TERRITORY 변수에 따라 그 값이 결정되는 변수
    • NLS_CREDIT(대차대조표 '대변'항목의 금액표기를 위한 기호. 보통 '공백'문자)
    • NLS_CURRENCY
    • NLS_DATE_FORMAT
    • NLS_DEBIT(대차대조표 '차변'항목의 금액표기를 위한 기호. 보통 '마이너스'문자)
    • NLS_ISO_CURRENCY
    • NLS_LIST_SEPARATOR(숫자를 가로로 나열할 때 각 숫자를 구분하는 기호로, 우리나라의 경우 콤마이다)
    • NLS_MOMETARY_CHARACTERS(금액 표기시 금액을 읽기 쉽게 나누는 문자로 우리나라에서는 3자리마다 ","를 추가한다)
    • NLS_NUMERIC_CHARACTERS(소수점기호와 숫자 그룹핑을 위한 문자 설정. 우리나라에서는 '.,'이다(dot와 comma)
    • NLS_TIMESTAMP_FORMAT
    • NLS_TIMESTAMP_TZ_FORMAT
    • NLS_DUAL_CURRENCY(유로화 변경 기간동안의 혼란을 막기 위해 만들어진 매개변수. 9i Release 2과 그 이후로는 EU의 유로화 변경이 완료된 상태로 NLS_CURRENCY와 값이 동일하다. 다만 미래에 다른 지역에서도 통화기호의 변경이 일어나면 사용될 수 있다)
  • NLS_LANGUAGE 변수에 따라 그 값이 결정되는 변수
    • NLS_DATE_LANGUAGE
    • NLS_SORT
반응형

+ Recent posts