Oracle環境變數NLS_LANG

來源:互聯網
上載者:User

標籤:

NLS_LANG是一個環境變數,用於定義語言,地區以及字元集屬性。對於非英語的字元集,NLS_LANG的設定就非常重要。

NLS:‘National Language Support (NLS)’ 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇chinese,那麼它的中文字元如何存放,按什麼規則排序,貨幣如何表示,日期格式也就被設定了。 NLS_LANG參數由以下部分組成: NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_Language 指定:
- Oracle(錯誤)資訊的語言
- 日和月份的名稱
注意:NLS_LANGUAGE與插入和查詢的*資料*的語言無關。

NLS_Territory 指定:
- 貨幣和數字格式
- 計算星期和天數的範圍和慣例

用戶端字元集(CLIENTS CHARACTERSET):
- 定義Oracle用戶端,客戶應用使用的編碼
* 或者它要符合您Microsoft Windows字碼頁 (GUI工具的ACP, 命令提示字元的CHCP 值)
* 或者為Unicode WIN32應用設定為UTF8/AL32UTF8。 常見的值可以參見Oracle Database Client Globalization Support  Windows中設定NLS_LANG 1.命令提示字元中設定為環境變數如果您在命令列中設定NLS_LANG為環境變數,它將覆蓋註冊表和系統屬性中的NLS_LANG的定義。在命令提示字元中,使用“set”命令,例如: LANGUAGE設定為中文時,提示如下:C:\Users\TianPan> set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK C:\Users\TianPan>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 11月 28 10:07:21 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn scott/tiger
已串連。SQL> select sysdate from dual;

SYSDATE
--------------
28-11月-14 當Language設定為American時,提示資訊則變為英文:C:\Users\TianPan> set nls_lang=AMERICAN_AMERICA.ZHS16GBK C:\Users\TianPan>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 28 10:07:51 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn scott/tiger
Connected.
SQL> select sysdate from dual;

SYSDATE
------------
28-NOV-14在Windows下通過set nls_lang來設定,只是Session層級的,關閉cmd視窗後再開啟,就又變為原來的設定了。如需永久生效,可以修改註冊表的參數。  2.註冊表設定(永久生效)預設情況下,windows上的Oracle安裝使用註冊表來定義這個設定。
版本 10g 及以上:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name>
這裡您會看到一個條目名為NLS_LANG
在64位windows平台上安裝32位軟體,會使用32位相容性路徑
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_<oracle_home_name>  3.作業系統環境變數儘管註冊表是Microsoft Windows設定的主要儲存位置,它不是唯一可以設定參數的地方。雖然不推薦,但您可以設定NLS_LANG為系統屬性中的系統或者使用者變數。這個設定會被所有Oracle home使用。設定位置: ‘我的電腦‘ -> ‘屬性‘ > ‘進階‘  -> ‘環境變數‘ 因為這些環境變數比註冊表中已經設定的參數層級高,所以除非您有非常好的理由否則不要在這個位置設定Oracle參數。  Linux/Unix下的設定 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK   DB中的NLS_LANG
DB也有自己的NLS_LANG參數,來標識資料庫的語言,地區,字元集。可以通過以下的SQL來查得,
SELECT * FROM v$nls_parameters; 
OR
SELECT USERENV (‘language‘) FROM DUAL;

用戶端的NLS_LANG和DB的NLS_LANG
DB的NLS_LANG和用戶端環境變數中NLS_LANG儘可能的保持一致。Setting the NLS_LANG Environment Variable for Oracle Databases 提供了如何保持一致的方法。
那麼為什麼要保持一致呢?那是因為如果字元集不匹配,有可能在DB和Client間相互轉換的過程中,出現字元轉換錯誤的情況。比如Oracle nls_lang tips中舉的例子。


更詳細的內容可以參考下邊這些材料:Microsoft Windows 環境中NLS_LANG的正確設定 (Doc ID 1577370.1)在 Unix 環境中正確設定 NLS_LANG (Doc ID 1548858.1)NLS_LANG Explained (How does Client-Server Character Conversion Work?) (Doc ID 158577.1)

NLS_LANG FAQ

Oracle Database Client Globalization Support
Setting the NLS_LANG Environment Variable for Oracle Databases

Oracle nls_lang tips

 

轉載請註明出處:http://blog.csdn.net/pan_tian/article/details/7745717

======EOF======

 

Oracle環境變數NLS_LANG

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.