操作系统环境变量LANG和NLS_LANG的关系

=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中的工具有效。

例如

  1. export LANG=zh_CN.GB2312
  2. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  1. $export LANG=zh_CN.GB2312
  2. $date
  3. 2012年 11月 27日 星期二 16:20:35 CST

显示是中文界面。

  1. $export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  2. $sqlplus / as sysdba
  3. SQL*Plus: Release 10.2.0.4.0 - Production on Tue Nov 27 16:19:03 2012
  4. Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
  5. Connected to:
  6. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
  7. With the Partitioning, Real Application Clusters, OLAP, Data Mining
  8. and Real Application Testing options
  9. SQL> select sysdate from dual;
  10. SYSDATE
  11. ------------
  12. 27-NOV-12

显示的是英文环境,但只对ORACLE程序生效。

Linux系统中关于环境变量的LANG设置主要有下列项目:

  1. [root@blliu tmp]# locale
  2. LANG=zh_CN.gb2312
  3. LC_CTYPE="zh_CN.gb2312"
  4. LC_NUMERIC="zh_CN.gb2312"
  5. LC_TIME="zh_CN.gb2312"
  6. LC_COLLATE="zh_CN.gb2312"
  7. LC_MONETARY="zh_CN.gb2312"
  8. LC_MESSAGES="zh_CN.gb2312"
  9. LC_PAPER="zh_CN.gb2312"
  10. LC_NAME="zh_CN.gb2312"
  11. LC_ADDRESS="zh_CN.gb2312"
  12. LC_TELEPHONE="zh_CN.gb2312"
  13. LC_MEASUREMENT="zh_CN.gb2312"
  14. LC_IDENTIFICATION="zh_CN.gb2312"
  15. LC_ALL=

这里LC_ALL没有设置,如果它设置了,上面所有的设置都无效的,系统会读取LC_ALL。

locale -a 查看本地字符集

locale -m 查看所有支持的字符集

在Oracle数据库中查NLS_LANG设置:

    1. SQL> SELECT *
    2. 2    FROM DATABASE_PROPERTIES
    3. 3   WHERE PROPERTY_NAME IN
    4. 4         ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET');
    5. PROPERTY_NAME                  PROPERTY_VALUE                 DESCRIPTION
    6. ------------------------------ ------------------------------ --------------------
    7. NLS_LANGUAGE                   AMERICAN                       Language
    8. NLS_TERRITORY                  AMERICA                        Territory
上一篇:C++中extern关键字使用(转)


下一篇:对ubuntu初学感想