数据库:Oracle10g(10.1.0.4) 操作系统:Aix5L 数据库架构:Oracle10g RAC+DataGuard 数据库故障现象:数据库不定期的晚上会自动宕机,包括远程的备份库也同时被挂起。
首先查看用户两台数据库服务器上的Alert告警日志文件,看看有无错误信息。经检查发现,每次数据库宕机的时候都会出现如下的日志信息:
Errors in file /ora/app/oracle/admin/orcl1/bdump/orcl1_lgwr_430484.trc:
ORA-00600: Message 600 not found; No message file for prodUCt=RDBMS, facility=ORA; arguments: [2103] [0] [0] [1] [900]
Tue Jan 23 00:09:04 2007
Trace dumping is performing id=[cdmp_20070123000903]
Tue Jan 23 00:09:04 2007
Errors in file /ora/app/oracle/admin/orcl1/bdump/orcl1_lgwr_430484.trc:
ORA-00600: Message 600 not found; No message file for product=RDBMS, facility=ORA; arguments: [2103] [0] [0] [1] [900]
Tue Jan 23 00:09:04 2007
LGWR: terminating instance due to error 470
数据库出现ORA-600的严重错误,从而最后LGWR进程导致数据库整个崩溃。
在metalink上查询了ORA-600[2103]这个错误,发现此错误表示Oracle进程在900s之内无法获得CF enqueue。这个错误可能由于以下两个原因引起:
1. 控制文件所在的文件系统的I/O非常慢。
2. 在实例的Alert日志文件中发现非常频繁的日志切换。
从上面的日志信息中我们可以发现是LGWR进程在试图获得CF enqueue,然后继续去检查BDUMP目录下在发生错误的时候的LMD的跟踪文件,发现存在如下信息:
ENQUEUE DUMP REQUEST: from 1 on [0x0][0x0],[CF] for reason 2 mtype 0DUMP LOCAL BLOCKER/HOLDER: block level 4 res [0x0][0x0],[CF]
经查证后发现是Bug 4531010 和Bug 4502201,在补丁集10.1.0.5中可以修正此bug。
因此,建议从10.1.0.4升级到10.1.0.5来解决此问题。