ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库每隔一段时间自动down掉的错误解决

数据库每隔一段时间自动down掉的错误解决

原创 Linux操作系统 作者:lnwxzyp 时间:2011-10-17 15:53:45 0 删除 编辑
    前几天解决了一个市州数据库每隔一段时间就down掉的问题,开始局方的人反映从前一天下午开始就出现这个错误了,手动启动了几次,但是过不了多久就自动down掉,于是赶紧ssh登上去查看日志,在alert log当中发现了大量的ORA-00600错误

Thu Oct 13 11:16:21 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:19:16 CST 2011

SMON: Restarting fast_start parallel rollback

Thu Oct 13 11:19:16 CST 2011

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc

Thu Oct 13 11:19:17 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:19:18 CST 2011

SMON: Parallel transaction recovery slave got internal error

SMON: Downgrading transaction recovery to serial

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc

Thu Oct 13 11:19:18 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

ORACLE Instance bzdtbb (pid = 8) - Error 600 encountered while recovering transaction (25, 15) on object 605964.

Thu Oct 13 11:19:19 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:52 CST 2011

SMON: Restarting fast_start parallel rollback

Thu Oct 13 11:21:52 CST 2011

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc

Thu Oct 13 11:21:53 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:54 CST 2011

SMON: Parallel transaction recovery slave got internal error

SMON: Downgrading transaction recovery to serial

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc

Thu Oct 13 11:21:54 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:55 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_pmon_15727.trc:

ORA-00474: SMON process terminated with error

Thu Oct 13 11:21:55 CST 2011

PMON: terminating instance due to error 474

Instance terminated by PMON, pid = 15727

从日志当中可以看出来,SMON进程遇到错误而终止,我们知道,如果SMON进程终止的话数据库实例也会随之终止,因此我们看到最终是由PMON进程终止了实例,期间有大量的ORA-00600[4142]错误,其中还有一段“Error 600 encountered while recovering transaction (25, 15) on object 605964.”
马上登陆到support.oracle.com上去查ORA-00600错误,但是里面列举出来的错误情况跟我们数据库遇到的情况并不一致,因此所提供的bug补丁也不敢随便拿来用。这样查了一会没有找到合适的解决办法,而数据库还是一样,手动启动之后隔十几分钟就又自动down掉,局方开始催促,因为一直出问题,因此有大量的数据处理需求就被延误下来,又仔细看了一下日志,查询资料,最终确认是回滚段造成的错误,解决方法是先屏蔽掉UNDO表空间回滚段的_SYSSMU25$,然后创建新的undo表空间并设置为默认,然后删除有问题的undo表空间,即可。
由于数据库当前没有使用spfile,因此需要先shutdown数据库,然后根据$ORACLE_BASE/admin/$ORACLE_SID/pfile/ 目录下的init.ora文件来创建spfile,然后使用新生成的的spfile启动数据库(生成spfile之前最好先备份原有的spfile文件),启动后将屏蔽回滚段的信息写入spfile 
alter system set "_offline_rollback_segments"="_SYSSMU25$" scope=spfile;
alter system set "_corrupted_rollback_segments"="_SYSSMU25$" scope=spfile;
然后shudown数据库,然后启动,在启动的时候 跟踪一下alert log,发现在启用这两个内部参数屏蔽掉之后,数据库日志当中就没有异常的错误信息了。 然后新建一个undo表空间并设为默认,让局方检查一下是否有重要数据需要恢复,在得到否定的回答后删除初始的undo表空间,至此问题得到解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12216142/viewspace-709245/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-25

  • 博文量
    129
  • 访问量
    711113