KFOD =Kernel Files Osm Disk
KFED =Kernel Files metadata EDitor
AMDU = ASM Metadata Dump Utility
kfed,kfod is available from Oracle Database 11g Release 1 and forward and can be used to read and write ASM metadata, in particular disk headers and ASM metadata contents. kfed in write mode is a powerful but can be potentially destructive tool in the wrong hands. kfed invoked with the -help option displays the online help for the utility.
KFOD confirm that DISK header is working fine or not .
KFOD is used during installation time also (by OUI,DBCA or ASMCA) perform disk discovery
# $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
Kfed utility is used to read /repair disk :It allows to analyze ASM disk header information when ASM diskgroups can not be mounted.
# $GRID_HOME/bin/kfed read /dev/raw/raw2
kfbh.endian: 1 ; 0×000: 0×01
kfbh.hard: 130 ; 0×001: 0×82
kfbh.type: 1 ; 0×002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0×003: 0×01
kfbh.block.blk: 0 ; 0×004: blk=0
kfbh.block.obj: 2147483648 ; 0×008: disk=0
kfbh.check: 945480537 ; 0x00c: 0x385ae359
kfbh.fcn.base: 0 ; 0×010: 0×00000000
kfbh.fcn.wrap: 0 ; 0×014: 0×00000000
kfbh.spare1: 0 ; 0×018: 0×00000000
kfbh.spare2: 0 ; 0x01c: 0×00000000
kfdhdb.driver.provstr:ORCLDISK ; 0×000: length=32
kfdhdb.driver.reserved[0]: 33686018 ; 0×008: 0×02020202
kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0×02020202
kfdhdb.driver.reserved[2]: 33686018 ; 0×010: 0×02020202
kfdhdb.driver.reserved[3]: 33686018 ; 0×014: 0×02020202
kfdhdb.driver.reserved[4]: 33686018 ; 0×018: 0×02020202
kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0×02020202
kfdhdb.compat: 186646528 ; 0×020: 0x0b200000
kfdhdb.dsknum: 0 ; 0×024: 0×0000
kfdhdb.grptyp: 1 ; 0×026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER
kfdhdb.dskname: DATA_0000 ; 0×028: length=9
kfdhdb.grpname: DATA ; 0×048: length=4
kfdhdb.fgname: DATA_0000 ; 0×068: length=9
kfdhdb.capname: ; 0×088: length=0
kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0×0 MSEC=0×361 SECS=0×11 MINS=0x3a
kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0×10 DAYS=0xc MNTH=0×3 YEAR=0x7dd
kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0×0 MSEC=0×239 SECS=0xd MINS=0x3b
kfdhdb.secsize: 512 ; 0x0b8: 0×0200
kfdhdb.blksize: 4096 ; 0x0ba: 0×1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0×00100000
kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000
kfdhdb.pmcnt: 6 ; 0x0c8: 0×00000006
kfdhdb.fstlocn: 1 ; 0x0cc: 0×00000001
kfdhdb.altlocn: 2 ; 0x0d0: 0×00000002
kfdhdb.f1b1locn: 2 ; 0x0d4: 0×00000002
kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0×0000
kfdhdb.redomirrors[1]: 0 ; 0x0da: 0×0000
kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0×0000
kfdhdb.redomirrors[3]: 0 ; 0x0de: 0×0000
kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000
kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0×0 MSEC=0x29e SECS=0×10 MINS=0x3a
kfdhdb.vfstart: 0 ; 0x0ec: 0×00000000
kfdhdb.vfend: 0 ; 0x0f0: 0×00000000
kfdhdb.spfile: 0 ; 0x0f4: 0×00000000
kfdhdb.spfflg: 0 ; 0x0f8: 0×00000000
kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0×00000000
kfdhdb.ub4spare[1]: 0 ; 0×100: 0×00000000
kfdhdb.ub4spare[2]: 0 ; 0×104: 0×00000000
kfdhdb.ub4spare[3]: 0 ; 0×108: 0×00000000
kfdhdb.ub4spare[4]: 0 ; 0x10c: 0×00000000
kfdhdb.ub4spare[5]: 0 ; 0×110: 0×00000000
kfdhdb.ub4spare[6]: 0 ; 0×114: 0×00000000
kfdhdb.ub4spare[7]: 0 ; 0×118: 0×00000000
kfdhdb.ub4spare[8]: 0 ; 0x11c: 0×00000000
kfdhdb.ub4spare[9]: 0 ; 0×120: 0×00000000
kfdhdb.ub4spare[10]: 0 ; 0×124: 0×00000000
kfdhdb.ub4spare[11]: 0 ; 0×128: 0×00000000
kfdhdb.ub4spare[12]: 0 ; 0x12c: 0×00000000
kfdhdb.ub4spare[13]: 0 ; 0×130: 0×00000000
kfdhdb.ub4spare[14]: 0 ; 0×134: 0×00000000
kfdhdb.ub4spare[15]: 0 ; 0×138: 0×00000000
kfdhdb.ub4spare[16]: 0 ; 0x13c: 0×00000000
kfdhdb.ub4spare[17]: 0 ; 0×140: 0×00000000
kfdhdb.ub4spare[18]: 0 ; 0×144: 0×00000000
kfdhdb.ub4spare[19]: 0 ; 0×148: 0×00000000
kfdhdb.ub4spare[20]: 0 ; 0x14c: 0×00000000
kfdhdb.ub4spare[21]: 0 ; 0×150: 0×00000000
kfdhdb.ub4spare[22]: 0 ; 0×154: 0×00000000
kfdhdb.ub4spare[23]: 0 ; 0×158: 0×00000000
kfdhdb.ub4spare[24]: 0 ; 0x15c: 0×00000000
kfdhdb.ub4spare[25]: 0 ; 0×160: 0×00000000
kfdhdb.ub4spare[26]: 0 ; 0×164: 0×00000000
kfdhdb.ub4spare[27]: 0 ; 0×168: 0×00000000
kfdhdb.ub4spare[28]: 0 ; 0x16c: 0×00000000
kfdhdb.ub4spare[29]: 0 ; 0×170: 0×00000000
kfdhdb.ub4spare[30]: 0 ; 0×174: 0×00000000
kfdhdb.ub4spare[31]: 0 ; 0×178: 0×00000000
kfdhdb.ub4spare[32]: 0 ; 0x17c: 0×00000000
kfdhdb.ub4spare[33]: 0 ; 0×180: 0×00000000
kfdhdb.ub4spare[34]: 0 ; 0×184: 0×00000000
kfdhdb.ub4spare[35]: 0 ; 0×188: 0×00000000
kfdhdb.ub4spare[36]: 0 ; 0x18c: 0×00000000
kfdhdb.ub4spare[37]: 0 ; 0×190: 0×00000000
kfdhdb.ub4spare[38]: 0 ; 0×194: 0×00000000
kfdhdb.ub4spare[39]: 254613 ; 0×198: 0x0003e295
kfdhdb.ub4spare[40]: 0 ; 0x19c: 0×00000000
kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0×00000000
kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0×00000000
kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0×00000000
kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0×00000000
kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0×00000000
kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0×00000000
kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0×00000000
kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0×00000000
kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0×00000000
kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0×00000000
kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0×00000000
kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0×00000000
kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0×00000000
kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0×00000000
kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0×00000000
kfdhdb.acdb.ents: 0 ; 0x1dc: 0×0000
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 0×0000 on kfdhdb.acdb.ub2spare field
# $GRID_HOME/bin/kfed read /dev/raw/raw2
kfbh.endian: 1 ; 0×000: 0×01
kfbh.hard: 130 ; 0×001: 0×82
kfbh.type: 1 ; 0×002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0×003: 0×01
kfbh.block.blk: 0 ; 0×004: blk=0
kfbh.block.obj: 2147483648 ; 0×008: disk=0
kfbh.check: 945480537 ; 0x00c: 0x385ae359
kfbh.fcn.base: 0 ; 0×010: 0×00000000
kfbh.fcn.wrap: 0 ; 0×014: 0×00000000
kfbh.spare1: 0 ; 0×018: 0×00000000
kfbh.spare2: 0 ; 0x01c: 0×00000000
kfdhdb.driver.provstr:ORCLDISK ; 0×000: length=32
kfdhdb.driver.reserved[0]: 33686018 ; 0×008: 0×02020202
kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0×02020202
kfdhdb.driver.reserved[2]: 33686018 ; 0×010: 0×02020202
kfdhdb.driver.reserved[3]: 33686018 ; 0×014: 0×02020202
kfdhdb.driver.reserved[4]: 33686018 ; 0×018: 0×02020202
kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0×02020202
kfdhdb.compat: 186646528 ; 0×020: 0x0b200000
kfdhdb.dsknum: 0 ; 0×024: 0×0000
kfdhdb.grptyp: 1 ; 0×026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER
kfdhdb.dskname: DATA_0000 ; 0×028: length=9
kfdhdb.grpname: DATA ; 0×048: length=4
kfdhdb.fgname: DATA_0000 ; 0×068: length=9
kfdhdb.capname: ; 0×088: length=0
kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0×0 MSEC=0×361 SECS=0×11 MINS=0x3a
kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0×10 DAYS=0xc MNTH=0×3 YEAR=0x7dd
kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0×0 MSEC=0×239 SECS=0xd MINS=0x3b
kfdhdb.secsize: 512 ; 0x0b8: 0×0200
kfdhdb.blksize: 4096 ; 0x0ba: 0×1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0×00100000
kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000
kfdhdb.pmcnt: 6 ; 0x0c8: 0×00000006
kfdhdb.fstlocn: 1 ; 0x0cc: 0×00000001
kfdhdb.altlocn: 2 ; 0x0d0: 0×00000002
kfdhdb.f1b1locn: 2 ; 0x0d4: 0×00000002
kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0×0000
kfdhdb.redomirrors[1]: 0 ; 0x0da: 0×0000
kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0×0000
kfdhdb.redomirrors[3]: 0 ; 0x0de: 0×0000
kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000
kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0×0 MSEC=0x29e SECS=0×10 MINS=0x3a
kfdhdb.vfstart: 0 ; 0x0ec: 0×00000000
kfdhdb.vfend: 0 ; 0x0f0: 0×00000000
kfdhdb.spfile: 0 ; 0x0f4: 0×00000000
kfdhdb.spfflg: 0 ; 0x0f8: 0×00000000
kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0×00000000
kfdhdb.ub4spare[1]: 0 ; 0×100: 0×00000000
kfdhdb.ub4spare[2]: 0 ; 0×104: 0×00000000
kfdhdb.ub4spare[3]: 0 ; 0×108: 0×00000000
kfdhdb.ub4spare[4]: 0 ; 0x10c: 0×00000000
kfdhdb.ub4spare[5]: 0 ; 0×110: 0×00000000
kfdhdb.ub4spare[6]: 0 ; 0×114: 0×00000000
kfdhdb.ub4spare[7]: 0 ; 0×118: 0×00000000
kfdhdb.ub4spare[8]: 0 ; 0x11c: 0×00000000
kfdhdb.ub4spare[9]: 0 ; 0×120: 0×00000000
kfdhdb.ub4spare[10]: 0 ; 0×124: 0×00000000
kfdhdb.ub4spare[11]: 0 ; 0×128: 0×00000000
kfdhdb.ub4spare[12]: 0 ; 0x12c: 0×00000000
kfdhdb.ub4spare[13]: 0 ; 0×130: 0×00000000
kfdhdb.ub4spare[14]: 0 ; 0×134: 0×00000000
kfdhdb.ub4spare[15]: 0 ; 0×138: 0×00000000
kfdhdb.ub4spare[16]: 0 ; 0x13c: 0×00000000
kfdhdb.ub4spare[17]: 0 ; 0×140: 0×00000000
kfdhdb.ub4spare[18]: 0 ; 0×144: 0×00000000
kfdhdb.ub4spare[19]: 0 ; 0×148: 0×00000000
kfdhdb.ub4spare[20]: 0 ; 0x14c: 0×00000000
kfdhdb.ub4spare[21]: 0 ; 0×150: 0×00000000
kfdhdb.ub4spare[22]: 0 ; 0×154: 0×00000000
kfdhdb.ub4spare[23]: 0 ; 0×158: 0×00000000
kfdhdb.ub4spare[24]: 0 ; 0x15c: 0×00000000
kfdhdb.ub4spare[25]: 0 ; 0×160: 0×00000000
kfdhdb.ub4spare[26]: 0 ; 0×164: 0×00000000
kfdhdb.ub4spare[27]: 0 ; 0×168: 0×00000000
kfdhdb.ub4spare[28]: 0 ; 0x16c: 0×00000000
kfdhdb.ub4spare[29]: 0 ; 0×170: 0×00000000
kfdhdb.ub4spare[30]: 0 ; 0×174: 0×00000000
kfdhdb.ub4spare[31]: 0 ; 0×178: 0×00000000
kfdhdb.ub4spare[32]: 0 ; 0x17c: 0×00000000
kfdhdb.ub4spare[33]: 0 ; 0×180: 0×00000000
kfdhdb.ub4spare[34]: 0 ; 0×184: 0×00000000
kfdhdb.ub4spare[35]: 0 ; 0×188: 0×00000000
kfdhdb.ub4spare[36]: 0 ; 0x18c: 0×00000000
kfdhdb.ub4spare[37]: 0 ; 0×190: 0×00000000
kfdhdb.ub4spare[38]: 0 ; 0×194: 0×00000000
kfdhdb.ub4spare[39]: 0 ; 0×198: 0×00000000
kfdhdb.ub4spare[40]: 0 ; 0x19c: 0×00000000
kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0×00000000
kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0×00000000
kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0×00000000
kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0×00000000
kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0×00000000
kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0×00000000
kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0×00000000
kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0×00000000
kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0×00000000
kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0×00000000
kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0×00000000
kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0×00000000
kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0×00000000
kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0×00000000
kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0×00000000
kfdhdb.acdb.ents: 0 ; 0x1dc: 0×0000
kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0×0000
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.
AMDU = ASM Metadata Dump Utility
KFED =Kernel Files metadata EDitor
AMDU = ASM Metadata Dump Utility
kfed,kfod is available from Oracle Database 11g Release 1 and forward and can be used to read and write ASM metadata, in particular disk headers and ASM metadata contents. kfed in write mode is a powerful but can be potentially destructive tool in the wrong hands. kfed invoked with the -help option displays the online help for the utility.
KFOD confirm that DISK header is working fine or not .
KFOD is used during installation time also (by OUI,DBCA or ASMCA) perform disk discovery
# $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
Kfed utility is used to read /repair disk :It allows to analyze ASM disk header information when ASM diskgroups can not be mounted.
# $GRID_HOME/bin/kfed read /dev/raw/raw2
kfbh.endian: 1 ; 0×000: 0×01
kfbh.hard: 130 ; 0×001: 0×82
kfbh.type: 1 ; 0×002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0×003: 0×01
kfbh.block.blk: 0 ; 0×004: blk=0
kfbh.block.obj: 2147483648 ; 0×008: disk=0
kfbh.check: 945480537 ; 0x00c: 0x385ae359
kfbh.fcn.base: 0 ; 0×010: 0×00000000
kfbh.fcn.wrap: 0 ; 0×014: 0×00000000
kfbh.spare1: 0 ; 0×018: 0×00000000
kfbh.spare2: 0 ; 0x01c: 0×00000000
kfdhdb.driver.provstr:ORCLDISK ; 0×000: length=32
kfdhdb.driver.reserved[0]: 33686018 ; 0×008: 0×02020202
kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0×02020202
kfdhdb.driver.reserved[2]: 33686018 ; 0×010: 0×02020202
kfdhdb.driver.reserved[3]: 33686018 ; 0×014: 0×02020202
kfdhdb.driver.reserved[4]: 33686018 ; 0×018: 0×02020202
kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0×02020202
kfdhdb.compat: 186646528 ; 0×020: 0x0b200000
kfdhdb.dsknum: 0 ; 0×024: 0×0000
kfdhdb.grptyp: 1 ; 0×026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER
kfdhdb.dskname: DATA_0000 ; 0×028: length=9
kfdhdb.grpname: DATA ; 0×048: length=4
kfdhdb.fgname: DATA_0000 ; 0×068: length=9
kfdhdb.capname: ; 0×088: length=0
kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0×0 MSEC=0×361 SECS=0×11 MINS=0x3a
kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0×10 DAYS=0xc MNTH=0×3 YEAR=0x7dd
kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0×0 MSEC=0×239 SECS=0xd MINS=0x3b
kfdhdb.secsize: 512 ; 0x0b8: 0×0200
kfdhdb.blksize: 4096 ; 0x0ba: 0×1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0×00100000
kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000
kfdhdb.pmcnt: 6 ; 0x0c8: 0×00000006
kfdhdb.fstlocn: 1 ; 0x0cc: 0×00000001
kfdhdb.altlocn: 2 ; 0x0d0: 0×00000002
kfdhdb.f1b1locn: 2 ; 0x0d4: 0×00000002
kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0×0000
kfdhdb.redomirrors[1]: 0 ; 0x0da: 0×0000
kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0×0000
kfdhdb.redomirrors[3]: 0 ; 0x0de: 0×0000
kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000
kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0×0 MSEC=0x29e SECS=0×10 MINS=0x3a
kfdhdb.vfstart: 0 ; 0x0ec: 0×00000000
kfdhdb.vfend: 0 ; 0x0f0: 0×00000000
kfdhdb.spfile: 0 ; 0x0f4: 0×00000000
kfdhdb.spfflg: 0 ; 0x0f8: 0×00000000
kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0×00000000
kfdhdb.ub4spare[1]: 0 ; 0×100: 0×00000000
kfdhdb.ub4spare[2]: 0 ; 0×104: 0×00000000
kfdhdb.ub4spare[3]: 0 ; 0×108: 0×00000000
kfdhdb.ub4spare[4]: 0 ; 0x10c: 0×00000000
kfdhdb.ub4spare[5]: 0 ; 0×110: 0×00000000
kfdhdb.ub4spare[6]: 0 ; 0×114: 0×00000000
kfdhdb.ub4spare[7]: 0 ; 0×118: 0×00000000
kfdhdb.ub4spare[8]: 0 ; 0x11c: 0×00000000
kfdhdb.ub4spare[9]: 0 ; 0×120: 0×00000000
kfdhdb.ub4spare[10]: 0 ; 0×124: 0×00000000
kfdhdb.ub4spare[11]: 0 ; 0×128: 0×00000000
kfdhdb.ub4spare[12]: 0 ; 0x12c: 0×00000000
kfdhdb.ub4spare[13]: 0 ; 0×130: 0×00000000
kfdhdb.ub4spare[14]: 0 ; 0×134: 0×00000000
kfdhdb.ub4spare[15]: 0 ; 0×138: 0×00000000
kfdhdb.ub4spare[16]: 0 ; 0x13c: 0×00000000
kfdhdb.ub4spare[17]: 0 ; 0×140: 0×00000000
kfdhdb.ub4spare[18]: 0 ; 0×144: 0×00000000
kfdhdb.ub4spare[19]: 0 ; 0×148: 0×00000000
kfdhdb.ub4spare[20]: 0 ; 0x14c: 0×00000000
kfdhdb.ub4spare[21]: 0 ; 0×150: 0×00000000
kfdhdb.ub4spare[22]: 0 ; 0×154: 0×00000000
kfdhdb.ub4spare[23]: 0 ; 0×158: 0×00000000
kfdhdb.ub4spare[24]: 0 ; 0x15c: 0×00000000
kfdhdb.ub4spare[25]: 0 ; 0×160: 0×00000000
kfdhdb.ub4spare[26]: 0 ; 0×164: 0×00000000
kfdhdb.ub4spare[27]: 0 ; 0×168: 0×00000000
kfdhdb.ub4spare[28]: 0 ; 0x16c: 0×00000000
kfdhdb.ub4spare[29]: 0 ; 0×170: 0×00000000
kfdhdb.ub4spare[30]: 0 ; 0×174: 0×00000000
kfdhdb.ub4spare[31]: 0 ; 0×178: 0×00000000
kfdhdb.ub4spare[32]: 0 ; 0x17c: 0×00000000
kfdhdb.ub4spare[33]: 0 ; 0×180: 0×00000000
kfdhdb.ub4spare[34]: 0 ; 0×184: 0×00000000
kfdhdb.ub4spare[35]: 0 ; 0×188: 0×00000000
kfdhdb.ub4spare[36]: 0 ; 0x18c: 0×00000000
kfdhdb.ub4spare[37]: 0 ; 0×190: 0×00000000
kfdhdb.ub4spare[38]: 0 ; 0×194: 0×00000000
kfdhdb.ub4spare[39]: 254613 ; 0×198: 0x0003e295
kfdhdb.ub4spare[40]: 0 ; 0x19c: 0×00000000
kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0×00000000
kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0×00000000
kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0×00000000
kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0×00000000
kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0×00000000
kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0×00000000
kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0×00000000
kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0×00000000
kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0×00000000
kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0×00000000
kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0×00000000
kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0×00000000
kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0×00000000
kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0×00000000
kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0×00000000
kfdhdb.acdb.ents: 0 ; 0x1dc: 0×0000
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 0×0000 on kfdhdb.acdb.ub2spare field
# $GRID_HOME/bin/kfed read /dev/raw/raw2
kfbh.endian: 1 ; 0×000: 0×01
kfbh.hard: 130 ; 0×001: 0×82
kfbh.type: 1 ; 0×002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0×003: 0×01
kfbh.block.blk: 0 ; 0×004: blk=0
kfbh.block.obj: 2147483648 ; 0×008: disk=0
kfbh.check: 945480537 ; 0x00c: 0x385ae359
kfbh.fcn.base: 0 ; 0×010: 0×00000000
kfbh.fcn.wrap: 0 ; 0×014: 0×00000000
kfbh.spare1: 0 ; 0×018: 0×00000000
kfbh.spare2: 0 ; 0x01c: 0×00000000
kfdhdb.driver.provstr:ORCLDISK ; 0×000: length=32
kfdhdb.driver.reserved[0]: 33686018 ; 0×008: 0×02020202
kfdhdb.driver.reserved[1]: 33686018 ; 0x00c: 0×02020202
kfdhdb.driver.reserved[2]: 33686018 ; 0×010: 0×02020202
kfdhdb.driver.reserved[3]: 33686018 ; 0×014: 0×02020202
kfdhdb.driver.reserved[4]: 33686018 ; 0×018: 0×02020202
kfdhdb.driver.reserved[5]: 33686018 ; 0x01c: 0×02020202
kfdhdb.compat: 186646528 ; 0×020: 0x0b200000
kfdhdb.dsknum: 0 ; 0×024: 0×0000
kfdhdb.grptyp: 1 ; 0×026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER
kfdhdb.dskname: DATA_0000 ; 0×028: length=9
kfdhdb.grpname: DATA ; 0×048: length=4
kfdhdb.fgname: DATA_0000 ; 0×068: length=9
kfdhdb.capname: ; 0×088: length=0
kfdhdb.crestmp.hi: 32983952 ; 0x0a8: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.crestmp.lo: 3911025664 ; 0x0ac: USEC=0×0 MSEC=0×361 SECS=0×11 MINS=0x3a
kfdhdb.mntstmp.hi: 32984464 ; 0x0b0: HOUR=0×10 DAYS=0xc MNTH=0×3 YEAR=0x7dd
kfdhdb.mntstmp.lo: 3973637120 ; 0x0b4: USEC=0×0 MSEC=0×239 SECS=0xd MINS=0x3b
kfdhdb.secsize: 512 ; 0x0b8: 0×0200
kfdhdb.blksize: 4096 ; 0x0ba: 0×1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0×00100000
kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80
kfdhdb.dsksize: 512000 ; 0x0c4: 0x0007d000
kfdhdb.pmcnt: 6 ; 0x0c8: 0×00000006
kfdhdb.fstlocn: 1 ; 0x0cc: 0×00000001
kfdhdb.altlocn: 2 ; 0x0d0: 0×00000002
kfdhdb.f1b1locn: 2 ; 0x0d4: 0×00000002
kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0×0000
kfdhdb.redomirrors[1]: 0 ; 0x0da: 0×0000
kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0×0000
kfdhdb.redomirrors[3]: 0 ; 0x0de: 0×0000
kfdhdb.dbcompat: 168820736 ; 0x0e0: 0x0a100000
kfdhdb.grpstmp.hi: 32983952 ; 0x0e4: HOUR=0×10 DAYS=0x1c MNTH=0×2 YEAR=0x7dd
kfdhdb.grpstmp.lo: 3909777408 ; 0x0e8: USEC=0×0 MSEC=0x29e SECS=0×10 MINS=0x3a
kfdhdb.vfstart: 0 ; 0x0ec: 0×00000000
kfdhdb.vfend: 0 ; 0x0f0: 0×00000000
kfdhdb.spfile: 0 ; 0x0f4: 0×00000000
kfdhdb.spfflg: 0 ; 0x0f8: 0×00000000
kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0×00000000
kfdhdb.ub4spare[1]: 0 ; 0×100: 0×00000000
kfdhdb.ub4spare[2]: 0 ; 0×104: 0×00000000
kfdhdb.ub4spare[3]: 0 ; 0×108: 0×00000000
kfdhdb.ub4spare[4]: 0 ; 0x10c: 0×00000000
kfdhdb.ub4spare[5]: 0 ; 0×110: 0×00000000
kfdhdb.ub4spare[6]: 0 ; 0×114: 0×00000000
kfdhdb.ub4spare[7]: 0 ; 0×118: 0×00000000
kfdhdb.ub4spare[8]: 0 ; 0x11c: 0×00000000
kfdhdb.ub4spare[9]: 0 ; 0×120: 0×00000000
kfdhdb.ub4spare[10]: 0 ; 0×124: 0×00000000
kfdhdb.ub4spare[11]: 0 ; 0×128: 0×00000000
kfdhdb.ub4spare[12]: 0 ; 0x12c: 0×00000000
kfdhdb.ub4spare[13]: 0 ; 0×130: 0×00000000
kfdhdb.ub4spare[14]: 0 ; 0×134: 0×00000000
kfdhdb.ub4spare[15]: 0 ; 0×138: 0×00000000
kfdhdb.ub4spare[16]: 0 ; 0x13c: 0×00000000
kfdhdb.ub4spare[17]: 0 ; 0×140: 0×00000000
kfdhdb.ub4spare[18]: 0 ; 0×144: 0×00000000
kfdhdb.ub4spare[19]: 0 ; 0×148: 0×00000000
kfdhdb.ub4spare[20]: 0 ; 0x14c: 0×00000000
kfdhdb.ub4spare[21]: 0 ; 0×150: 0×00000000
kfdhdb.ub4spare[22]: 0 ; 0×154: 0×00000000
kfdhdb.ub4spare[23]: 0 ; 0×158: 0×00000000
kfdhdb.ub4spare[24]: 0 ; 0x15c: 0×00000000
kfdhdb.ub4spare[25]: 0 ; 0×160: 0×00000000
kfdhdb.ub4spare[26]: 0 ; 0×164: 0×00000000
kfdhdb.ub4spare[27]: 0 ; 0×168: 0×00000000
kfdhdb.ub4spare[28]: 0 ; 0x16c: 0×00000000
kfdhdb.ub4spare[29]: 0 ; 0×170: 0×00000000
kfdhdb.ub4spare[30]: 0 ; 0×174: 0×00000000
kfdhdb.ub4spare[31]: 0 ; 0×178: 0×00000000
kfdhdb.ub4spare[32]: 0 ; 0x17c: 0×00000000
kfdhdb.ub4spare[33]: 0 ; 0×180: 0×00000000
kfdhdb.ub4spare[34]: 0 ; 0×184: 0×00000000
kfdhdb.ub4spare[35]: 0 ; 0×188: 0×00000000
kfdhdb.ub4spare[36]: 0 ; 0x18c: 0×00000000
kfdhdb.ub4spare[37]: 0 ; 0×190: 0×00000000
kfdhdb.ub4spare[38]: 0 ; 0×194: 0×00000000
kfdhdb.ub4spare[39]: 0 ; 0×198: 0×00000000
kfdhdb.ub4spare[40]: 0 ; 0x19c: 0×00000000
kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0×00000000
kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0×00000000
kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0×00000000
kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0×00000000
kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0×00000000
kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0×00000000
kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0×00000000
kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0×00000000
kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0×00000000
kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0×00000000
kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0×00000000
kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0×00000000
kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0×00000000
kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0×00000000
kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0×00000000
kfdhdb.acdb.ents: 0 ; 0x1dc: 0×0000
kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0×0000
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.
AMDU = ASM Metadata Dump Utility