客戶端字符集

Diy_os發表於2015-05-07
這部分是屬於oracle全球化支援的內容,詳細瞭解可以參考文件
首先談一下資料庫字符集,我們用dbca建庫的時,會讓你選擇資料庫字符集,預設的就是基於作業系統的語言設定:
[oracle@localhost ~]$ echo $LANG;
zh_CN.UTF-8

SQL> select userenv('language') from dual
  2  ;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
從oracle啟動的alert日誌裡也可以看出資料庫字符集:
Database Characterset is AL32UTF8
從檢視 nls_database_parameters也可以看出
當然我們可以修改資料庫字符集(但有限制。不建議修改):
只有新的字符集是當前字符集的超集時才能修改資料庫字符集,例如UTF8US7ASCII的超集,修改資料庫字符集可使用ALTER DATABASE CHARACTER SET UTF8

客戶端字符集環境
select * from nls_instance_parameters
其來源於v$parameter,表示客戶端的字符集的設定,可能是引數檔案,環境變數或者是登錄檔
 
會話字符集環境
select * from nls_session_parameters
來源於v$nls_parameters,表示會話自己的設定,可能是會話的環境變數或者是alter session完成,session會話裡設定的字符集只是在此session裡有效,session結束後,就失效了。如果會話沒有特殊的設定,將與nls_instance_parameters一致。
 
客戶端的字符集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。如果多個設定存在的時候,NLS作用優先順序別:字元設定函式 > alter session > 環境變數或登錄檔 > 引數檔案 > 資料庫預設引數 
字符集要求一致,但是語言設定卻可以不同,語言設定建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。

下面著重講解客戶端字符集設定:
linux下:
 [oracle@localhost ~]$ export LANG=zh_CN.UTF-8
 
Windows環境:
 登錄檔:
       regedit =>HKEY_LOCAL_MACHINE  =>SOFTWARE  =>ORACLE-HOME
       NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_LANG可以分為三部分:
language:語言                   SIMPLIFIED CHINESE
territory:地區                     CHINA
character set :字符集        ZHS16GBK

NLS_LANG=_. 
各個引數所帶來的影響:
    Language: 顯示oracle訊息,校驗,日期命名
    Territory:指定預設日期、數字、貨幣等格式
    Client character set:指定客戶端將使用的字符集
    select * from v$nls_valid_values  這個檢視很有用,你可以查到oracle支援所有的上面的三個引數


                 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1627370/,如需轉載,請註明出處,否則將追究法律責任。

相關文章