随笔 - 0, 文章 - 3, 评论 - 0, 引用 - 0
数据加载中……

Oracle: EXP-00091 的三种解决方法

   
EXP-00091”问题是exp工具所在的环境变量(系统属性->高级->环境变量)
中的NLS_LANG与DB中的NLS_CHARACTERSET不一致导致的。

解决方法一:
Windows:
⑴ 我们来查看DB中的NLS_CHARACTERSET的值(数据库中的NLS_LANG):
[sql] 
select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';  
 or:
[sql] 
select * from v$nls_parameters  where parameter='NLS_CHARACTERSET';  
⑵ 查看环境变量中的NLS_LANG:
运行命令行中输入:
regedit -> HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMExx/,
xx指存在多个ORACLE_HOME时系统编号。


3)如果DB中NLS_LANG 和exp中环境变量确实不一样,那么就会导致刚刚的问题。
Windows 中直接修改注册表中的NLS_LANG值,就可以了,请以DB中查询出来的NLS_LANG为准。
补充
1)查看环境变量中的NLS_LANG:
[oracle@MWSG1: ~]$echo $NLS_LANG
 
2) 根据⑴查出的NLS_CHARACTERSET 来设定exp的环境变量:
WINNT> set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@MWSG1: ~]$export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@MWSG1: ~]$echo $NLS_LANG
AMERICAN_AMERICA.AL32UTF8

解决方法二:

第一步: 查看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    ZHT16BIG5

第二步: 根据第一步查出的NLS_CHARACTERSET(ZHT16BIG5)來設定exp的環境變量:
WINNT> set NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5

进行设定后,在环境变量中查看NLS_LANG的值是否一致,如果不一致可在环境变量中手中修改。
LINUX> export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5


解决方法三:
(1).我按照第一种方法查到结果:
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER          VALUE
-----------------------  -------------------------------------------
NLS_CHARACTERSET    AL32UTF8
但是在进行第二步时在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/下没有发现ORACLE目录,第一种方法解决不了我的问题。
(2).按照第二种方法时在cmd中输入 set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 时报错。
(3).于是我在系统属性->高级->环境变量中发现变量 NLS_LANG = ZHS16GBK,直接把值改成AL32UTF8后,
从数据库中导出.dmp文件还是会报错。后来我没有改动以前那个
NLS_LANG = ZHS16GBK,只是又增加了一个
NLS_LANG = AL32UTF8,结果证明我可以从数据库正常导出(exp).dmp文件了。后来发现,原本变量中有两个NLS_LANG的,
但结果变成了一个:
NLS_LANG = AL32UTF8,说明已经把系统中的NLS_LANG改成与数据库中的NLS_LANG相同了。

posted on 2013-05-17 21:58 MingLiang 阅读(328) 评论(0)  编辑  收藏 所属分类: Oracle技术


只有注册用户登录后才能发表评论。


网站导航: