=Native Language Support本地語言支持 NLS
ORACLE11g-ORA-12705: Cannot access NLS data files or invalid environment specified
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORA_NLS10=/u01/app/Oracle/product/11.2.0/dbhome_1/nls/data
作系統環境變量針對語言項設置有幾個,我經常設置的是這兩個LANG和NLS_LANG。
LANG是針對Linux系統的語言、地區、字符集的設置,對linux下的應用程序有效,如date;
NLS_LANG是針對Oracle語言、地區、字符集的設置,對oracle中的工具有效。
例如
- export LANG=zh_CN.GB2312
- export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
- $export LANG=zh_CN.GB2312
- $date
- 2012年 11月 27日 星期二 16:20:35 CST
顯示是中文界面。
- $export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
- $sqlplus / as sysdba
- SQL*Plus: Release 10.2.0.4.0 - Production on Tue Nov 27 16:19:03 2012
- Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
- Connected to:
- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
- With the Partitioning, Real Application Clusters, OLAP, Data Mining
- and Real Application Testing options
- SQL> select sysdate from dual;
- SYSDATE
- ------------
- 27-NOV-12
顯示的是英文環境,但只對ORACLE程序生效。
Linux系統中關於環境變量的LANG設置主要有下列項目:
- [root@blliu tmp]# locale
- LANG=zh_CN.gb2312
- LC_CTYPE="zh_CN.gb2312"
- LC_NUMERIC="zh_CN.gb2312"
- LC_TIME="zh_CN.gb2312"
- LC_COLLATE="zh_CN.gb2312"
- LC_MONETARY="zh_CN.gb2312"
- LC_MESSAGES="zh_CN.gb2312"
- LC_PAPER="zh_CN.gb2312"
- LC_NAME="zh_CN.gb2312"
- LC_ADDRESS="zh_CN.gb2312"
- LC_TELEPHONE="zh_CN.gb2312"
- LC_MEASUREMENT="zh_CN.gb2312"
- LC_IDENTIFICATION="zh_CN.gb2312"
- LC_ALL=
這里LC_ALL沒有設置,如果它設置了,上面所有的設置都無效的,系統會讀取LC_ALL。
locale -a 查看本地字符集
locale -m 查看所有支持的字符集
在Oracle數據庫中查NLS_LANG設置:
- SQL> SELECT *
- 2 FROM DATABASE_PROPERTIES
- 3 WHERE PROPERTY_NAME IN
- 4 ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET');
- PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
- ------------------------------ ------------------------------ --------------------
- NLS_LANGUAGE AMERICAN Language
- NLS_TERRITORY AMERICA Territory