exp报错ora600[6193]

今天接到个case,有个exp的脚本导出报错了:

从这个报错看,exp的时候有ora600,一般是遇到了bug。我们先手工的试试导出那个报错的表:

确实,我们也看到了对于这个表的导出,是有ora600[6193]的报错。

我们到metalink里面去查ora600[6191]和[6193],有这样一篇文档,说明了exp的时候,如果指定direct=y,就会报错的一些bug:

对照上面说的bug,我们一个一个来看是不是吻合我们的系统:
Bug:1477959:应该不是,我们的数据库是9204的版本,不是这个bug的release范围内。
Bug:2308033:应该也不是,我们的表没有含有LONG或者LONG RAW的字段。
Bug:4085785:应该也不是,这个bug是针对9206的,我们是9204版本
Bug:3230116:这个看上去就比较吻合了,我们的数据库也确实是9204版本,那么这个表是不是压缩表呢?我们去查一下dba_tables的compression字段。这时问题发生了。

我们非常奇怪的看到在dba_tables中没有看到compression字段:

而在正常情况下,这个表的最后一个字段应该是compression字段:

这可能是在升级9204的时候,升级数据字典有点问题了。

由于该库是非常重要的生产库,没办法做停机,为了解决该问题,我们可以有2种方法:

在这里,我选择了第二种方法:
我先看看这个表是不是压缩表:
用cats建一个一样的表,看其大小:

我们看到新建的表都比原表大,那原表应该是个压缩表。

而且,我们虽然没有dba_tables.compression可以看,我们还可以通过dbms_metadata.get_ddl来看,也确实是个压缩表。

ok,那我们确认其为压缩表后,尝试修改其属性为非压缩,测试导出:

至此,exp报错的问题解决。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据