用戶端字元集,oracle用戶端字元集

來源:互聯網
上載者:User

用戶端字元集,oracle用戶端字元集
這部分是屬於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也可以看出
當然我們可以修改資料庫字元集(但有限制。不建議修改):
只有新的字元集是當前字元集的超集時才能修改資料庫字元集,例如UTF8是US7ASCII的超集,修改資料庫字元集可使用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>_<territory>.<client character set> 
各個參數所帶來的影響:
    Language: 顯示oracle訊息,校正,日期命名
    Territory:指定預設日期、數字、貨幣等格式
    Client character set:指定用戶端將使用的字元集
    select * from v$nls_valid_values  這個視圖很有用,你可以查到oracle支援所有的上面的三個參數


                 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.