$cd $ORACLE_HOME/rdbms/lib
$make -f ins_rdbms.mk ikfedkfed帮助信息
[orgrid@ohs1 ~]$ kfed
as/mlib ASM Library [asmlib='lib'] aun/um AU number to examine or update [AUNUM=number] aus/z Allocation Unit size in bytes [AUSZ=number] blkn/um Block number to examine or update [BLKNUM=number] blks/z Metadata block size in bytes [BLKSZ=number] ch/ksum Update checksum before each write [CHKSUM=YES/NO] cn/t Count of AUs to process [CNT=number] de/v ASM device to examine or update [DEV=string] dm/pall Don't suppress repeated lines when dumping corrupt blocks [DMPALL=YES/NO] o/p KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT] p/rovnm Name for provisioning purposes [PROVNM=string] s/eek AU number to seek to [SEEK=number] te/xt File name for translated block text [TEXT=string] ty/pe ASM metadata block type number [TYPE=number] v/erb Verbose execution [verbose=YES|NO] [orgrid@ohs1 ~]$ [orgrid@ohs1 ~]$aun --要读取的AU number,默认是AU0或者是磁盘的开始位置
aus --AU大小,默认是1048576(1MB)。如果AU的大小不是默认的大小需指定
blkn --要读取的块编号,默认是0
注意如果AU大小不是默认值,需要指定AU大小
kfed read <your_device> AUSZ=<au_size>
kfed读取ASM磁盘头部
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1
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: 555685456 ; 0x00c: 0x211f1650 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: ORCLDISKASM1 ; 0x000: length=12 kfdhdb.driver.reserved[0]: 827151169 ; 0x008: 0x314d5341 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: 202375168 ; 0x020: 0x0c100000 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: ASM1 ; 0x028: length=4 kfdhdb.grpname: SYSTEMDG ; 0x048: length=8 kfdhdb.fgname: ASM1 ; 0x068: length=4 kfdhdb.capname: ; 0x088: length=0 kfdhdb.crestmp.hi: 33039490 ; 0x0a8: HOUR=0x2 DAYS=0x4 MNTH=0x9 YEAR=0x7e0 kfdhdb.crestmp.lo: 1108346880 ; 0x0ac: USEC=0x0 MSEC=0x2 SECS=0x21 MINS=0x10 kfdhdb.mntstmp.hi: 33039521 ; 0x0b0: HOUR=0x1 DAYS=0x5 MNTH=0x9 YEAR=0x7e0 kfdhdb.mntstmp.lo: 2443356160 ; 0x0b4: USEC=0x0 MSEC=0xaa SECS=0x1a MINS=0x24 kfdhdb.secsize: 512 ; 0x0b8: 0x0200 kfdhdb.blksize: 4096 ; 0x0ba: 0x1000 kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80 kfdhdb.dsksize: 8189 ; 0x0c4: 0x00001ffd kfdhdb.pmcnt: 3 ; 0x0c8: 0x00000003 kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001 kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002 kfdhdb.f1b1locn: 10 ; 0x0d4: 0x0000000a 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: 33039490 ; 0x0e4: HOUR=0x2 DAYS=0x4 MNTH=0x9 YEAR=0x7e0 kfdhdb.grpstmp.lo: 1108274176 ; 0x0e8: USEC=0x0 MSEC=0x3bb SECS=0x20 MINS=0x10 kfdhdb.vfstart: 224 ; 0x0ec: 0x000000e0 kfdhdb.vfend: 256 ; 0x0f0: 0x00000100 kfdhdb.spfile: 59 ; 0x0f4: 0x0000003b kfdhdb.spfflg: 1 ; 0x0f8: 0x00000001 kfdhdb.flags: 1 ; 0x0fc: 0x00000001 kfdhdb.f1b1fcn.base: 0 ; 0x100: 0x00000000 kfdhdb.f1b1fcn.wrap: 0 ; 0x104: 0x00000000 kfdhdb.ub4spare[0]: 0 ; 0x108: 0x00000000 kfdhdb.ub4spare[1]: 0 ; 0x10c: 0x00000000 kfdhdb.ub4spare[2]: 0 ; 0x110: 0x00000000 ... kfdhdb.ub4spare[50]: 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 [orgrid@ohs1 ~]$
kfed读取指定的AU和块
[orgrid@ohs1 ~]$ kfed read dev=/dev/oracleasm/disks/ASM1 aunum=256 blknum=3
kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 8 ; 0x002: KFBTYP_CHNGDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 11267 ; 0x004: blk=11267 kfbh.block.obj: 3 ; 0x008: file=3 kfbh.check: 17346484 ; 0x00c: 0x0108afb4 kfbh.fcn.base: 951 ; 0x010: 0x000003b7 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfracdb.aba.seq: 0 ; 0x000: 0x00000000 kfracdb.aba.blk: 514 ; 0x004: 0x00000202 kfracdb.ents: 0 ; 0x008: 0x0000 kfracdb.ub2spare: 0 ; 0x00a: 0x0000 [orgrid@ohs1 ~]$
kfed异常的输出
只有当设备是ASM磁盘组的成员时,才会输出正确的格式,下面的输出是读取还未使用的盘
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM4
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: 877482817 ; 0x00c: 0x344d5341 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 000000000 00000000 00000000 00000000 344D5341 [............ASM4] 000000010 00000000 00000000 00000000 00000000 [................] 000000020 4C43524F 4B534944 344D5341 00000000 [ORCLDISKASM4....] 000000030 00000000 00000000 00000000 00000000 [................] Repeat 252 times KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0] [orgrid@ohs1 ~]$
kfed write
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1 text=ASM_HD.txt
[orgrid@ohs1 ~]$ kfed form /dev/oracleasm/disks/ASM1
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1
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 000000000 00000000 00000000 00000000 00000000 [................] Repeat 255 times KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0][orgrid@ohs1 ~]$ kfed write /dev/oracleasm/disks/ASM1 text=ASM_HD.txt
[orgrid@ohs1 ~]$ kfed merge /dev/oracleasm/disks/ASM1 text=ASM_HD.txt
这里用kfed write或kfed merge都可以
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1|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 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 2058004035 ; 0x00c: 0x7aaaa643 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: ORCLDISKASM1 ; 0x000: length=12 kfdhdb.driver.reserved[0]: 827151169 ; 0x008: 0x314d5341 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: 202375168 ; 0x020: 0x0c100000 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: ASM1 ; 0x028: length=4 kfdhdb.grpname: SYSTEMDG ; 0x048: length=8 kfdhdb.fgname: ASM1 ; 0x068: length=4 kfdhdb.capname: ; 0x088: length=0 kfdhdb.crestmp.hi: 33039490 ; 0x0a8: HOUR=0x2 DAYS=0x4 MNTH=0x9 YEAR=0x7e0 kfdhdb.crestmp.lo: 1108346880 ; 0x0ac: USEC=0x0 MSEC=0x2 SECS=0x21 MINS=0x10 kfdhdb.mntstmp.hi: 33039538 ; 0x0b0: HOUR=0x12 DAYS=0x5 MNTH=0x9 YEAR=0x7e0 kfdhdb.mntstmp.lo: 3390511104 ; 0x0b4: USEC=0x0 MSEC=0x1c6 SECS=0x21 MINS=0x32 kfdhdb.secsize: 512 ; 0x0b8: 0x0200 kfdhdb.blksize: 4096 ; 0x0ba: 0x1000 kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80 kfdhdb.dsksize: 8189 ; 0x0c4: 0x00001ffd kfdhdb.pmcnt: 3 ; 0x0c8: 0x00000003 kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001 kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002 kfdhdb.f1b1locn: 10 ; 0x0d4: 0x0000000a 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 [orgrid@ohs1 ~]$
kfed find
用来诊断并输出指定AU中的块的类型
[orgrid@ohs1 ~]$ kfed find /dev/oracleasm/disks/ASM1 aun=0
Block 0 has type 1[orgrid@ohs1 ~]$ kfed find /dev/oracleasm/disks/ASM1 aun=1
Block 256 has type 17 Block 257 has type 17 ... ... ... Block 507 has type 13 Block 508 has type 13 Block 509 has type 13 Block 510 has type 1 Block 511 has type 19[orgrid@ohs1 ~]$ kfed find /dev/oracleasm/disks/ASM1 aun=2
Block 512 has type 6 Block 513 has type 6 ...
kfed struct
这个可以查看type和struct的
[orgrid@ohs1 ~]$ kfed struct
type null size 0 bytes align 0 bytes type oratext size 1 bytes align 1 bytes type ub1 size 1 bytes align 1 bytes type ub2 size 2 bytes align 2 bytes type ub4 size 4 bytes align 4 bytes type sb1 size 1 bytes align 1 bytes type sb2 size 2 bytes align 2 bytes type sb4 size 4 bytes align 4 bytes struct kfcn size 8 bytes align 4 bytes type kfrs size 1 bytes align 1 bytes type kftslo size 4 bytes align 4 bytes type kftshi size 4 bytes align 4 bytes struct kfts size 8 bytes align 4 bytes type kfsts size 4 bytes align 4 bytes type kfgpconttype size 1 bytes align 1 bytes type kfcop size 2 bytes align 2 bytes type kfobj size 4 bytes align 4 bytes type kfblk size 4 bytes align 4 bytes struct kfbl size 8 bytes align 4 bytes type kfbtyp size 1 bytes align 1 bytes struct kfblnk size 4 bytes align 2 bytes type kfxpf size 1 bytes align 1 bytes struct kfxp size 8 bytes align 4 bytes struct kfbh size 32 bytes align 4 bytes struct kfraba size 8 bytes align 4 bytes struct kfracdb size 12 bytes align 4 bytes type kfrts size 4 bytes align 4 bytes struct kfracdb2 size 20 bytes align 4 bytes struct kfracdc size 84 bytes align 4 bytes type kfrvbyte size 1 bytes align 1 bytes struct kfrlge size 12 bytes align 4 bytes struct kfrvan size 12 bytes align 4 bytes struct kfrvbn size 8 bytes align 4 bytes type kfrcdf size 2 bytes align 2 bytes struct kfrbcd size 28 bytes align 4 bytes struct kfrbwr size 16 bytes align 4 bytes struct kfrbwr1 size 24 bytes align 4 bytes struct kfrbwr2 size 32 bytes align 4 bytes struct kfrbwr3 size 40 bytes align 4 bytes struct kfrcbg size 12 bytes align 4 bytes type bgdata size 0 bytes align 0 bytes struct kfrcrb10 size 12 bytes align 4 bytes struct kfrcrb size 2 bytes align 2 bytes struct kfrcdt size 8 bytes align 4 bytes struct kfrcrbv size 16 bytes align 4 bytes struct kfrcrdt size 4 bytes align 2 bytes type kffbin size 4 bytes align 4 bytes struct kffban size 8 bytes align 4 bytes type kffdin size 4 bytes align 4 bytes struct kffdan size 8 bytes align 4 bytes struct kffbnd size 12 bytes align 4 bytes struct kffdnd size 36 bytes align 4 bytes struct kffden size 16 bytes align 4 bytes struct kffvda size 20 bytes align 4 bytes type kffdhf size 1 bytes align 1 bytes struct kffdhb size 16 bytes align 4 bytes struct kffdhe size 12 bytes align 4 bytes struct kfzdan size 4 bytes align 2 bytes type kfdisk size 2 bytes align 2 bytes type kfdmask size 1 bytes align 1 bytes type kfsphflg size 4 bytes align 4 bytes type kfdmode size 1 bytes align 1 bytes type kfdhdr size 1 bytes align 1 bytes type kfdsta size 1 bytes align 1 bytes type kfdgtp size 1 bytes align 1 bytes type kfdasz size 1 bytes align 1 bytes type kfdvasz size 1 bytes align 1 bytes type kfdcl size 1 bytes align 1 bytes type kfdzn size 1 bytes align 1 bytes struct kfddrb size 32 bytes align 4 bytes struct kfdhdb size 480 bytes align 4 bytes type kfdat0 size 4 bytes align 4 bytes type kfdat1 size 4 bytes align 4 bytes type kfdat2 size 4 bytes align 4 bytes struct kfdata size 8 bytes align 4 bytes struct kfdatf size 8 bytes align 4 bytes union kfdate size 8 bytes align 4 bytes struct kfdatt size 4 bytes align 2 bytes struct kfdatt10 size 8 bytes align 2 bytes struct kfdatb size 40 bytes align 4 bytes struct kfdatb10 size 40 bytes align 4 bytes type kfdfsf size 1 bytes align 1 bytes struct kfdatrbk size 8 bytes align 4 bytes struct kfdfsb size 24 bytes align 4 bytes struct kfdfsb10 size 8 bytes align 4 bytes type kfdfse0 size 1 bytes align 1 bytes struct kfdfse size 1 bytes align 1 bytes struct kfdfse10 size 4 bytes align 2 bytes struct kfdcls size 16 bytes align 4 bytes struct kfdzon size 80 bytes align 4 bytes struct kfdsLoc size 12 bytes align 4 bytes struct kfdsDdLoc size 16 bytes align 4 bytes type kfddchfl size 1 bytes align 1 bytes struct kfddde size 448 bytes align 4 bytes struct kfdvan size 52 bytes align 4 bytes struct kfdvaa size 24 bytes align 4 bytes struct kfdval size 28 bytes align 4 bytes struct kfdvap size 8 bytes align 4 bytes struct kfdvav size 4 bytes align 2 bytes struct kfdvaz size 8 bytes align 4 bytes struct kfdvfn size 12 bytes align 4 bytes struct kfdvfv size 4 bytes align 2 bytes struct kfdvfc size 12 bytes align 4 bytes struct kfdvfz size 4 bytes align 2 bytes struct kfdvda size 132 bytes align 4 bytes struct kfdvdad size 136 bytes align 4 bytes struct kfdvdads size 140 bytes align 4 bytes struct kfdvdu size 16 bytes align 4 bytes struct kfdvdz size 12 bytes align 4 bytes struct kfdvdt size 8 bytes align 4 bytes struct kfdvdsl size 20 bytes align 4 bytes struct kfdvdut size 8 bytes align 4 bytes struct kfdvdrt size 8 bytes align 4 bytes struct kfdvdrd size 12 bytes align 4 bytes struct kfdvrtm size 12 bytes align 4 bytes struct kfdvdslot size 4 bytes align 2 bytes struct kfdvdcf size 4 bytes align 2 bytes struct kfdase size 28 bytes align 2 bytes struct kfdasc size 40 bytes align 4 bytes struct kfdDrtimerCod size 1260 bytes align 4 bytes type kffile size 4 bytes align 4 bytes struct kffn size 8 bytes align 4 bytes type kfffdf size 1 bytes align 1 bytes struct kfffdb size 1184 bytes align 4 bytes struct kfffde size 8 bytes align 4 bytes struct kffixb size 12 bytes align 4 bytes struct kffixe size 8 bytes align 4 bytes struct kfflhe size 28 bytes align 4 bytes type kfdscf size 1 bytes align 1 bytes struct kfdscd size 8 bytes align 4 bytes struct kfdsc size 16 bytes align 4 bytes type kfdpoco size 1 bytes align 1 bytes struct kfdpoce size 24 bytes align 4 bytes struct kfdpoc size 24 bytes align 4 bytes type kffrbkf size 2 bytes align 2 bytes struct kffrbk10 size 32 bytes align 4 bytes struct kffrbk size 72 bytes align 4 bytes struct kffvbn size 16 bytes align 4 bytes struct kffvba size 20 bytes align 4 bytes struct kffvdn size 44 bytes align 4 bytes struct kffvdo size 16 bytes align 4 bytes struct kffvdp size 8 bytes align 4 bytes struct kffvfn size 24 bytes align 4 bytes struct kffvfa size 68 bytes align 4 bytes struct kffvfax size 72 bytes align 4 bytes struct kffvfaxl size 76 bytes align 4 bytes struct kffvfaxl2 size 120 bytes align 4 bytes struct kffvpa size 40 bytes align 4 bytes struct kffvfs size 16 bytes align 4 bytes struct kffvfu size 12 bytes align 4 bytes struct kffvfw size 8 bytes align 4 bytes struct kffvfx size 12 bytes align 4 bytes struct kffvln size 4 bytes align 4 bytes struct kffvlu size 32 bytes align 4 bytes struct kffvin size 8 bytes align 4 bytes struct kffvix size 8 bytes align 2 bytes type kffvalf size 1 bytes align 1 bytes struct kffval size 12 bytes align 4 bytes struct kffvcm size 8 bytes align 4 bytes struct kffvum size 8 bytes align 4 bytes struct kffvbs size 4 bytes align 4 bytes struct kffvxs size 40 bytes align 4 bytes struct kffvfz size 12 bytes align 4 bytes struct kffvzn size 4 bytes align 2 bytes struct kffzrbk size 16 bytes align 4 bytes struct kffvfmtsz size 4 bytes align 4 bytes struct kffvreuse size 12 bytes align 4 bytes type kftmdf size 4 bytes align 4 bytes struct kftmta size 120 bytes align 4 bytes struct kftmde size 136 bytes align 4 bytes struct kftvta size 92 bytes align 4 bytes struct kftvtu size 48 bytes align 4 bytes type kfadef size 1 bytes align 1 bytes type kfaflg size 1 bytes align 1 bytes struct kfanm size 258 bytes align 2 bytes struct kfade size 76 bytes align 4 bytes struct kfavent size 84 bytes align 4 bytes struct kfavcmt size 4 bytes align 4 bytes struct kfacrb size 528 bytes align 4 bytes type kfeflags size 2 bytes align 2 bytes struct kfede size 372 bytes align 4 bytes struct kfevadd size 344 bytes align 4 bytes struct kfevupd size 8 bytes align 2 bytes struct kfevcv size 4 bytes align 4 bytes struct kfsb8 size 12 bytes align 4 bytes struct kfdusde size 24 bytes align 4 bytes struct kfdusvd size 28 bytes align 4 bytes type kfdvasn size 4 bytes align 4 bytes struct kfdvale size 8 bytes align 4 bytes struct kfdvalh size 12 bytes align 4 bytes struct kfdvavlu size 8 bytes align 4 bytes struct kfdvath size 12 bytes align 4 bytes struct kfdvatac size 8 bytes align 4 bytes struct kfdvavtan size 8 bytes align 4 bytes struct kfdvavtac size 44 bytes align 4 bytes struct kfdvavtas size 4 bytes align 2 bytes struct kfdvavtfu size 4 bytes align 2 bytes struct kfdvavtfd size 8 bytes align 2 bytes struct kfdvavtfs size 4 bytes align 2 bytes struct kfdsde size 3956 bytes align 4 bytes struct kfdvsde size 3960 bytes align 4 bytes struct kfzude11 size 4028 bytes align 4 bytes struct kfzude size 4028 bytes align 4 bytes struct kfzudeuv size 308 bytes align 4 bytes struct kfzudeav size 328 bytes align 4 bytes struct kfzgde size 4028 bytes align 4 bytes struct kfzgdeav size 92 bytes align 4 bytes struct kfzgdeuv size 140 bytes align 4 bytes type kfvvdes size 1 bytes align 1 bytes struct kfvvde size 2220 bytes align 4 bytes struct kfvdav size 148 bytes align 4 bytes struct kfvduv size 1140 bytes align 4 bytes struct kfcvlm size 8 bytes align 4 bytes struct kfdpHdrBv0 size 36 bytes align 4 bytes struct kfdpHdrBv1 size 132 bytes align 4 bytes type pstFlag_kfdpHdrBv1 size 4 bytes align 4 bytes struct kfdpHdrPairBv1 size 264 bytes align 4 bytes type kfdpDtaIdx size 4 bytes align 4 bytes type kfdpDtaStatv0 size 4 bytes align 4 bytes struct kfdpDtaEv0 size 48 bytes align 4 bytes type kfdpDtaStatv1 size 2 bytes align 2 bytes type kfdpDtaPart size 2 bytes align 2 bytes struct kfdpDtaEv1 size 48 bytes align 4 bytes struct kfdpHbeatB size 28 bytes align 4 bytes struct kfdsHdrB size 12 bytes align 4 bytes type kfgrbs size 1 bytes align 1 bytes struct kfgrb size 12 bytes align 4 bytes struct kfspbals size 268 bytes align 4 bytes struct kfsphcv size 8 bytes align 4 bytes struct kfddhcv size 32 bytes align 1 bytes struct kfzpdb size 4064 bytes align 4 bytes struct kfzpvba size 32 bytes align 4 bytes struct kfzpvbu size 528 bytes align 4 bytes struct kfzpfbu size 12 bytes align 4 bytes
kfed form,kfed repair
这个会把磁盘头部格式化掉,op=repair可以修复磁盘组的头部
[orgrid@ohs1 ~]$ kfed form /dev/oracleasm/disks/ASM1
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1
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 000000000 00000000 00000000 00000000 00000000 [................] Repeat 255 times KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0][orgrid@ohs1 ~]$ kfed repair /dev/oracleasm/disks/ASM1
[orgrid@ohs1 ~]$ kfed read /dev/oracleasm/disks/ASM1|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 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 2058004035 ; 0x00c: 0x7aaaa643 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: ORCLDISKASM1 ; 0x000: length=12 kfdhdb.driver.reserved[0]: 827151169 ; 0x008: 0x314d5341 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: 202375168 ; 0x020: 0x0c100000 kfdhdb.dsknum: 0 ; 0x024: 0x0000 kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: ASM1 ; 0x028: length=4 kfdhdb.grpname: SYSTEMDG ; 0x048: length=8 kfdhdb.fgname: ASM1 ; 0x068: length=4 kfdhdb.capname: ; 0x088: length=0 kfdhdb.crestmp.hi: 33039490 ; 0x0a8: HOUR=0x2 DAYS=0x4 MNTH=0x9 YEAR=0x7e0 kfdhdb.crestmp.lo: 1108346880 ; 0x0ac: USEC=0x0 MSEC=0x2 SECS=0x21 MINS=0x10 kfdhdb.mntstmp.hi: 33039538 ; 0x0b0: HOUR=0x12 DAYS=0x5 MNTH=0x9 YEAR=0x7e0 kfdhdb.mntstmp.lo: 3390511104 ; 0x0b4: USEC=0x0 MSEC=0x1c6 SECS=0x21 MINS=0x32 kfdhdb.secsize: 512 ; 0x0b8: 0x0200 kfdhdb.blksize: 4096 ; 0x0ba: 0x1000 kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000 kfdhdb.mfact: 113792 ; 0x0c0: 0x0001bc80 kfdhdb.dsksize: 8189 ; 0x0c4: 0x00001ffd kfdhdb.pmcnt: 3 ; 0x0c8: 0x00000003 kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001 kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002 kfdhdb.f1b1locn: 10 ; 0x0d4: 0x0000000a 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 [orgrid@ohs1 ~]$读取目录信息
kfed read /dev/oracleasm/disks/ASM1 aunum=10 blknum=1 (这个块是File Directory的信息)
更新chksum
这个在chksum值不对的时候可以用来纠正
kfed read /dev/oracleasm/disks/ASM1 aun=0 blkn=2 text=/tmp/ASM1_aun0_blkn2.kfedkfed write /dev/oracleasm/disks/ASM1 aun=0 blkn=2 text=/tmp/ASM1_aun0_blkn2.kfed chksum=yes
kfed使dropped的磁盘组online
SQL> select name,path from v$asm_disk;NAME PATH ------------------------------ -------------------- ORCL:ASM4 ASM1 ORCL:ASM1 ASM2 ORCL:ASM2 ASM3 ORCL:ASM3 ASM5 ORCL:ASM5 SQL> SQL> drop diskgroup fra_pgold; Diskgroup dropped. SQL> !asmcmd ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 1048576 16362 9458 0 4729 0 N DATA_PGOLD/ MOUNTED EXTERN N 512 4096 1048576 8189 3712 0 3712 0 Y SYSTEMDG/ ASMCMD> exitSQL> select name,path from v$asm_disk;
NAME PATH ------------------------------ -------------------- ORCL:ASM4 ORCL:ASM2 ASM1 ORCL:ASM1 ASM3 ORCL:ASM3 ASM5 ORCL:ASM5[orgrid@ohs1 ~]$ grep kfdhdb.hdrsts FRA_PGOLD.txt
kfdhdb.hdrsts: 4 ; 0x027: KFDHDR_FORMER
[orgrid@ohs1 ~]$
编辑FRA_PGOLD.txt文件,修改头部状态
变更前
kfdhdb.hdrsts: 4 ; 0x027: KFDHDR_FORMER
变更后
检查头部状态
[orgrid@ohs1 ~]$ grep kfdhdb.hdrsts FRA_PGOLD.txt
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
[orgrid@ohs1 ~]$
SQL> col name for a20
SQL> col path for a20
SQL> select name,path,header_status from v$asm_disk;
NAME PATH HEADER_STATU -------------------- -------------------- ------------ ORCL:ASM4 CANDIDATE ORCL:ASM2 MEMBER ASM1 ORCL:ASM1 MEMBER ASM3 ORCL:ASM3 MEMBER ASM5 ORCL:ASM5 MEMBERSQL> alter diskgroup FRA_PGOLD mount;
Diskgroup altered.
SQL> select name,path,header_status from v$asm_disk;
NAME PATH HEADER_STATU -------------------- -------------------- ------------ ORCL:ASM4 CANDIDATE ASM1 ORCL:ASM1 MEMBER ASM2 ORCL:ASM2 MEMBER ASM3 ORCL:ASM3 MEMBER ASM5 ORCL:ASM5 MEMBERSQL> !asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED NORMAL N 512 4096 1048576 16362 9458 0 4729 0 N DATA_PGOLD/ MOUNTED EXTERN N 512 4096 1048576 4102 4006 0 4006 0 N FRA_PGOLD/ MOUNTED EXTERN N 512 4096 1048576 8189 3712 0 3712 0 Y SYSTEMDG/SQL>
[orgrid@ohs1 ~]$ oracleasm querydisk -p ASM2
Disk "ASM2" is a valid ASM disk
[orgrid@ohs1 ~]$
Reference
Note 1180491.1 - KFED Tool For Windows OS.Note 1346190.1 - KFED.PL for diagnosing - ORA-15036 ORA-15042 ORA-15020 ORA-15033
NOTE:553639.1 - Placeholder for AMDU binaries and using with ASM 10g