ORA-15196: invalid ASM block header [kfc.c] [check_kfbh] [325] [2147483650] [2170461157 != 2170461165]
是当ASM读取到无效的asm block header时的报错,相关的BUG NOTE如下:
check_kfbh的存在时为了检验块的一致性 ,会对整个块做一个32 bit xor 来对比现有check_kfbh,有点象block的checksum
The field check_kfbh is adjusted to ensure that a 32 bit xor of the whole block will be zero. Check values are always calculated before writing a
block to disk, but may not be accurate for a block in the buffer cache. In this example the check value is “8A 8B D0 AE” but since this is little
endian the actual value is “0xAED08B8A
对于该问题 建议:
1、首先要检查 OS是否存在IO丢失的问题,例如 AIX上执行 errpt ,Linux查看os log 和dmesg
2、 检查RAC的多个节点上存储设备名是否一致
3、 考虑执行 ' alter diskgroup check norepair'来检查ASM diskgroup
4、11.2中如果遇到上述情况会自动使用amdu工具dump ASM disk其trace一般在ASM对应的user dump下 ,如NOTE: AMDU dump of disk group MAC created at /oracle/diag/asm/+asm/+ASM3/trace, 整个AMDU trace里包含了很有用的信息,如果存在大量的AMDU-00209: Corrupt block found: Disk N0072 AU [26127] block [94] type [0]信息,和看到 Corrupt metadata blocks: 320 大量损坏的元数据块, 则说明该问题一般是由于 OS层或者磁盘/存储硬件层引起的,因为不太可能有ASM的bug 会造成这么大量的损坏, 解释成丢失更新 Lost Update也不合理
5、实际上如果你和我一样检阅过上面全部的BUG Note,你会发现没有个BUG note是最终定位为real bug的,这些SR/Bug Note最终要么不了了之,要么查出来确实是OS或者硬盘/存储有问题;所以对于这个问题提交SR的效率很低, 往往找OS和存储厂商一起检查更有效率
6、如果你真的遇到了该问题,那么如果坏掉的元数据块(metadata block)比较少的话,可以请相关的ASM专家手工帮你修复,具体也可以找ASKMACLEAN专业ORACLE 数据库修复团队成员帮您恢复。切记不要在无备份ASM header的情况下 *** 作,否则可能丢失恢复数据的最后一线希望。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)