Oracle 문자 집합 보기 및 수정

Oracle 문자 집합 보기 및 수정
다음으로 전송: Oracle 인 코딩
1. Oracle 문자 집합 이 무엇 입 니까?
   Oracle                  ,     ,        。ORACLE                         ,  ,    。       ,    ,    ,  ,  ,  ,  ,               。

  Oracle             NLS_LANG  。
      : NLS_LANG = language_territory.charset
        (  、      ),       NLS     。
  :
Language:           ,              
Territory:              ,
Charset:       。
 :AMERICAN _ AMERICA. ZHS16GBK
 NLS_LANG         ,                  。
                                ,                  。

2. 문자 집합 에 관 한 지식:
2.1 문자 집합
               ,        ,             。Oracle             US7ASCII。
Oracle              :
<Language><bit size><encoding>
 : <  ><    ><  >
  : ZHS16GBK    GBK    、16 (    )        

2.2 문자 인 코딩 방안
2.2.1 단일 바이트 인 코딩
(1)   7    ,    128   ,        US7ASCII
(2)   8    ,    256   ,          
           :WE8ISO8859P1(  、8 、ISO  8859P1  )

2.2.2 다 중 바이트 인 코딩
(1)       
           ,              ,                  ,       、  、    
  :AL32UTF8(  AL  ALL,        )、zhs16cgb231280
(2)       
                   ,  oracle             AF16UTF16,          

2.2.3 유 니 코드 인 코딩
Unicode                           ,    Unicode             。UTF-16 unicode 16     ,          , 2       unicode  ,AF16UTF16 UTF-16     。
UTF-8 unicode 8     ,          ,       1、2、3       unicode  ,AL32UTF8,UTF8、UTFE UTF-8      

2.3 문자 집합 슈퍼
      (   A)               (   B)     ,                     ,    A    B   ,     B    A   。
Oracle8i oracle9i           -     (subset-superset pairs),  :WE8ISO8859P1 WE8MSWIN1252   。  US7ASCII    Oracle       ,         US7ASCII   ,  WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK  US7ASCII   。 

2.4 데이터베이스 문자 집합 (oracle 서버 단자 문자 집합)
               ,          。       ,       (CHARACTER SET)      (NATIONAL CHARACTER SET)。

2.4.1 문자 집합
(1)    CHAR, VARCHAR2, CLOB, LONG     
(2)        、    PL/SQL   
(3)    SQL PL/SQL     

2.4.2 국가 문자 집합:
(1)    NCHAR, NVARCHAR2, NCLOB     
(2)          oracle        ,         oracle       ,  NCHAR                       ,          。      oracle9i        ,   unicode    AF16UTF16 UTF8   ,    AF16UTF16

2.4.3 문자 집합 파라미터 조회
                      
nls_database_parameters、props$、v$nls_parameters
     NLS_CHARACTERSET     ,NLS_NCHAR_CHARACTERSET       

2.4.4 데이터베이스 문자 집합 수정
      ,                 。   2     。

1.          ,           ,     ,              。
2.   ALTER DATABASE CHARACTER SET       ,                 ,                           ,  UTF8 US7ASCII   ,           ALTER DATABASE CHARACTER SET UTF8。 

2.5 클 라 이언 트 문자 집합 (NLS LANG 매개 변수)
2.5.1 클 라 이언 트 문자 집합 의미
                     ,                             ,                      ,  sqlplus,exp/imp 。           NLS_LANG      。

2.5.2 NLS_LANG 매개 변수 형식
NLS_LANG=<language>_<territory>.<client character set> 
Language:   oracle  ,  ,    
Territory:      、  、     
Client character set:            
  :NLS_LANG=AMERICAN_AMERICA.US7ASCII 
AMERICAN   ,AMERICA   ,US7ASCII       

2.5.3 클 라 이언 트 문자 집합 설정 방법
 1)UNIX  
     $NLS_LANG=“simplified chinese”_china.zhs16gbk
     $export NLS_LANG
       oracle   profile  
2)Windows  
          
     Regedit.exe ---》 HKEY_LOCAL_MACHINE ---》SOFTWARE ---》 ORACLE-HOME

2.5.4 NLS 파라미터 조회
Oracle    NLS                  ,   NLS_LANGUAGE,NLS_DATE_FORMAT,NLS_CALENDER ,             v$    。

NLS_DATABASE_PARAMETERS: 데이터베이스 의 현재 NLS 매개 변수 값 을 표시 합 니 다. 데이터베이스 문자 집합 값 을 포함 하여 NLSSESSION_PARAMETERS: NLS 표시LANG 가 설정 한 매개 변수 나 alter session 을 통 해 변 경 된 매개 변수 값 (NLS LANG 가 설정 한 클 라 이언 트 문자 집합 은 포함 되 지 않 음) NLSINSTANCE_PARAMETE: 인자 파일 init. ora 가 정의 하 는 인자 V $NLS 표시PARAMETERS: 데이터베이스 현재 NLS 매개 변수 값 표시
2.5.5 NLS 파라미터 수정
          NLS  
(1)                 
(2)      NLS_LANG
(3)  ALTER SESSION  , oracle     
(4)    SQL  
NLS      :Sql function > alter session >          >      >        

3. EXP / IMP 와 문자 집합
3.1 EXP/IMP
Export   Import      Oracle     。Export   Oracle                  , Import            Oracle     ,    exp/imp       ,                            ,              ,         。 
EXP
     ____________ _________________ _____________
     |imp    |<-|    NLS_LANG|<-|      |
      ------------   -----------------   -------------
