Oracle環境變數NLS_LANG
轉自:http://blog.csdn.net/pan_tian/article/details/7745717
在64位windows平臺上安裝32位軟體,會使用32位相容性路徑
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_<oracle_home_name>
因為這些環境變數比登錄檔中已經設定的引數級別高,所以除非您有非常好的理由否則不要在這個位置設定Oracle引數。
NLS_LANG是一個環境變數,用於定義語言,地域以及字符集屬性。對於非英語的字符集,NLS_LANG的設定就非常重要。
NLS:‘National Language Support (NLS)’ 當我們設定一種nls的時候實際上我們是為oracle在存放資料時指定了他的語種所特有的一些表達形式,比如我們選擇chinese,那麼它的中文字元 如何存放,按什麼規則排序,貨幣如何表示,日期格式也就被設定了。
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。
NLS_Language 指定:
- Oracle(錯誤)資訊的語言
- 日和月份的名稱
注意:NLS_LANGUAGE與插入和查詢的*資料*的語言無關。
NLS_Territory 指定:
- 貨幣和數字格式
- 計算星期和天數的範圍和慣例
客戶端字符集(CLIENTS CHARACTERSET):
- 定義Oracle客戶端,客戶應用使用的編碼
* 或者它要符合您Microsoft Windows內碼表 (GUI工具的ACP, 命令提示符的CHCP 值)
* 或者為Unicode WIN32應用設定為UTF8/AL32UTF8。
常見的值可以參見
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*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
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
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
版本 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使用。
設定位置: '我的電腦' -> '屬性' > '高階' -> '環境變數'
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儘可能的保持一致。 提供瞭如何保持一致的方法。
那麼為什麼要保持一致呢?那是因為如果字符集不匹配,有可能在DB和Client間相互轉換的過程中,出現字元轉換錯誤的情況。比如中舉的例子。
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儘可能的保持一致。 提供瞭如何保持一致的方法。
那麼為什麼要保持一致呢?那是因為如果字符集不匹配,有可能在DB和Client間相互轉換的過程中,出現字元轉換錯誤的情況。比如中舉的例子。
更詳細的內容可以參考下邊這些材料:
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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2120373/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows 7上修改oracle10g的環境變數nls_langWindowsOracle變數
- ORACLE 環境變數Oracle變數
- [Oracle] -- 配置Oracle環境變數Oracle變數
- oracle 環境變數 redhatOracle變數Redhat
- oracle環境變數設定Oracle變數
- 【NLS_LANG】不同作業系統平臺NLS_LANG環境變數的檢視與設定方法作業系統變數
- 環境變數變數
- CentOS 6.5 Oracle 環境變數設定CentOSOracle變數
- Oracle 環境變數設定標準Oracle變數
- Linux 新增環境變數和刪除環境變數Linux變數
- 簡述SHELL全域性環境變數與局變環境變數變數
- Java 環境變數Java變數
- jdk環境變數JDK變數
- DOS環境變數變數
- env 環境變數變數
- 環境變數path變數
- Java環境變數Java變數
- postman環境變數Postman變數
- 配置環境變數變數
- [20201123]NLS_LANG環境變數問題.txt變數
- linux下oracle設定環境變數LinuxOracle變數
- ORACLE TWO_TASK環境變數的使用Oracle變數
- oracle裡面的幾個環境變數表Oracle變數
- oracle中的全域性環境變數配置Oracle變數
- ubuntu JDK 環境變數UbuntuJDK變數
- 配置JDK環境變數JDK變數
- 環境變數詳解變數
- Flume 配置環境變數變數
- Shell配置環境變數變數
- Java環境變數新增Java變數
- 【Linux】環境變數!!!Linux變數
- Kaldi配置環境變數變數
- MySQL 環境變數配置MySql變數
- unix下環境變數 .變數
- Linux 環境變數Linux變數
- 設定環境變數變數
- SQL*PLUS 環境變數SQL變數
- jdk環境變數配置JDK變數