今天在我们对Oracle做EXP的过程中,出现EXP-00091 Exporting questionable statistics.的信息,但是也提示导出成功。最好查询了下发现其实它就是exp的error message,它产生的原因是因为我们exp工具所在的环境变量是的NLS LANG中的NLS_CHARCATERSET不一致引起的,的确我服务器上oracle11g是utf-8的,本地客户端是gbk,出现这个提示信息就理所当然了。不过EXP-00091这个error对所生成的dump文件没有影响,生成的dump文件还可以正常imp,但是不确定是否导入后出现乱码问题。
第一步:
查看DB中的NLS_CHARACTERSET的值(提供两种方法):
查询NLS_CHARACTERSET的值:
select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'
or
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------------- ----------------------------------------------
NLS_CHARACTERSET AL32UTF8
第二步:
根据第一步查出的NLS_CHARACTERSET(ZHT16BIG5)来设定exp的环境变量:
(直接在命令行里面设置就可以)
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8(如果是改成gbk则如下
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
这样设置之后就保证了数据库服务端和客户端编码一致了。如果还是不行就只能在
环境变量中进行手动修改。
下面我们再来介绍下如何修改服务器的编码
1.用sys登录到oracle中
connect sys/密码 as sysdba;
2.开始修改编码
shutdown immediate;停止oracle服务以及监听。如果服务停止,这部可省略
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;初始化设置job
alter database open; //打开数据库
alter database character set internal_use utf8;设置编码
shutdown immediate;
startup;