Windows环境下EXP-00091错误的解决办法

    最新项目上的同事反映在使用exp导出数据时有报错( windows Server 2008+Oracle 10.2.0.5   64bit),提示“EXP-00091: 正在导出有问题的统计信息。”从字面意思来看,是统计信息出了问题。通过查阅官方文档,其中 对EXP-00091错误的描述及解决方案如下:

EXP-00091: Exporting questionable statistics.

Cause: Export was able export statistics, but the statistics may not be usuable. The statistics are questionable because one or more of the following happened during export: a row error occurred, client character set or NCHARSET does not match with the server, a query clause was specified on export, only certain partitions or subpartitions were exported, or a fatal error occurred while processing a table.

Action: To export non-questionable statistics, change the client character set or NCHARSET to match the server, export with no query clause, export complete tables. If desired, import parameters can be supplied so that only non-questionable statistics will be imported, and all questionable statistics will be recalculated.
   从官方文档我们了解到,造成EXP-00091的原因可能有多种:

  •    数据行记录有错误
  •    字符集不匹配
  •    导出时指定了查询语句
  •    针对分区表只导出指定分区或子分区
  •    处理表过程中发生严重错误 
     按照排除法,初步定位和字符集有关。通过在测试环境重现报错,最终顺利解决了该问题,这个问题确实是由于字符集不匹配造成的。下面重现一下该问题的解决过程。

1.使用exp导出数据时报EXP-00091错误

点击(此处)折叠或打开

  1. C:\HOEGH\hoegh>exp hoegh/hoegh file=d:\0717.dmp tables=(test1,test2)

  2. Export: Release 10.2.0.5.0 - Production on 星期日 7月 17 14:41:27 2016

  3. Copyright (c) 1982, 2007, Oracle. All rights reserved.


  4. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Produc
  5. tion
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. 已导出 ZHS16CGB231280 字符集和 AL16UTF16 NCHAR 字符集
  8. 服务器使用 ZHS16GBK 字符集 (可能的字符集转换)

  9. 即将导出指定的表通过常规路径...
  10. . . 正在导出表 test1导出了 78 行
  11. EXP-00091: 正在导出有问题的统计信息。
  12. EXP-00091: 正在导出有问题的统计信息。
  13. . . 正在导出表 test2导出了 9 行
  14. EXP-00091: 正在导出有问题的统计信息。
  15. EXP-00091: 正在导出有问题的统计信息。
  16. 导出成功终止, 但出现警告。

  17. C:\HOEGH\hoegh>


2.查询数据库和服务器的字符集

i.查询数据库的字符集

    通过查询v$nls_parameters视图下的NLS_CHARACTERSET参数,我们可以查到数据库使用的字符集。从查询结果我们看到,数据库使用的字符集是“ ZHS16GBK”。

点击(此处)折叠或打开

  1. SQL> select * from v$version;

  2. BANNER
  3. ----------------------------------------------------------------
  4. Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
  5. PL/SQL Release 10.2.0.5.0 - Production
  6. CORE 10.2.0.5.0 Production
  7. TNS for 64-bit Windows: Version 10.2.0.5.0 - Production
  8. NLSRTL Version 10.2.0.5.0 - Production

  9. SQL>

  10. SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';

  11. PARAMETER
  12. ----------------------------------------------------------------
  13. VALUE
  14. ----------------------------------------------------------------
  15. NLS_CHARACTERSET
  16. ZHS16GBK


  17. SQL>

ii.查询服务器字符集

   在操作系统的注册表中查看名为“NLS_LANG”的注册信息,具体值为“SIMPLIFIED CHINESE”。我们看到,查询结果和数据库的字符集不一致。


3.两种解决方法

i.修改环境变量

   我们可以通过set来设置环境变量,将 NLS_LANG参数的值和数据库保持一致。

点击(此处)折叠或打开

  1. C:\HOEGH\hoegh>
  2. C:\HOEGH\hoegh>set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  3. C:\HOEGH\hoegh>exp hoegh/hoegh file=d:\0717.dmp tables=(test1,test2)

  4. Export: Release 10.2.0.5.0 - Production on 星期日 7月 17 14:42:39 2016

  5. Copyright (c) 1982, 2007, Oracle. All rights reserved.


  6. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Produc
  7. tion
  8. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  9. 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

  10. 即将导出指定的表通过常规路径...
  11. . . 正在导出表 test1导出了 78 行
  12. . . 正在导出表 test2导出了 9 行
  13. 成功终止导出, 没有出现警告。

  14. C:\HOEGH\hoegh>
    我们看到,设置 NLS_LANG参数后使用exp导出数据没有报错。
ii.修改注册表信息,一劳永逸
   设置环境变量简单易行,但是修改注册表信息却是一劳永逸的,推荐第二种方法。在注册表中将 “NLS_LANG ”的值修改为为“ SIMPLIFIED CHINESE_CHINA.ZHS16GBK ,问题顺利解决。


~~~~~~~ the end~~~~~~~~~
hoegh
2016.07.17


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30162081/viewspace-2122113/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30162081/viewspace-2122113/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值