Mounting ASM Diskgroup Fails With ORA-15063 Error and Resolving With KFED

2024-09-09ASM / Oracle / RAC

I want to share a situation that happened to me recently.

I closed my database running on ASM and also ASM instance successfully. I moved my ASM disks to a new server. After the installation Oracle software (Grid Infrastructure and RDBMS) on the new server, I got the following error when I tried to mount the DATA diskgroup.

ovmdbtest1.asyalocal.com.tr@09:52:05> asmcmd

ASMCMD> mount DATA

ORA-15032: not all alterations performed

ORA-15017: diskgroup “DATA” cannot be mounted

ORA-15063: ASM discovered an insufficient number of disks for diskgroup “DATA” (DBD ERROR: OCIStmtExecute)

ASMCMD>

Same as;

SQL> alter diskgroup DATA mount;

alter diskgroup DATA mount

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15017: diskgroup “DATA” cannot be mounted

ORA-15063: ASM discovered an insufficient number of disks for diskgroup “DATA”

I think, one or more of ASM disk’s header was corrupted. I checked my disks using ASMCA utility and it shows the status of 2 disks as “PROVISIONED”. Similarly, kfod utility also shows the status of 2 disks as “PROVISIONED”.

**# $GRID_HOME/bin/kfod status=TRUE asm_diskstring=’/dev/raw/raw*’ disk=all dscvgroup=TRUE**

——————————————————————————–

Disk Size Header Path Disk Group User Group

================================================================================

1: 512000 Mb MEMBER /dev/raw/raw1 DATA ora11g dba

2: 512000 Mb PROVISIONED /dev/raw/raw2 DATA ora11g dba

3: 512000 Mb MEMBER /dev/raw/raw3 DATA ora11g dba

4: 512000 Mb PROVISIONED /dev/raw/raw4 DATA ora11g dba

5: 512000 Mb MEMBER /dev/raw/raw5 DATA ora11g dba

6: 512000 Mb MEMBER /dev/raw/raw6 DATA ora11g dba

——————————————————————————–

ORACLE_SID ORACLE_HOME

================================================================================

+ASM /oracle/grid11g

I closed ASM instance and checked the header information of damaged disk using kfed utility.

# $GRID_HOME/bin/kfed read /dev/raw/raw2

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: 945480537 ; 0x00c: 0x385ae359

kfbh.fcn.base: 0 ; 0x010: 0x00000000

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr:ORCLDISK ; 0x000: length=32

kfdhdb.driver.reserved[0]: 33686018 ; 0x008: 0x02020202

kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0x02020202

kfdhdb.driver.reserved[2]: 33686018 ; 0x010: 0x02020202

kfdhdb.driver.reserved[3]: 33686018 ; 0x014: 0x02020202

kfdhdb.driver.reserved[4]: 33686018 ; 0x018: 0x02020202

kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0x02020202

kfdhdb.compat: 186646528 ; 0x020: 0x0b200000

kfdhdb.dsknum: 0 ; 0x024: 0x0000

kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER

kfdhdb.dskname: DATA_0000 ; 0x028: length=9

kfdhdb.grpname: DATA ; 0x048: length=4

kfdhdb.fgname: DATA_0000 ; 0x068: length=9

kfdhdb.capname: ; 0x088: length=0

kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0x10 DAYS=0x1c MNTH=0x2 YEAR=0x7dd

kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0x0 MSEC=0x361 SECS=0x11 MINS=0x3a

kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0x10 DAYS=0xc MNTH=0x3 YEAR=0x7dd

kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0x0 MSEC=0x239 SECS=0xd MINS=0x3b

kfdhdb.secsize: 512 ; 0x0b8: 0x0200

kfdhdb.blksize: 4096 ; 0x0ba: 0x1000

kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000

kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80

kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000

kfdhdb.pmcnt: 6 ; 0x0c8: 0x00000006

kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001

kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002

kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002

kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000

