使用exp导出报错EXP-00091


使用如下命令执行导出操作:

exp user/pwd@db file=/home/a.dmp log=/home/a.log

输出如下信息,其中包含一些EXP-00091的错误提示:

. . exporting table T 0 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.

但导出来的dump文件可用于导入。

看下官方对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.

大致意思是导出过程中,由于客户端字符集或NCHARSET参数和服务器端不一致,导致一些统计信息不可用。解决方案是可以导出不存在问题的统计信息,或者改变客户端字符集或NCHARSET参数。

实验:
方案1:
查询服务器端字符集:

SQL> select userenv('language') from dual; USERENV('LANGUAGE')

-------------------------------------------------------

AMERICAN_AMERICA.AL32UTF8

设置客户端字符集:

[Oracle@Node]~>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

执行导出命令:

[oracle@Node]~>exp user/pwd@db file=/home/a.dmp log=/home/a.log

. . exporting table T 0 rows exported

不再报错。

方案2:

exp user/pwd@db file=/home/a.dmp log=/home/a.log statistics=none

统计信息字段statistics设置为none。
执行导出命令:

[oracle@Node]~>exp user/pwd@db file=/home/a.dmp log=/home/a.log

. . exporting table T 0 rows exported

不再报错。但这种方式相当于未导出那些因字符集不一致错误的统计信息,导入自然也不会有这部分统计信息,如果需要,那么只能再重新收集统计信息。

因此针对这种exp报EXP-00091的错误,可以有上述两种方式workaround,但推荐的肯定还是方案1,导出的信息最全面。

相关内容