使用oracle官方提供的 client时,一般不会出现乱码情况,但是使用简化版oracle client时,往往会出现乱码情况,goole了其他,做个记录。
首先查询数据库中的配置信息
SQL> select * from v$nls_parameters;
PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET UTF8
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET UTF8
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
以 NLS_DATE_FORMAT 为例:
1、修改glogin.sql文件,这个文件的路径:
Windows下,%ORACLE_HOME%\sqlplus\admin
UNIX下,$ORACLE_HOME/sqlplus/admin
在文件中加上:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
2、修改注册表(Windows平台下)
开始 =》运行=》regedit=》HKEY_LOCAL_MACHINE=》SOFTWARE=》ORACLE=》HOME0 =》新建 字符串值NLS_DATE_FORMAT ,并设置其值为:YYYY-MM-DD:HH24:MI:SS
3、修改用户环境变量配置文件(UNIX平台下),加上
export NLS_LANG=AMERICAN
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
有时候只设置了NLS_DATE_FORMAT,而不设置NLS_LANG可能日期格式不会改变(参考RollingPig的文章),这个可能跟平台及Shell类型有关系。
通常 需要设置的 NLS_LANGUAGE 、NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT 分别为:SIMPLIFIED CHINESE、YYYY-MM-DD HH24:MI:SS、YYYY-MM-DD HH24:MI:SS:FF6 即可!