公司数据库用的是oracle数据库,昨天在检查oracle备份日志时发现有一个错误。错误信息如下:
“KINGDEE”.”VTZ2MB206Z10EYK82GBHC9G9Y4R9″ 14.46 KB 9 rows
ORA-31693: Table data object “KINGDEE”.”VTZ2MB206Z1L7OS2NKN0EDM89GC” failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-39826: Direct path load of view or synonym (KINGDEE.VTZ2MB206Z1L7OS2NKN0EDM89GC) could not be resolved.
. . exported “KINGDEE”.”VTZ2MB206Z1OAJEE4J0IH9M5SRFX” 13.78 KB 4 rows
. . exported “KINGDEE”.”VTZ2MB206Z1WL5YS9S0SRR96OKIK” 13.92 KB 6 rows
. . exported “KINGDEE”.”VTZ2MB206Z27BJR2IEXAY403W3U5″ 14.07 KB 7 rows
. . exported “KINGDEE”.”VTZ2MB206Z2ED2N6QJRCGD25HUHM” 14.07 KB 7 rows
. . exported “KINGDEE”.”VTZ2MB206ZNUTG1T3URGKL4NLYT” 13.86 KB 4 rows
. . exported “KINGDEE”.”VTZ2MB206ZQY8AFOWIKID58SWLP” 13.75 KB 4 rows
. . exported
后来经过google发现问题所在,
参考www.*.com中网友对于ORA-31693,ORA-02354,ORA-39826的报错解释分析,报错原因是由于该对象在数据导出的过程中被删除导致的一个bug。这是Oracle设计很好的一个行为。对未发布的bug 9847421的修正引入了一套新的对象名称解析检查,其中包括生成bug 14006984>-ora 39826中概述的ora-39826错误消息,该错误消息于11.2.0.3被提高,但ora-942将以“非bug”状态结束。
导出备份已经完成,备份已被验证。下面的错误是由于在expdp导出运行时表被删除,所以在导出该表时找不到该表。触发的报错信息
解决办法:
请检查错误消息中报告的对象是否存在。下面的示例与上述错误消息中提到的对象相关:
vm215:ORCL $> sqlplus / as sysdba
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STAUS, LAST_DDL_TIME
FROM DBA_OBJECTS
WHERE OWNER = ‘HR’ AND OBJECT_NAME IN (‘TEST1’);
no row selected
如果查询返回没有行,则可以触发ora-39826。您应该确保对象在导出时存在,并且在导出运行时不被删除。在数据泵导出的主控制表中创建并填充对象,但在实际导出表内容之前,将导致此类错误。