kfdhdb.redomirrors[1]: 0 ; 0x0da: 0x0000

kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0x0000

kfdhdb.redomirrors[3]: 0 ; 0x0de: 0x0000

kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000

kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0x10 DAYS=0x1c MNTH=0x2 YEAR=0x7dd

kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0x0 MSEC=0x29e SECS=0x10 MINS=0x3a

kfdhdb.vfstart: 0 ; 0x0ec: 0x00000000

kfdhdb.vfend: 0 ; 0x0f0: 0x00000000

kfdhdb.spfile: 0 ; 0x0f4: 0x00000000

kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000

kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0x00000000

kfdhdb.ub4spare[1]: 0 ; 0x100: 0x00000000

kfdhdb.ub4spare[2]: 0 ; 0x104: 0x00000000

kfdhdb.ub4spare[3]: 0 ; 0x108: 0x00000000

kfdhdb.ub4spare[4]: 0 ; 0x10c: 0x00000000

kfdhdb.ub4spare[5]: 0 ; 0x110: 0x00000000

kfdhdb.ub4spare[6]: 0 ; 0x114: 0x00000000

kfdhdb.ub4spare[7]: 0 ; 0x118: 0x00000000

kfdhdb.ub4spare[8]: 0 ; 0x11c: 0x00000000

kfdhdb.ub4spare[9]: 0 ; 0x120: 0x00000000

kfdhdb.ub4spare[10]: 0 ; 0x124: 0x00000000

kfdhdb.ub4spare[11]: 0 ; 0x128: 0x00000000

kfdhdb.ub4spare[12]: 0 ; 0x12c: 0x00000000

kfdhdb.ub4spare[13]: 0 ; 0x130: 0x00000000

kfdhdb.ub4spare[14]: 0 ; 0x134: 0x00000000

kfdhdb.ub4spare[15]: 0 ; 0x138: 0x00000000

kfdhdb.ub4spare[16]: 0 ; 0x13c: 0x00000000

kfdhdb.ub4spare[17]: 0 ; 0x140: 0x00000000

kfdhdb.ub4spare[18]: 0 ; 0x144: 0x00000000

kfdhdb.ub4spare[19]: 0 ; 0x148: 0x00000000

kfdhdb.ub4spare[20]: 0 ; 0x14c: 0x00000000

kfdhdb.ub4spare[21]: 0 ; 0x150: 0x00000000

kfdhdb.ub4spare[22]: 0 ; 0x154: 0x00000000

kfdhdb.ub4spare[23]: 0 ; 0x158: 0x00000000

kfdhdb.ub4spare[24]: 0 ; 0x15c: 0x00000000

kfdhdb.ub4spare[25]: 0 ; 0x160: 0x00000000

kfdhdb.ub4spare[26]: 0 ; 0x164: 0x00000000

kfdhdb.ub4spare[27]: 0 ; 0x168: 0x00000000

kfdhdb.ub4spare[28]: 0 ; 0x16c: 0x00000000

kfdhdb.ub4spare[29]: 0 ; 0x170: 0x00000000

kfdhdb.ub4spare[30]: 0 ; 0x174: 0x00000000

kfdhdb.ub4spare[31]: 0 ; 0x178: 0x00000000

kfdhdb.ub4spare[32]: 0 ; 0x17c: 0x00000000

kfdhdb.ub4spare[33]: 0 ; 0x180: 0x00000000

kfdhdb.ub4spare[34]: 0 ; 0x184: 0x00000000

kfdhdb.ub4spare[35]: 0 ; 0x188: 0x00000000

kfdhdb.ub4spare[36]: 0 ; 0x18c: 0x00000000

kfdhdb.ub4spare[37]: 0 ; 0x190: 0x00000000

kfdhdb.ub4spare[38]: 0 ; 0x194: 0x00000000

kfdhdb.ub4spare[39]: 254613 ; 0x198: 0x0003e295

