NLS_打头的都是ORACLE家的!!!!
操作系统环境变量LANG和NLS_LANG的关系
操作系统环境变量针对语言项设置有几个,我经常设置的是这两个LANG和NLS_LANG。
LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,如date;
NLS_LANG是针对Oracle语言、地区、字符集的设置,对oracle中的工具有效。
LANG与NLS_LANG
例如
- 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
查看会话NLS_LANG
select * from nls_session_parameters;
exp时先确确认 服务器NLS_LANG设置客户端NLS_LANG 一样,再导出表,以免发生字符集转换数据乱码损坏.
例子:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
SQL> !
[oracle@node1 ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[oracle@node1 ~]$ echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
[oracle@node1 ~]$ exp scott/tiger file='/u02/exp_imp/tb_pt_sal_other' log='/u02/exp_imp/tb_pt_sal_other.log' tables=tb_pt:sal_other
Oracle数据库NLS_LANG设置
1. NLS_LANG 参数组成
NLS_LANG参数由以下部分组成:
NLS_LANG=_.
NLS_LANG各部分含义如下:
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控制客户端应用程序使用的字符集
通常设置或者等于客户端(如Windows)代码页
或者对于unicode应用设置为UTF8
查看当前oracle使用的CHARACHERSET:
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
查看instance字符集Language与Territory:
select * from nls_instance_parameters;
NLS_LANGUAGE
NLS_TERRITORY
这两项
2、操作系统查看NLS_LANG设置:
env| grep NLS_LANG