Oracle/Admin2010. 1. 11. 15:34
● Character Set
   : encoding scheme
     숫자로 글자를 표현, 글자와 숫자를 mapping한 코드표
     encoding 은 byte sequence로 표시
     서버(DB)와 클라이언트의 character set을 꼭 맞출것 
     서버(DB)와 클라이언트의 character set을 맞춰줬는데도 글자가 깨질 경우 OS의 code page를 확인해 볼 것. 

   ◎ 서버(DB)

SQL> create database 이름
         character set __________
         national character set ____________;


      - US7ASCII : 7bit        => 영어 데이터만 들어온다면 저장소, 메모리 등을 고려했을 때 최적
      - WE8ISO8859P1 : 8bit
      - 한글용 character set
         KO16KSC5601 : 16bit, 예전에 쓰던 한글 character set (깨지는 글자 많음, 샾, 먄, 믜)
         => KO16MSWIN949 : 16bit, 최근에 주로 씀. 
      - AL32UTF8 : 가변길이, 한글을 2byte로 인식하기 때문에 export후 import시에 문제 없음.
      - AL16UTF16 : 고정길이
      - UTF-8
        단점 : 한글이 3byte로 입력됨. 데이터 export할 경우 3byte이므로 import시에 KO16MSWIN949일 경우 import않됨.

        character set에는 single byte, 가변길이 character set 만 허락됨.
        national charater set에는 고정길이 character set만 써야함.
 
   ◎ 클라이언트
      - profile 또는 레지스트리의 환경변수
         NLS_LANG = □□□□□_◇◇◇◇◇.__________ => 반드시 서버 쪽과 같은 character set으로 설정할 것

      - 서버 쪽의 character set 확인 쿼리

SQL> select * from database_properties;         
또는
SQL> select * from nls_database_parameters;


● NLS (National Language Support)
   ◎ NLS를 설정할 수 있는 부분
     1. parameter file
        - NLS_LANGUAGE = American
        - NLS_Territory = China   => 다른 것을 써도 됨.

      2. profile or 레지스트리
        - NLS_LANG = spanish_china.O16MSWIN949
        - NLS_LANG와 NLS_LANGUAGE중 NLS_LANG이 우선 순위가 높으므로
           NLS_LANG이 설정되어 있다면 NLS_LANGUAGE는 설정할 필요가 없다. 

      3. alter session set nls_* = ?
        - 해당 세션에서만 적용됨.

      4. 함수 to_char(col1, '...','NLS_L*')

   ◎ Locale Builder
     
: 날짜형식 등을 바꿀 수 있는 utility
       예) 1월 -> 첫달

OS] lbuilder

● Sort
   : 정렬시에 언어에 따른 sort 가 잘못될 경우를 대비해서 nls_sort parameter를 변경하거나 nlssort()함수를 사용할 수 있다.

   ◎ nls_sort parameter
       - 영어를 사용할 경우(default)

SQL> alter session set nls_sort = binary;

       - 프랑스어를 사용할 경우

SQL> alter session set nls_sort = french_m;

   ◎ nlssort() 함수

SQL> select fr_word
         from words
         order by nlssort(fr_word, 'nls_sort=french_m');


기타 참고사항

-  OS에서 nls_lang 환경변수  확인 방법

OS] echo $NLS_LANG
or
OS] env | grep NLS_LANG

- nls_comp의 특성(비교시에 language)
   nls_sort = binary(default)
                  french_m
   nls_comp = binary(default)
                   ANSI(비교 매커니즘을 nls_sort parameter에 정의된 값을 따른다.)

- 대소문자 상관없는 정렬을 가능하게 하려면?
   {예) ABCD....abc  -> AaAaBbBbCCCccC}
    : nls_sort = <nls_sort_name> [Ai | Ci]

참고 : http://www.oracle.com/technology/global/kr/pub/columns/nls_list.html

'Oracle > Admin' 카테고리의 다른 글

alert_SID.log  (0) 2010.03.24
index rebuild 작업  (0) 2010.02.25
Security  (0) 2010.01.08
Resource Manager  (0) 2010.01.07
ASM(Automatic Storage Management)  (0) 2010.01.07
Posted by 자수성가한 부자