今天客户的一个RAC集群系统出现问题,一个节点被重启后,ASM磁盘组无法mount,报出如下错误:
ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []
检查trac文件如下:
Errors in file /u01/app/oracle/admin/+ASM/udump/+asm2_ora_11560.trc:
ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []
Current SQL statement for this session:
ALTER DISKGROUP ALL MOUNT
后面就是一堆二进制码,看来是磁盘组mount的时候出现问题。
查找各方面资料,发现是oracle的一个bug。
解决的办法有三个:
1、升级到10.2.0.3
2、打一个patch上去
3、把活着的那个节点的PMON进行kill掉,然后重新启动活着的节点的实例,使得强制对数据库进行恢复
评估一下,
方案1动作太大,而且这个版本没有测试使用过。
方案2的readme文件里明确写着这个patch可能会造成数据丢失,要在oracle support的支持下做,我没有support,
看来方案三比较可行,可问题是现在至少有一个节点活着,如果强行kill pmon进程后,节点2也起不来了,那就全玩完了,只有准备好切dataguard的方案先了。
此时在oracle的论坛上看见说不用kill pmon的,只要把两个节点都宕下来,然后启动就ok。
于是重启两个节点,看见见SUCCESS: diskgroup DATA was mounted提示出来了,放心了。
数据库全部起来后,业务回复正常!