今天在一台磁盘空间非常拮据的环境下遭遇了expdp工具引发的ORA-00600错误,记录在此。
1.问题现象
1)alert日志中记录的报错信息
Mon Mar 28 20:00:02 2011
The value (30) of MAXTRANS parameter ignored.
kupprdp: master process DM00 started with pid=170, OS id=27241
to execute - SYS.KUPM$MCP.MAIN('SYS_EXPORT_FULL_05', 'SYSTEM', 'KUPC$C_1_20110302130002', 'KUPC$S_1_20110302130002', 0);
kupprdp: worker process DW01 started with worker id=1, pid=171, OS id=27249
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_FULL_05', 'SYSTEM');
Mon Mar 28 20:01:21 2011
Errors in file /oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc:
ORA-00600: internal error code, arguments: [kghstack_underflow_internal_3], [0x2AAAACD7B000], [rpi role space], [], [], [], [], []
ORA-19502: write error on file "/db_backup/dpump_dir/full_db_secooler_20110302.dmp", blockno 397702 (blocksize=4096)
ORA-27072: File I/O error
Linux-x86_64 Error: 28: No space left on device
Additional information: 4
Additional information: 397702
Additional information: -1
……省略类似报错信息……
这里虽然expdp工具在备份数据库的时候触发了ORA-00600错误,但是问题原因还是很容易定位的,因为紧随其后给出了报错的真实原因:“Linux-x86_64 Error: 28: No space left on device”。
2)trace文件中摘录的报错信息
在上述alert文件中给出了供参考的trace文件信息。
从trace文件中同样可以看到类似的报错指导信息:“ORA-27072: File I/O error”。
secooler@secdb /home/oracle$ vi /oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc
/oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: secdb
Release: 2.6.18-53.el5
Version: #1 SMP Wed Oct 10 16:34:19 EDT 2007
Machine: x86_64
Instance name: secooler
Redo thread mounted by this instance: 1
Oracle process number: 171
Unix process pid: 27249, image: oracle@secdb (DW01)
*** 2011-03-28 20:01:00.020
*** ACTION NAME:(SYS_EXPORT_FULL_05) 2011-03-28 20:01:00.020
*** MODULE NAME:(Data Pump Worker) 2011-03-28 20:01:00.020
*** SERVICE NAME:(SYS$USERS) 2011-03-28 20:01:00.020
*** SESSION ID:(2085.53933) 2011-03-28 20:01:00.020
ORA-31693: Table data object "SEC_SYS_MD"."T_LOG" failed to load/unload and is being skipped due to error:
ORA-19502: write error on file "/db_backup/dpump_dir/full_db_secooler_20110302.dmp", blockno 381141 (blocksize=4096)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor
Additional information: 4
Additional information: 381141
Additional information: 20480
……此处省略其他信息……
2.问题分析
从以上种种明显迹象来分析,可以非常快速的定位导致问题发生的原因。
这里是由于磁盘空间不足导致使用expdp工具生成的转储文件无法写入,进而触发了ORA-00600错误。
3.问题处理
处理方法简单明了:确保expdp工具的转储目标磁盘剩余空间充足。可通过清理文件或调整转储位置的方法进行处理。
4.小结
本文通过一个简单的实例对ORA-00600错误进行了分析和处理。注意,本文描述的600错误可谓是600错误家族中最为“温柔”和“直接”的。
这里提醒各位DBA朋友:在制定数据库备份恢复策略的时候一定要对所需空间做好规划和监控,防止不必要的故障出现。
Good luck.
secooler
11.03.28
-- The End --
1.问题现象
1)alert日志中记录的报错信息
Mon Mar 28 20:00:02 2011
The value (30) of MAXTRANS parameter ignored.
kupprdp: master process DM00 started with pid=170, OS id=27241
to execute - SYS.KUPM$MCP.MAIN('SYS_EXPORT_FULL_05', 'SYSTEM', 'KUPC$C_1_20110302130002', 'KUPC$S_1_20110302130002', 0);
kupprdp: worker process DW01 started with worker id=1, pid=171, OS id=27249
to execute - SYS.KUPW$WORKER.MAIN('SYS_EXPORT_FULL_05', 'SYSTEM');
Mon Mar 28 20:01:21 2011
Errors in file /oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc:
ORA-00600: internal error code, arguments: [kghstack_underflow_internal_3], [0x2AAAACD7B000], [rpi role space], [], [], [], [], []
ORA-19502: write error on file "/db_backup/dpump_dir/full_db_secooler_20110302.dmp", blockno 397702 (blocksize=4096)
ORA-27072: File I/O error
Linux-x86_64 Error: 28: No space left on device
Additional information: 4
Additional information: 397702
Additional information: -1
……省略类似报错信息……
这里虽然expdp工具在备份数据库的时候触发了ORA-00600错误,但是问题原因还是很容易定位的,因为紧随其后给出了报错的真实原因:“Linux-x86_64 Error: 28: No space left on device”。
2)trace文件中摘录的报错信息
在上述alert文件中给出了供参考的trace文件信息。
从trace文件中同样可以看到类似的报错指导信息:“ORA-27072: File I/O error”。
secooler@secdb /home/oracle$ vi /oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc
/oracle/app/oracle/admin/secooler/bdump/secooler_dw01_27249.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: secdb
Release: 2.6.18-53.el5
Version: #1 SMP Wed Oct 10 16:34:19 EDT 2007
Machine: x86_64
Instance name: secooler
Redo thread mounted by this instance: 1
Oracle process number: 171
Unix process pid: 27249, image: oracle@secdb (DW01)
*** 2011-03-28 20:01:00.020
*** ACTION NAME:(SYS_EXPORT_FULL_05) 2011-03-28 20:01:00.020
*** MODULE NAME:(Data Pump Worker) 2011-03-28 20:01:00.020
*** SERVICE NAME:(SYS$USERS) 2011-03-28 20:01:00.020
*** SESSION ID:(2085.53933) 2011-03-28 20:01:00.020
ORA-31693: Table data object "SEC_SYS_MD"."T_LOG" failed to load/unload and is being skipped due to error:
ORA-19502: write error on file "/db_backup/dpump_dir/full_db_secooler_20110302.dmp", blockno 381141 (blocksize=4096)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor
Additional information: 4
Additional information: 381141
Additional information: 20480
……此处省略其他信息……
2.问题分析
从以上种种明显迹象来分析,可以非常快速的定位导致问题发生的原因。
这里是由于磁盘空间不足导致使用expdp工具生成的转储文件无法写入,进而触发了ORA-00600错误。
3.问题处理
处理方法简单明了:确保expdp工具的转储目标磁盘剩余空间充足。可通过清理文件或调整转储位置的方法进行处理。
4.小结
本文通过一个简单的实例对ORA-00600错误进行了分析和处理。注意,本文描述的600错误可谓是600错误家族中最为“温柔”和“直接”的。
这里提醒各位DBA朋友:在制定数据库备份恢复策略的时候一定要对所需空间做好规划和监控,防止不必要的故障出现。
Good luck.
secooler
11.03.28
-- The End --
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-691166/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/519536/viewspace-691166/