ALLSTARS_ORACLE 发表于 2014-10-12 22:49:31

分享: ASM常见错误ORA-15063: ASM discovered an insufficient number of di...

概述
----------
ASM disk header是ASM disk的第一个块,即AU#0 BLOCK#0,disk header中记录了ASM disk的重要信息,比如ASM disk名字,diskgroup名字,failgroup名字,AU size等等

1. 通过视图v$asm_diskgroup和v$asm_disk查看:
   
select group_number,disk_number,mount_status,header_status,name,path from v$asm_disk;


GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATUS   NAME     PATH
------------ ----------- ------- --------------- -------- --------------------
           1           0 CACHED  MEMBER          ASMDISK1 ORCL:ASMDISK1


select GROUP_NUMBER,name,state,type from v$asm_diskgroup;

GROUP_NUMBER NAME     STATE    TYPE
------------ -------- -------- ------
1 DGDATA   MOUNTED  EXTERN


2. 通过Kfed 查看ASM disk 信息:
kfed read /dev/oracleasm/disks/ASMDISK1

kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:              2147483648 ; 0x008: disk=0
kfbh.check:                  2402748364 ; 0x00c: 0x8f3707cc
kfbh.fcn.base:                     3580 ; 0x010: 0x00000dfc
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr: ORCLDISKASMDISK1 ; 0x000: length=16
kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname:                ASMDISK1 ; 0x028: length=8
kfdhdb.grpname:                  DGDATA ; 0x048: length=6
kfdhdb.fgname:                 ASMDISK1 ; 0x068: length=8
kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000
kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000


故障处理
-------------------
1. 如果 ASM disk header损坏,那么操作这个ASM disk时会报错ORA-15063,例如:

Mount diskgorup报错ORA-15063:

SQL> alter diskgroup dgdata mount;
alter diskgroup dgdata mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DGDATA" cannot be mounted
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DGDATA"

2. kfed检查ASM disk header,Kfed输出显示disk header的信息全部都是0,说明ASM disk header被覆盖/损坏

$ kfed read /dev/oracleasm/disks/ASMDISK1 AUNUM=0 BLKNUM=0
kfbh.endian:                          0 ; 0x000: 0x00
kfbh.hard:                            0 ; 0x001: 0x00
kfbh.type:                            0 ; 0x002: KFBTYP_INVALID
kfbh.datfmt:                          0 ; 0x003: 0x00
kfbh.block.blk:                       0 ; 0x004: blk=0
kfbh.block.obj:                       0 ; 0x008: file=0
kfbh.check:                           0 ; 0x00c: 0x00000000
kfbh.fcn.base:                        0 ; 0x010: 0x00000000
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
7FD4F8AE1400 00000000 00000000 00000000 00000000  [................]
  Repeat 255 times
KFED-00322: Invalid content encountered during block traversal: []


3.从11.1.0.7开始ASM disk header会自动备份到AU#1的倒数第二个block。对于AU size是1MB的DISKGROUP,每个AU包括block数量=1024KB/4KB=256个,因此备份信息位于AU#1的第254号block(block从0号开始),查看ASM disk header备份信息,备份信息与ASM disk header信息完全一致:

$ kfed read /dev/oracleasm/disks/ASMDISK1 AUNUM=1 BLKNUM=254 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: blk=0
...

4.利用备份信息恢复ASM disk header:
kfed repair /dev/oracleasm/disks/ASMDISK1 aus=1048576

parknkjun 发表于 2014-10-14 10:17:32

感谢LZ分享,一会自己做个实验加深理解!
页: [1]
查看完整版本: 分享: ASM常见错误ORA-15063: ASM discovered an insufficient number of di...