Oracle과 한글 그리고 UTF-8


NLS_LANG
오라클에서는 많은 환경변수 값을 사용하고 있다. 그렇지만 지금은 한글에 관한 이야기를 하고 있으므로 NLS_LANG만 가지고 설명한다.

라클 DB 서버와 클라이언트간 NLS_LANG 값을 동일하게 하여 사용하는 경우가 99%가량이다. 이렇게 사용하는 이유는
Oracle Client 프로그램을 이용하여 직접 오라클 DB에 접속하여 작업하는 경우가 대부분이기 때문이다.
그러나 NLS_LANG 변수의 값은 오라클 DB 환경변수 값이 아나라, 사용자 자신이 속해 있는 환경을 오라클 DB 서버에 알려주는 역할을 하는 환경변수이다.
 
            NLS_LANG = [언어]_[영역].[캐릭터셋]
언어 : 현재 사용자가 사용하는 언어적 특성을 결정짓는 값
영역 : 현재 사용자가 위치한 영역의 특성을 결정짓는 값
캐릭터셋 : 현재 사용자의 시스템이 인식할 수 있는 캐릭터 셋의 값
 

약 Windows Client에서 한국어 환경을 사용하는 경우 NLS_LANG 값을
‘KOREAN_KOREA.KO16MSWIN949″로, 유닉스 클라이언트에서 한국어를
입출력한다면 ‘KOREAN_KOREA.KO16KSC5601’로 NLS_LANG를 설정할 것이다.
 
오라클 서버 CharacterSet과 클라이언트 CharacterSet을 동일하게 설정해야 하는 경우
앞서 이야기 했지만 NLS_LANG 값은 클라이언트 값이기 때문에 오라클 DB 서버와 동일하게 설정할 필요는 없지만 작업 및 그 동안 관습에 따라 오라클 DB서버와 NLS_LANG 변수 값을 동일하게 설정하는 경우가 많다.
그러나 오라클에서 아래에 나열한 작업이 필요할 경우 꼭 오라클 DB와 NLS_LANG 값을 동일하게 하는 것을 권장하고 있다.
– 데이터베이스로부터 데이터를 export 받을 때
– export 받은 데이터베이스와 같은 CharacterSet을 가진 DB로 export된 파일을 import할 때
– 기타 다국어 지원 애플리케이션에서 목적에 따라 사용할 때
 
NLS_LANG 관련 주요 변수
– NLS_TERRITORY : 영역 설정 – NLS_LANG 변수 값에 의해 자동 설정
    * 설정 방법 예> ALTER SESSION SET NLS_TERRITORY = ‘KOREA’
– NLS_LANGUAGE : 언어 설정 – NLS_LANG 변수 값에 의해 자동 설정되는 초기화 변수
     * 설정 방법 예> ALTER SESSION SET NLS_LANGUATE = ‘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(유로화 변경 기간 동안의 혼란을 막기 위해 만들어진 매개변수.
      9iR2와 그 이후로는 EU의 유로화 변경이 완료된 상태로 NLS_CURRENCY와 값이 동일하다.
      다만 미래에 다른 지역에서도 통화기호의 변경이 일어나면 사용될 수 있음)
 
NLS_LANGUAGE 변수에 따라 그 값이 결정되는 변수
    * NLS_DATE_LANGUAGE
    * NLS_SORT
    * NLS_

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다