当前位置: 移动技术网 > IT编程>数据库>Oracle > Oracle-exp的时候出现的EXP-00091错误如何理解?

Oracle-exp的时候出现的EXP-00091错误如何理解?

2020年07月14日  | 移动技术网IT编程  | 我要评论

利用Oracle数据库嘛,难免都会导入导出,笔者就碰到一个问题,使用exp的时候,出了如下错误:

EXP-00091 Exporting questionable statistics.

EXP-00091: 不審な統計をエクスポートしています。

 

使用的exp/imp语句如下:

exp S001/Password@TestDB_01 tables=T_S001_ATTACH query=\" WHERE substr ( upd_ymd,0,8 )  ='20200713' \" file=/home/s001/data/T_S001_ATTACH_test_20200713_1 ;

imp S001/Password@TestDB_02 tables=T_S001_ATTACH file=/home/s001/data/T_S001_ATTACH_test_20200713_1.dmp fromuser=S001 touser=S001 ignore=Y;

 

然后解决这个错误的时候,大家的做法大概有两种,一种比较简单粗暴,你不是统计出错了嘛,那就别导出啦,

在exp中添加一个STATISTICS=NONE语句。

exp S001/Password@TestDB_01 tables=T_S001_ATTACH query=\" WHERE substr ( upd_ymd,0,8 )  ='20200713' \" file=/home/s001/data/T_S001_ATTACH_test_20200713_1 STATISTICS=NONE;

这样导出的时候,就不会报错啦。

 

毕竟这样怪怪的嘛,出错了你就不要了,紧急的时候也就罢了,那到底要不要紧呢?

首要要从这到底是个什么东西说起。

<统计信息是什么>

统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息。比如,表的行数,块数,平均每行的大小,索引的leaf blocks,索引字段的行数,不同值的大小等,都属于统计信息。

<统计信息用来干什么>

用途我觉得可能比较广吧。比如用于CBO(基于代价的优化器模式)评估COST生成执行计划。所以统计信息不准确,可能会影响业务的执行效率。

<导出的时候不导出也没关系吗?>

这个大概是我们最关系的问题了。

其实统计数据是Oracle自己内部可以再生成的,所以原则上不导入也没关系,导入之后别忘了再生成一下。

统计信息生成语句:※表单位或schema单位

   execute dbms_stats.gather_table_stats(ownname=>'USERNAME',tabname=>'TABLE_NAME',cascade=>TRUE) 

  dbms_stats.gather_schema_stats(ownname => 'TEST',cascade => true)

并且,ORACLE会自动收集统计信息,当向表中插入/删除大量数据,数量量变化超过10%的时候系统会自动收集统计信息的。

我没有验证,imp的时候,岂止是10%,如果你是全表imp的话,那不就是100%?系统就自动帮你生成了吧?这个地方期待高手指摘啊。

 

还有一种做法,就是看这个错误的原因是什么,然后把修正一个,再导出,详细请参照下面的参考2.

大概就是说,错误的原因是数据库NLS_LANG(字符集)和系统环境变量NLS_LANG不一致,所以修改一个系统的NLS_LANG变量即可。

 

参考:

1,深入理解Oracle Statistic统计信息

https://www.cnblogs.com/princessd8251/articles/3568119.html

 

2,EXP-00091错误的说明和解决方法

https://blog.csdn.net/zyfromcq/article/details/84794740

 

3,TABLE_STATISTICS有什么用,impdp跳过以后有影响吗? 

 

4,EXP-00091

https://www.shift-the-oracle.com/oerrs/exp-00091.html

本文地址:https://blog.csdn.net/shi_ly/article/details/107317279

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网