如果ASM实例经常奔溃crash,且后台日志alert.log中发现如下错误信息的话,则有必要参考本篇文章了:
NOTE: starting recovery of thread=1 ckpt=201.9904 group=2
NOTE: starting recovery of thread=2 ckpt=139.4186 group=2
Tue Dec 16 03:00:51 2008
Errors in file /u01/app/oracle/product/10.2.0/asm/admin/+ASM/udump/+asm2_ora_15305.trc:
ORA-00600: internal error code, arguments: [kfcChkAio01], [], [], [], [], [], [], []
ORA-15196: invalid ASM block header [kfc.c:5552] [endian_kfbh] [2079] [2147483648] [1 != 0]
Abort recovery for domain 2
NOTE: crash recovery signalled OER-600
ERROR: ORA-600 signalled during mount of diskgroup FLASH
这个错误会导致 diskgroup被dismount,一般是由于bug 7589862 所造成。
也可以通过trace文件中的stack call来进一步确认是否是该问题:
kfcChkAio
函数kfxdrvMount是mount diskgroup时调用,其属于ASM恢复层kfrcrv
该错误的主要表现即是:
ORA-00600: internal error code, arguments: [kfcChkAio01], [], [], [], [], [], [], []
kfcChkAio01 表示IO操作因为无效的块而发生错误
ORA-15196: invalid ASM block header [kfc.c:5552] [endian_kfbh] [2079] [2147483648] [1 != 0]
上面的报错说明 无效的块
其中
endian_kfbh 是block header中的数据
2079 ASM FILE NUMBER
2147483648 ASM BLOCK NUMBER
1 != 0 1 was the value found on the field referenced on the first argument, but 0 was the expected value.
遇到该问题需要通过手工Patch ASM metadata来解决, 如果不熟悉ASM内部结构 ,那么建议请专业人员来操作。