kfdhdb.ub4spare[40]: 0 ; 0x19c: 0x00000000

kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0x00000000

kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0x00000000

kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0x00000000

kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0x00000000

kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0x00000000

kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0x00000000

kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0x00000000

kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0x00000000

kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0x00000000

kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0x00000000

kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0x00000000

kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0x00000000

kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0x00000000

kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000

kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000

kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000

kfdhdb.acdb.ub2spare: 43605 ; 0x1de: 0xaa55

The header information was corrupted. kfed output for the disk affected shows 0xaa55 on kfdhdb.acdb.ub2spare field. I backed up the header information using dd command.

# dd if=/dev/raw/raw2 of=/tmp/DATA.dd bs=1M count=10

I got the allocation unit size of damaged disk.

# $GRID_HOME/bin/kfed read /dev/raw/raw2 | grep ausize

Now we can repair damaged header information.

# $GRID_HOME/bin/kfed repair /dev/raw/raw2 aus=1048576

I rechecked the header information of damaged disk using kfed utility. Now, kfed output for the disk affected shows 0x0000 on kfdhdb.acdb.ub2spare field

# $GRID_HOME/bin/kfed read /dev/raw/raw2

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: 945480537 ; 0x00c: 0x385ae359

kfbh.fcn.base: 0 ; 0x010: 0x00000000

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr:ORCLDISK ; 0x000: length=32

kfdhdb.driver.reserved[0]: 33686018 ; 0x008: 0x02020202

kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0x02020202

kfdhdb.driver.reserved[2]: 33686018 ; 0x010: 0x02020202

kfdhdb.driver.reserved[3]: 33686018 ; 0x014: 0x02020202

kfdhdb.driver.reserved[4]: 33686018 ; 0x018: 0x02020202

kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0x02020202

kfdhdb.compat: 186646528 ; 0x020: 0x0b200000

kfdhdb.dsknum: 0 ; 0x024: 0x0000

kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER

kfdhdb.dskname: DATA_0000 ; 0x028: length=9

kfdhdb.grpname: DATA ; 0x048: length=4

kfdhdb.fgname: DATA_0000 ; 0x068: length=9

kfdhdb.capname: ; 0x088: length=0

kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0x10 DAYS=0x1c MNTH=0x2 YEAR=0x7dd

kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0x0 MSEC=0x361 SECS=0x11 MINS=0x3a

kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0x10 DAYS=0xc MNTH=0x3 YEAR=0x7dd

kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0x0 MSEC=0x239 SECS=0xd MINS=0x3b

kfdhdb.secsize: 512 ; 0x0b8: 0x0200

kfdhdb.blksize: 4096 ; 0x0ba: 0x1000

kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000

kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80

kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000

kfdhdb.pmcnt: 6 ; 0x0c8: 0x00000006

kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001

kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002

kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002

kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000

kfdhdb.redomirrors[1]: 0 ; 0x0da: 0x0000

kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0x0000

kfdhdb.redomirrors[3]: 0 ; 0x0de: 0x0000

kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000

kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0x10 DAYS=0x1c MNTH=0x2 YEAR=0x7dd

kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0x0 MSEC=0x29e SECS=0x10 MINS=0x3a

kfdhdb.vfstart: 0 ; 0x0ec: 0x00000000

kfdhdb.vfend: 0 ; 0x0f0: 0x00000000

kfdhdb.spfile: 0 ; 0x0f4: 0x00000000

kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000

kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0x00000000

kfdhdb.ub4spare[1]: 0 ; 0x100: 0x00000000

kfdhdb.ub4spare[2]: 0 ; 0x104: 0x00000000

kfdhdb.ub4spare[3]: 0 ; 0x108: 0x00000000

kfdhdb.ub4spare[4]: 0 ; 0x10c: 0x00000000

kfdhdb.ub4spare[5]: 0 ; 0x110: 0x00000000

kfdhdb.ub4spare[6]: 0 ; 0x114: 0x00000000

