zoukankan      html  css  js  c++  java
  • kfed (kernel file editor:内核文件编辑器)

    kfed是没有在文档中标出的asm工具,在oracle 11gR1中被引入。可以被用来读写asm元数据,特别是磁盘头和asm元数据的内容。

    kfed是一个单独的工具,不依赖与asm实例,所以可以对mounted、dismounted的磁盘组使用。其强大特性之一就是修复asm损坏的元数据。写模式的kfed功能很强大,但是用的不好的话破坏性也很大。

    想要修改ASM磁盘头信息,要借助Oracle的工具kfed,而默认这个工具是没有编译的,进入$ORACLE_HOME/lib目录,对kfed工具信息编译:

    $ make -f ins_rdbms.mk ikfed
    

    帮助信息:

    $ kfed -h
    as/mlib         ASM Library [asmlib='lib']
    aun/um          AU number to examine or update [AUNUM=number]		#检查或更新的AU号,默认是AU0或asm的磁盘头
    aus/z           Allocation Unit size in bytes [AUSZ=number]		#AU的大小,默认是1MB,如果使用了是非默认AU大小,需要指定该参数
    blkn/um         Block number to examine or update [BLKNUM=number]	#要读取的块号,默认是快0,或AU的第一个块
    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]		#asm磁盘或设备名称。关键字dev可以被省略,asm磁盘名不能省略
    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]
    

    使用示例:

    语法示例:
    # displays online help for the utility
    $ kfed -help 
    
    # reads the disk header to stdout
    $ kfed op=read dev=/dev/emcpowera1 
    
    # reads the specified AU and block into file /tmp/test
    $ kfed op=read dev=/dev/emcpowera1 aunum=3 blknum=3 text=/tmp/test 
    
    # writes from /tmp/test into the specified AU and block 
    #block checksum is computed and written together with data
    $ kfed op=write dev=/dev/emcpowera1 aunum=3 blknum=3 text=/tmp/test 
    
    #下面的命令相当于 kfed op=read aun=0 aus=1048576 blkn=0 dev=/dev/crs01
    $ kfed read /dev/crs01 |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:                   229442752 ; 0x00c: 0x0dad04c0
    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=8	#kfdhdb部分是真正的asm磁盘头的元数据块内容
    kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000
    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:                        2 ; 0x026: KFDGTP_NORMAL
    kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER
    kfdhdb.dskname:                CRS_0000 ; 0x028: length=8
    kfdhdb.grpname:                     CRS ; 0x048: length=3
    kfdhdb.fgname:                 CRS_0000 ; 0x068: length=8
    kfdhdb.capname:                         ; 0x088: length=0
    kfdhdb.crestmp.hi:             33026792 ; 0x0a8: HOUR=0x8 DAYS=0x17 MNTH=0xc YEAR=0x7df
    kfdhdb.crestmp.lo:           3576811520 ; 0x0ac: USEC=0x0 MSEC=0x74 SECS=0x13 MINS=0x35
    kfdhdb.mntstmp.hi:             33033488 ; 0x0b0: HOUR=0x10 DAYS=0x8 MNTH=0x3 YEAR=0x7e0
    kfdhdb.mntstmp.lo:           2552773632 ; 0x0b4: USEC=0x0 MSEC=0x20f SECS=0x2 MINS=0x26
    kfdhdb.secsize:                     512 ; 0x0b8: 0x0200
    kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000
    kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000
    kfdhdb.mfact:                    113792 ; 0x0c0: 0x0001bc80
    kfdhdb.dsksize:                   10240 ; 0x0c4: 0x00002800
    kfdhdb.pmcnt:                         2 ; 0x0c8: 0x00000002
    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:             33026792 ; 0x0e4: HOUR=0x8 DAYS=0x17 MNTH=0xc YEAR=0x7df
    kfdhdb.grpstmp.lo:           3576543232 ; 0x0e8: USEC=0x0 MSEC=0x36e SECS=0x12 MINS=0x35
    kfdhdb.vfstart:                     256 ; 0x0ec: 0x00000100
    kfdhdb.vfend:                       288 ; 0x0f0: 0x00000120
    kfdhdb.spfile:                       59 ; 0x0f4: 0x0000003b
    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[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
    
  • 相关阅读:
    xml和web Server以及Remoting
    web窗体的基本控件
    迭代器
    .net 细节问题
    Linq笔记
    .net基础概念理解
    Gridview 和DetailsView FormView细节注意
    .net 基础学习(vs2008 3.5框架)
    一、多线程基础
    CentOS 7和SpringBoot下的Redis配置
  • 原文地址:https://www.cnblogs.com/abclife/p/5603808.html
Copyright © 2011-2022 走看看