一个数据泵导致的错误。
在告警日志中错误如下:
Sat Oct 08 17:08:28 EAT 2011 The VALUE (30) OF MAXTRANS parameter ignored. Sat Oct 08 17:08:29 EAT 2011 ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20111008170828.CU3GP' SCOPE=MEMORY SID='cu3gp1'; Sat Oct 08 17:08:29 EAT 2011 ALTER SYSTEM SET service_names='SYS$SYS.KUPC$C_1_20111008170828.CU3GP','SYS$SYS.KUPC$S_1_20111008170828.CU3GP' SCOPE=MEMORY SID='cu3gp1'; kupprdp: master process DM00 started WITH pid=42, OS id=10975 TO EXECUTE - SYS.KUPM$MCP.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS', 'KUPC$C_1_20111008170828', 'KUPC$S_1_20111008170828', 0); kupprdp: worker process DW01 started WITH worker id=1, pid=43, OS id=10987 TO EXECUTE - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_SCHEMA_01', 'SYS'); Sat Oct 08 17:09:05 EAT 2011 Errors IN file /oracle/admin/cu3gp/bdump/cu3gp1_ora_10987.trc: ORA-00600: internal error code, arguments: [1883], [0x000000000], [], [], [], [], [], [] ORA-19505: failed TO identify file "/arch/datapump/cu3gp.dmp" ORA-17503: ksfdopn:4 Failed TO OPEN file /arch/datapump/cu3gp.dmp ORA-17500: ODM err:File does NOT exist Sat Oct 08 17:09:08 EAT 2011 Trace dumping IS performing id=[cdmp_20111008170908] |
从错误前面的ALTER SYSTEM语句,以及SYS_EXPORT_SCHEMA_01信息,可以很容易的判断出当前在进行数据泵的导出操作。
而从报错的发生位置上看,应该是找不到导出时指定的DMP文件,从而引发了这个错误。
从MOS查询到的信息也确实证实了这一点,在文档ORA-600 [1883] hit at access of external dmp/sequential file [ID 1263128.1]中描述了这个问题,导致问题的原因可能是数据泵写DMP文件的时候发现DMP文件已经被删除或覆盖,或者通过EXPDP导出一个外部表,而这个外部表参考的外部DMP文件被删除或覆盖。总之导致问题的原因在于数据泵需要读或写的操作系统文件发生异常。
严格意义上说,这并不是一个bug,因为导致问题的原因在于操作系统上删除或修改了对应的文件,而之所以这成为一个bug,是因为Oracle报错信息不明确,引发了ORA-600内部错误。
在11.1中,Oracle解决了这个bug,不在出现ORA-600错误,而是普通的ORA错误信息。