Repair of oracle11gASM Disk Head damage (asm repair 2)
-- Compile KFED
[Oracle @ rac2 lib] $ cd $ ORACLE_HOME/rdbms/lib
[Oracle @ rac2 lib] $ pwd
/U01/app/oracle/product/10.2.0/db_1/rdbms/lib
[Oracle @ rac2 lib] $ make-f ins_rdbms.mk ikfed
[Oracle @ rac1 ~] $ Kfed read/dev/oracleasm/disks/VOL1
Kfbh. endian: 1; 0x000: 0x01
Kfbh. hard: 130; 0x001: 0x82
Kfbh. type: 1; 0x002: KFBTYP_DISKHEAD -- the disk header is always KFBTYP_DISKHEAD.
Kfbh. datfmt: 1; 0x003: 0x01
Kfbh. block. blk: 0; 0x004: T = 0 NUMB = 0x0
Kfbh. block. obj: 2147483648; 0x008: TYPE = 0x8 NUMB = 0x0
Kfbh. check: 1464188596; 0x00c: 0x5745beb4
Kfbh. fcn. base: 0; 0x10: 0x00000000
Kfbh. fcn. wrap: 0; 0x014: 0x00000000
Kfbh. spare1: 0; 0x018: 0x00000000
Kfbh. spare2: 0; 0x01c: 0x00000000
Kfdhdb. driver. provstr: ORCLDISKVOL1; 0x000: length = 12
Kfdhdb. driver. reserved [0]: 827084630; 0x008: 0x314c4f56
Kfdhdb. driver. reserved [1]: 0; 0x00c: 0x00000000
Kfdhdb. driver. reserved [2]: 0; 0x010: 0x00000000
Kfdhdb. driver. reserved [3]: 0; 0x014: 0x00000000
Kfdhdb. driver. reserved [4]: 0; 0x018: 0x00000000
Kfdhdb. driver. reserved [5]: 0; 0x01c: 0x00000000
Kfdhdb. compat: 186646528; 0x020: 0x0b200000
Kfdhdb. dsknum: 0; 0x024: 0x0000
Kfdhdb. grptyp: 1; 0x026: KFDGTP_EXTERNAL
Kfdhdb. hdrsts: 3; 0x027: KFDHDR_MEMBER
Kfdhdb. dskname: VOL1; 0x028: length = 4
Kfdhdb. kgname: ASMDG; 0x048: length = 5
Kfdhdb. fgname: VOL1; 0x068: length = 4
Kfdhdb. capname:; 0x088: length = 0
Kfdhdb. crestmp. hi: 33003570; 0x0a8: HOUR = 0x12 DAYS = 0x1 MNTH = 0x6 YEAR = 0x7de
Kfdhdb. crestmp. lo: 3991771136; 0x0ac: USEC = 0x0 MSEC = 0x366 SECS = 0x1e MINS = 0x3b
Kfdhdb. mntstmp. hi: 33005233; 0x0b0: HOUR = 0x11 DAYS = 0x15 MNTH = 0x7 YEAR = 0x7de
Kfdhdb. mntstmp. lo: 3079015424; 0x0b4: USEC = 0x0 MSEC = 0x183 SECS = 0x38 MINS = 0x2d
Kfdhdb. secsize: 512; 0x0b8: 0x0200
Kfdhdb. blksize: 4096; 0x0ba: 0x1000
Kfdhdb. ausize: 1048576; 0x0bc: 0x00100000
Kfdhdb. mfact: 113792; 0x0c0: 0x0001bc80
Kfdhdb. dsksize: 10236; 0x0c4: 0x000027fc -- number of AU contained in the disk. Kfdhdb. ausize * dsksize_kfdhdb = disk size
Kfdhdb. pmcnt: 2; 0x0c8: 0x00000002 -- physical address space of AU.
Kfdhdb. fstlocn: 1; 0x0cc: 0x00000001 -- after the first AU
Kfdhdb. altlocn: 2; 0x0d0: 0x00000002 -- indicates that the file directory has been
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. kgstmp. hi: 33003570; 0x0e4: HOUR = 0x12 DAYS = 0x1 MNTH = 0x6 YEAR = 0x7de
Kfdhdb. kgstmp. lo: 3991513088; 0x0e8: USEC = 0x0 MSEC = 0x26a SECS = 0x1e MINS = 0x3b
Kfdhdb. vfstart: 0; 0x0ec: 0x00000000
Kfdhdb. vfend: 0; 0x0f0: 0x00000000
Kfdhdb. spfile: 33; 0x0f4: 0x00000021
Kfdhdb. spfflg: 1; 0x0f8: 0x00000001
Kfdhdb. ub4spare [0]: 0; 0x0fc: 0x00000000
Kfdhdb. ub4spare [1]: 0; 0x100: 0x00000000
Kfdhdb. ub4spare [2]: 0; 0x104: 0x00000000
Kfdhdb. ub4spare [2]: 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; 0x1 AC: 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; 0x1 DC: 0x0000
Kfdhdb. acdb. ub2spare: 0; 0x1de: 0x0000
-- How can I replace these items on the Internet...
[Oracle @ rac1 ~] $ Kfed read/dev/oracleasm/disks/VOL1> vol1.header
[Oracle @ rac1 ~] $ Kfed read/dev/oracleasm/disks/VOL2> vol2.header
[Oracle @ rac1 ~] $ Diff vol1.header vol2.header
6, 7c6, 7
<Kfbh. block. obj: 2147483648; 0x008: TYPE = 0x8 NUMB = 0x0
<Kfbh. check: 1464188596; 0x00c: 0x5745beb4
---
& Gt; kfbh. block. obj: 2147483649; 0x008: TYPE = 0x8 NUMB = 0x1
> Kfbh. check: 1413856918; 0x00c: 0x5445be96
12, 13c12, 13
<Kfdhdb. driver. provstr: ORCLDISKVOL1; 0x000: length = 12
<Kfdhdb. driver. reserved [0]: 827084630; 0x008: 0x314c4f56
---
> Kfdhdb. driver. provstr: ORCLDISKVOL2; 0x000: length = 12
> Kfdhdb. driver. reserved [0]: 843861846; 0x008: 0x324c4f56
20c20
<Kfdhdb. dsknum: 0; 0x024: 0x0000
---
> Kfdhdb. dsknum: 1; 0x024: 0x0001
23c23
<Kfdhdb. dskname: VOL1; 0x028: length = 4
---
> Kfdhdb. dskname: VOL2; 0x028: length = 4
25c25
<Kfdhdb. fgname: VOL1; 0x068: length = 4
---
> Kfdhdb. fgname: VOL2; 0x068: length = 4
39c39
<Kfdhdb. f1b1locn: 2; 0x0d4: 0x00000002
---
> Kfdhdb. f1b1locn: 0; 0x0d4: 0x00000000
49, 50c49, 50
<Kfdhdb. spfile: 33; 0x0f4: 0x00000021
<Kfdhdb. spfflg: 1; 0x0f8: 0x00000001
---
> Kfdhdb. spfile: 0; 0x0f4: 0x00000000
> Kfdhdb. spfflg: 0; 0x0f8: 0x00000000
--####################################### ##################################
-- Find the position http://www.xifenfei.com/4071.html for spfile
[Oracle @ rac1 ~] $
[Oracle @ rac1 ~] $ Kfed dev =/dev/oracleasm/disks/VOL2 op = READ | egrep "kfdhdb. sp | ausize"
Kfdhdb. ausize: 1048576; 0x0bc: 0x00100000
Kfdhdb. spfile: 0; 0x0f4: 0x00000000
Kfdhdb. spfflg: 0; 0x0f8: 0x00000000
[Oracle @ rac1 ~] $ Kfed dev =/dev/oracleasm/disks/VOL1 op = READ | egrep "kfdhdb. sp | ausize"
Kfdhdb. ausize: 1048576; 0x0bc: 0x00100000
Kfdhdb. spfile: 33; 0x0f4: 0x00000021
Kfdhdb. spfflg: 1; 0x0f8: 0x00000001
--####################################### ##################################
3. Use kfed repair to modify the damaged asm disk header
Rac1-> kfed repair '/dev/raw/raw1'
Rac1-> kfed read/dev/raw/raw1 blknum = 0
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: T = 0 NUMB = 0x0
Kfbh. block. obj: 2147483648; 0x008: TYPE = 0x8 NUMB = 0x0
Kfbh. check: 883602253; 0x00c: 0x34aab34d
Kfbh. fcn. base: 0; 0x10: 0x00000000
Kfbh. fcn. wrap: 0; 0x014: 0x00000000
Kfbh. spare1: 0; 0x018: 0x00000000
Kfbh. spare2: 0; 0x01c: 0x00000000
--####################################### ##################################
4. Use kfed merge to restore the asm disk header
Rac1-> dd if =/dev/zero of =/dev/raw/raw1 bs = 4096 count = 1
1 + 0 records in
1 + 0 records out
Rac1-> kfed read/dev/raw/raw1 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: T = 0 NUMB = 0x0
Kfbh. block. obj: 0; 0x008: TYPE = 0x0 NUMB = 0x0
Kfbh. check: 0; 0x00c: 0x00000000
Kfbh. fcn. base: 0; 0x10: 0x00000000
Kfbh. fcn. wrap: 0; 0x014: 0x00000000
Kfbh. spare1: 0; 0x018: 0x00000000
Kfbh. spare2: 0; 0x01c: 0x00000000
Http://www.itpub.net/thread-1597605-1-1.html specific information reference here:
[Oracle @ rac1 ~] $ Kfod disk = all
--------------------------------------------------------------------------------
Disk Size Path User Group
========================================================== ==========================================================
1: 10236 Mb ORCL: VOL1 <unknown>
2: 10236 Mb ORCL: VOL2 <unknown>
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME
========================================================== ==========================================================
+ ASM/orac/orahome/app/11.2.0/grid
[Oracle @ rac1 ~] $