天道酬勤

Oracle and My Life

ORA-00600:[2103],[1],[0],[1],[900]的处理

3 comments

上周四中午刚放下订餐电话,手机响起鸟,客户的一套AIX 5.2 ML04  +  Oracle 10.2.0.3.0 (+Dataguard)的系统挂了,业务中断。收拾东西下楼打车赶往客户机房,大致半小时后到达客户机房登录系统检查发现系统报:“ORA-00600: internal error code, arguments: [2103], [1], [0], [1], [900]”错误。[2103]的错误与controlfile有关,[900]是等待的超时时间S。进一步检查发现,问题是出现在每天晚上0点都有crontab调度的系统备份任务:0点将系统置为热备模式—>连接FTP服务器—>CP需要备份的所有件—>最后将系统退出热备模式。metalink [ID 567891.1]说:系统处在热备份模式下,在日志发生切换时获取控制文件队列信息时发生了超时,这个等待时间默认是15分钟(900s)。虽然这里有一个Bug 6018274,但我的习惯是只有在做完了尽可能的尝试之后再认为是bug。

继续检查发现,系统一直在进行kill动作:“Killing enqueue blocker (pid=827572) on resource CF-00000000-00000000”,但遗憾的是这个动作失败了,尝试手工kill,失败。而且此时在系统中只要一发起与log相关的动作系统就挂起,无赖之下想重启oracle(这个想法很邪恶啊,如果待会儿起不来,how?),FT……正常关闭失败(意料中的),abort关机失败,回到OS中kill -9失败。万般无赖之下,只能重启OS,没想到的是AIX重启到一般的时候挂起,此时已经13:30了,还没有吃饭(12点客户叫俺一起去吃饭看到她那表情俺也有点不好意思。)不管了,先搞定系统再说吧。由于这套系统是P690上的一个分区,只要在HMC上使用“Hard Reset”选项了,鼠标移到此分区上检查了又检查了,俺视力5.2的说,但就怕这时看错了的话,后果,你知道的。在这前后几分钟,真有心跳加速的感觉,就怕待会儿库打不开啊。10分钟之后,my god,库顺利的打开了,哎呀,肚子不饿了,起应用一切顺利,先让别人开工吧。

造成ORA-00600 [2103]错误的原因有下:

1) 控制文件存放在I/O非常慢的存储系统上。

2) 频繁的日志切换,或日志文件过小或日志文件组数目过少。

3) 同时使用了异步I/O或多个数据写进程。

4) Oracle软件内部Bug。

5) OS/硬件问题。

讯问过客户工程师,确实在前一天18:30的时候进行数据整理,发生过非常频繁的日志切换,高峰时1分钟达5次日志切换,但在其后一天是正常的,由于环境复杂,暂时先做如下测试:(以影响业务程度最小化且实施难易程度依次列出)

1. 增大日志组成员大小,同时增加日志组数目。

2. 由于业务的特殊性,商讨能否修改备份策略来避开热备份。

3. 根据官方建议打补丁:Patch 5923866,在失效的情况下,将系统升级到10.2.0.4.0之上(最新分布为10.2.0.5.0)

4. 将操作系统从AIX 5.2 ML04升级到AIX 5.2 ML05(Oracle在[ID 406191.1]中建议)

BTW:在我重启完系统后问客户,此套系统应该有Dataguard的吧,答案是肯定的。到这里,可能大家会说为什么不在出问题的时候将系统切换到备机上。其实切换系统更多决定因素不仅仅只在技术层面的。

-The End-

Written by ochef

July 19th, 2010 at 10:00 am

Posted in Troubleshooting

Tagged with

3 Responses to 'ORA-00600:[2103],[1],[0],[1],[900]的处理'

Subscribe to comments with RSS or TrackBack to 'ORA-00600:[2103],[1],[0],[1],[900]的处理'.

  1. 呵呵 說不定那天晚上三點又掛了

    Taom

    20 Jul 10 at 18:21

  2. 高深的学问啊,佩服

    wuyisky

    27 Aug 10 at 16:52

  3. @wuyisky:这样说我更惭愧啊。

    ochef

    27 Aug 10 at 19:54

Leave a Reply

无觅相关文章插件,快速提升流量