kfdhdb.ub4spare[7]: 0 ; 0x118: 0x00000000

kfdhdb.ub4spare[8]: 0 ; 0x11c: 0x00000000

kfdhdb.ub4spare[9]: 0 ; 0x120: 0x00000000

kfdhdb.ub4spare[10]: 0 ; 0x124: 0x00000000

kfdhdb.ub4spare[11]: 0 ; 0x128: 0x00000000

kfdhdb.ub4spare[12]: 0 ; 0x12c: 0x00000000

kfdhdb.ub4spare[13]: 0 ; 0x130: 0x00000000

kfdhdb.ub4spare[14]: 0 ; 0x134: 0x00000000

kfdhdb.ub4spare[15]: 0 ; 0x138: 0x00000000

kfdhdb.ub4spare[16]: 0 ; 0x13c: 0x00000000

kfdhdb.ub4spare[17]: 0 ; 0x140: 0x00000000

kfdhdb.ub4spare[18]: 0 ; 0x144: 0x00000000

kfdhdb.ub4spare[19]: 0 ; 0x148: 0x00000000

kfdhdb.ub4spare[20]: 0 ; 0x14c: 0x00000000

kfdhdb.ub4spare[21]: 0 ; 0x150: 0x00000000

kfdhdb.ub4spare[22]: 0 ; 0x154: 0x00000000

kfdhdb.ub4spare[23]: 0 ; 0x158: 0x00000000

kfdhdb.ub4spare[24]: 0 ; 0x15c: 0x00000000

kfdhdb.ub4spare[25]: 0 ; 0x160: 0x00000000

kfdhdb.ub4spare[26]: 0 ; 0x164: 0x00000000

kfdhdb.ub4spare[27]: 0 ; 0x168: 0x00000000

kfdhdb.ub4spare[28]: 0 ; 0x16c: 0x00000000

kfdhdb.ub4spare[29]: 0 ; 0x170: 0x00000000

kfdhdb.ub4spare[30]: 0 ; 0x174: 0x00000000

kfdhdb.ub4spare[31]: 0 ; 0x178: 0x00000000

kfdhdb.ub4spare[32]: 0 ; 0x17c: 0x00000000

kfdhdb.ub4spare[33]: 0 ; 0x180: 0x00000000

kfdhdb.ub4spare[34]: 0 ; 0x184: 0x00000000

kfdhdb.ub4spare[35]: 0 ; 0x188: 0x00000000

kfdhdb.ub4spare[36]: 0 ; 0x18c: 0x00000000

kfdhdb.ub4spare[37]: 0 ; 0x190: 0x00000000

kfdhdb.ub4spare[38]: 0 ; 0x194: 0x00000000

kfdhdb.ub4spare[39]: 0 ; 0x198: 0x00000000

kfdhdb.ub4spare[40]: 0 ; 0x19c: 0x00000000

kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0x00000000

kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0x00000000

kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0x00000000

kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0x00000000

kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0x00000000

kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0x00000000

kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0x00000000

kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0x00000000

kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0x00000000

kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0x00000000

kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0x00000000

kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0x00000000

kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0x00000000

kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000

kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000

kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000

kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0x0000

Now, we can mount DATA diskgroup successfully.

I recommend that you should add ASM disk header information backup to your current backup plan.

I did not take a backup of damaged ASM disk header information before. So how was the recovery process above? There is a second copy of ASM disk header information. kfed repairs the corrupted block from second copy. If our second copy of the header information was corrupted also then we could repair the header information using backup.

Talip Hakan Öztürk Advertisements### Share this:

How to Move a Datafile From File System To ASM Disk Group?In "ASM (Automatic Storage Management)"

How To Solve ORA-06508 | ORA-04065 | ORA-04068 Errors?In "ORA-Errors" Categories: ASM (Automatic Storage Management)Tags: ASMCMD, kfed, kfed repair, kfod, ORA-15017, ORA-15032, ORA-15063