IMP 
     ____________ _________________ _____________
     |imp    |->|    NLS_LANG|->|      |
      ------------   -----------------   -------------


      
   (1)        
   (2)Export          (  NLS_LANG  )
   (3)Import          (  NLS_LANG  )
   (4)         

3.2 내 보 내기 전환 과정
 Export   ,          Export          ,        ,                Export        ID 。                 。

 :        ZHS16GBK, Export         US7ASCII,  ZHS16GBK 16    , US7ASCII 7    ,       ,     US7ASCII           ,               “?? ”  ,        Dmp           。
               , Export                                 

3.3 가 져 온 전환 과정
(1)            
                  ,              
(2)    session    ,   Session   NLS_LANG    
(3)IMP      
                  ID,      NLS_LANG    
(4)            Session     ,              ,                 ,           Session      。    ,                    

   :          Session           ,              ,Import                 。
   :  Session               。

4. 데이터베이스 문자 집합 보기
세 가지 측면 과 관련 된 문자 집합, 1. Oacle server 엔 드 의 문자 집합;2. Oacle client 엔 드 의 문자 집합;3. dmp 파일 의 문자 집합.
데 이 터 를 가 져 올 때 이 세 문자 집합 이 일치 해 야 정확하게 가 져 올 수 있 습 니 다.
4.1 Oacle server 엔 드 문자 집합 조회
Oacle server 엔 드 의 문자 집합 을 찾 을 수 있 는 여러 가지 방법 이 있 습 니 다. 비교적 직관 적 인 조회 방법 은 다음 과 같 습 니 다.
SQL> select userenv('language') from dual;
USERENV('LANGUAGE') ----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK SQL>select userenv(‘language’) from dual;
AMERICAN _ AMERICA. ZHS16GBK

4.2 dmp 파일 의 문자 집합 을 어떻게 조회 합 니까?
 oracle exp     dmp           ,dmp    2  3      dmp      。  dmp    ,     M   M,   UltraEdit  (16    ),  2 3      , 0354,     SQL         :
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
  dmp    ,   2G  (         ),                 ,       ( unix   ):

4. 567914. 그리고 상기 SQL 로 도 해당 하 는 문자 집합 을 얻 을 수 있 습 니 다.
4.3 Oacle client 엔 드 문자 집합 조회
 windows   ,         OracleHome NLS_LANG。    dos        ,
  : set nls_lang=AMERICAN_AMERICA.ZHS16GBK
                 。

 unix   ,      NLS_LANG。
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK

         server  client       ,       server       。

보충:
(1). 데이터베이스 서버 문자 집합
select * from nls_database_parameters
   props$,          。

(2). 클 라 이언 트 문자 집합 환경
select * from nls_instance_parameters
    v$parameter,            ,       ,          

(3). 세 션 문자 집합 환경
select * from nls_session_parameters
   v$nls_parameters,         ,             alter session  ,           ,  nls_instance_parameters  。

(4). 클 라 이언 트 의 문자 집합 은 서버 와 일치 해 야 데이터베이스 의 비 Ascii 문 자 를 정확하게 표시 할 수 있 습 니 다.
여러 설정 이 존재 할 때 NLS 역할 우선 순위: Sql function > alter session > 환경 변수 나 레 지 스 트 > 매개 변수 파일 > 데이터베이스 기본 매개 변수
문자 집합 은 일치 해 야 하지만 언어 설정 은 다 를 수 있 습 니 다. 언어 설정 은 영어 로 하 는 것 을 권장 합 니 다.문자 집합 이 zhs16gbk 이면 nlslang 은 American 일 수 있 습 니 다.America.zhs16gbk。
5. Oacle 문자 집합 수정
      ,                 。  ,                      。    server  ,                    ,               ,                             。    ,      ,       oracle   server     。    ,           ZHS16GBK ZHS16CGB231280            ,                       。

3        2     。
1.            ,     ,              。
2.   ALTER DATABASE CHARACTER SET       ,                 ,                           ,  UTF8 US7ASCII   ,           ALTER DATABASE CHARACTER SET UTF8。 

5.1 서버 엔 드 문자 집합 수정 (사용 권장 하지 않 음)
1.            
SQL>SHUTDOWN IMMEDIATE

2.    Mount
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;

--          
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;
--         ,    INTERNAL_USE   ,       
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL32UTF8;


SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP
  :       ,                  ,(           ORACLE  ,    start)          。

   ‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’        ,
            
1.   INTERNAL_USE          ,
2.   re-create,  re-create    ,    internal_use
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL>SHUTDOWN immediate;
SQL>startup;
         ,National charset          

5.2 dmp 파일 문자 집합 수정
    ,dmp    2 3          ,      dmp    2 3        ‘ ’ oracle   。                   ,                         ,          , US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK      。      dmp  ,      。

          ,         UltraEdit  dmp    2  3   。
        dmp        ZHS16GBK,     SQL          16    : SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;
0354
   dmp   2、3     0354  。
  dmp    , ue    ,          。

5.3 클 라 이언 트 문자 집합 설정 방법
1)UNIX  
         $NLS_LANG=“simplified chinese”_china.zhs16gbk
         $export NLS_LANG
           oracle   profile  
    2)Windows  
              
         Regedit.exe ---》 HKEY_LOCAL_MACHINE ---》SOFTWARE ---》 ORACLE-HOME
        :
        set nls_lang=AMERICAN_AMERICA.ZHS16GBK

좋은 웹페이지 즐겨찾기