love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

ASM 加盘导致数据库无法Open的案例(add disk很危险)

周5我司某客户在进行存储扩容时;当add disk完成后,发现数据库很快crash。

可以看add disk 是成功了,然后开始reblance时,无法进行,进而报错;导致diskgroup dismount。进一步分析arb进程的trace发现asm 元数据确实存在坏块:

如果数据库asm 元数据的朋友肯定都知道,AU 0除了disk header block之外,后面的block都是allocate table。如果不了解这一点,查看上面的trace 报错也能看出来,有明确的提示:这应该是一个allocate block;但是数据均为空。。。

当天凌晨恢复时没有去进行深入分析,开始以为只有个别block问题,尝试kfed merge去修改pst、disk directory、cod和acd等元数据,尝试把新加的盘踢掉;然后强制拉磁盘组;发现都不行;而且还遇到了一个新错误:

最后为了尽快恢复业务,我们选择了两条腿走路;一遍kfed修复,一遍进行amdu+odu进行恢复。。。。。

那么为什么会出现这种问题呢? 都add disk成功了,然后磁盘组还会挂掉?

本质上是因为Oracle 在 add disk操作的时候并不会去检查allocate table是否完整或者有异常;主要是更新disk directory、pst等元数据。当加盘成功之后,开始进行reblance时才会去更新allocate table;如果此时发现at block有损坏;则会报错

如下一个简单的测试:

由此可见;这是一个比较大的隐患。在10g和11g对asm 元数据方向的管理和维护并不是非常完善。曾经遇到过add disk对于磁盘实际大小校验不严格的问题。

我想,这也是为什么Oracle 从12c版本开始,不仅仅是对disk header进行备份;而是会将整个AU 0都进行备份。这或许是Oracle发现了这个缺陷吧。

 

One Response to “ASM 加盘导致数据库无法Open的案例(add disk很危险)”

  1. admin Says:

    实际上后面我kfed读了一下之前同事的备份;发现确实大量的坏块。
    [oracle@mysqldb1 tmp]$ for (( i=0; i<256; i++ )) do kfed read /tmp/lun1.bak aun=0 blkn=$i | grep 'kfbh.type' ; done
    kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
    kfbh.type: 2 ; 0x002: KFBTYP_FREESPC
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID
    kfbh.type: 0 ; 0x002: KFBTYP_INVALID

Leave a Reply

You must be logged in to post a comment.