ASM常见错误 ORA-15063: ASM discovered an insufficient number of disks for diskgroup


概述
----------
ASM disk header是ASM disk的第一个块,即AU#0 BLOCK#0,disk header中记录了ASM disk的重要信息,比如ASM disk名字,diskgroup名字,failure group名字,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<<<< disk名称
kfdhdb.grpname:                  DGDATA ; 0x048: length=6<<<< group名称
kfdhdb.fgname:                 ASMDISK1 ; 0x068: length=8<<<< failure group名称
kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000  <<<< ASM block size = 4KB
kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000<<<< AU size = 1MB



故障处理
-------------------
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: [kfbtTraverseBlock][Invalid OSM block type][][0]



3.在11.1.0.7之前 ASM disk header没有自动备份,需要手动执行kfed read或者dd来备份,从11.1.0.7开始ASM disk header会自动备份到AU#1的倒数第二个block。对于AU size是1MB的DISKGROUP,每个AU包括block数量=1024KB/4KB=256个,因此备份信息位于AU#1的第254号block,查看ASM disk header备份信息,备份信息与ASM disk header信息完全一致:


$ kfed read /dev/oracleasm/disks/ASMDISK1 AUNUM=1 BLKNUM=254 ausz=1048576 | 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命令,利用备份信息恢复ASM disk header:
kfed repair /dev/oracleasm/disks/ASMDISK1 aus=1048576


参与此主题的后续讨论,请回复blog,或者访问我们的中文社区,跟帖"分享: ASM常见错误ORA-15063: ASM discovered an insufficient number of disks for diskgroup"



评论:

文章描述有误,实际上Oracle 从10.2.0.5就开始有asm disk 盘头的自动备份了。
请参考:http://www.killdb.com/2012/06/13/where-is-the-backup-of-asm-disk-header-block-%e8%a1%a5%e5%85%85.html

发表于 roger 在 2014年08月05日, 03:33 下午 CST #

我觉得roger说的不完全对,10.2.0.5应该是在11.1.0.7版本后出的Patch set,因此,按照自然时间来说,博主是对的

发表于 Fung 在 2014年09月18日, 04:14 下午 CST #

发表一条评论:
  • HTML语法: 禁用
About

本博客由Oracle全球技术支持中国区的工程师维护。为中文用户提供数据库相关的技术支持信息,包括常用的诊断工具、诊断方法、产品新特性、案例分析等。此外,MOS也陆续推出各类中文内容:技术通讯统一发布在Note 1529795.1 中,中文文档列表更新在Note 1533057.1 中,网上讲座请查看MOS文档 1456176.1,在"Archived"中可以下载历史的录音和文档。

Search

Archives
« 四月 2015
星期日星期一星期二星期三星期四星期五星期六
   
1
2
3
4
5
6
7
9
10
11
12
14
15
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
今天