Oracle导出失败:EXP-00006:内部不一致错误

我打电话给甲骨文的exp是失败的:

EXP-00006: internal inconsistency error EXP-00000: Export terminated unsuccessfully 

我执行的命令是

 C:\oracle\product\11.1.0\db_1\BIN\exp user/pass@instance file=dump.dmp log=log.log compress=y owner=user 

包含失败的表

  • 1不是空号(38)列(主键)
  • 18个varchar2(100)列

主键也是另一个表的外键。

所有的search结果都说我应该联系Oracle,但是不是有这个问题的解决办法吗? 也许重build一张桌子?

如果您有Oracle支持,请告诉他们。 这可能是导出本身的一个内部问题,他们会要求提供更多信息,告诉您如何尝试等等,直到您解决问题。 如果有的话,你也可能会得到补丁/修复。

我build议使用datapump来进行导出,而导出很长时间不推荐使用。 您需要定义一个目录,在该目录中,oracle应该将导出的数据放入,然后启动datapump。 它比导入/导出更容易,更快,更可靠和灵活。

例:

 SQL> CREATE OR REPLACE DIRECTORY expdump AS '/export/home/oracle/expdump'; SQL> GRANT READ, WRITE ON DIRECTORY expdump TO user_who_will_export; 

然后运行:

 $ expdp user/pass schemas=schema1,schema2 directory=expdump dumpfile=myexport.dmp logfile=myexport.log 

增加:看起来你的数据库一致性有问题。 使用RMAN运行逻辑和物理validation来捕获任何其他问题:

 RMAN> connect target / RMAN> run { # set disk to be default device type CONFIGURE DEFAULT DEVICE TYPE TO DISK; # number of concurrent sessions to spawn (if you can affor parallelism) CONFIGURE DEVICE TYPE DISK PARALLELISM 10 BACKUP TYPE TO BACKUPSET; # check datafiles for corruption 10 datafiles in each session (if you can afford paralellism) BACKUP VALIDATE CHECK LOGICAL DATABASE FILESPERSET=10; } 

代码是通用的,这个片段是从http://oraclespin.wordpress.com/2008/06/11/how-to-check-physical-and-logical-data-corruption-using-rman/

运行:分析表validation结构级联;

看看它是否返回一个错误的东西是不好的。 如果它的索引是腐败的,则删除并重新创build,如果其他东西试图修复表格,如果你可以/知道如何。 得到oracle支持,如果你需要帮助。

我通过确定哪个表是问题的原因来解决这个问题。 然后,我把这张表复制到一个新的表中:

 create table X as Select * from Y 

之后,我放弃了旧桌子,并重新命名了新桌子。 我创造了约束,一切都很好。