ASM维护工具 (KFOD KFED AMDU)

引用: http://note.youdao.com/noteshare?id=6a1033f91f63875faf3a8fec24fb72af&sub=24D02E68B5794D5D85DA2A64BE6C9DE

ASM实例中有元文件与数据文件介绍

KFOD 工具

(1)查看磁盘组的组成

(2)查看分组信息及可用容量

(3)显示所有磁盘

KFED 工具

ASM磁盘头信息损坏和修复

AMDU (ASM Metadata Dump Utility)


ASM实例中有元文件与数据文件介绍


X$KFFXP是ASM(Automatic Storage Management)自动存储管理特性的重要内部视图,该视图反应了File Extent Map映射关系,ASM会将文件split成多个多个piece分片,这些分片被称为Extents。 在Disk上存放这些Extent的位置,就是我们常说的”Allocation Unit”。


KFF意为Kernel File,X$KFFXP即Kernel File Extent Maps, 该内部视图的一条记录代表一个Extent。

可以通过以下脚本查询文件与Extent等ASM属性的映射关系:


set linesize 140 pagesize 1400col "FILE NAME" format a40set head onselect NAME         "FILE NAME",       NUMBER_KFFXP "FILE NUMBER",       XNUM_KFFXP   "EXTENT NUMBER",       DISK_KFFXP   "DISK NUMBER",       AU_KFFXP     "AU NUMBER",       SIZE_KFFXP   "NUMBER of AUs"
  from x$kffxp, v$asm_alias
 where GROUP_KFFXP = GROUP_NUMBER
   and NUMBER_KFFXP = FILE_NUMBER
   and system_created = 'Y'
   and lxn_kffxp = 0
 order by name;
KFOD 工具
    有了这个命令我们可以不通过实例查询视图查询磁盘信息,直接在操作系统层对ASM的相关信息进行查阅磁盘空间大小和剩余量等信息。
KFOD 命令在 ASM实例  $ORACLE_HOME/bin 目录下
(1)查看磁盘组的组成

[grid@host02 lib]$ kfod disk=all group=diskgroup ds=true
--------------------------------------------------------------------------------
 Disk          Size Path                                     Disk Group   User     Group   
================================================================================
   1:        999 Mb /dev/raw/raw1                            OCR          grid     asmadmin
   2:        999 Mb /dev/raw/raw2                            OCR          grid     asmadmin
   3:        999 Mb /dev/raw/raw3                            OCR          grid     asmadmin
   4:       9993 Mb /dev/raw/raw4                            #            grid     asmadmin
   5:       9993 Mb /dev/raw/raw5                            #            grid     asmadmin
   6:       9993 Mb /dev/raw/raw6                            #            grid     asmadmin
(2)查看分组信息及可用容量

[grid@host02 lib]$ kfod diisk=all op=groups
--------------------------------------------------------------------------------
Group          Size          Free Redundancy Name 
================================================================================
(3)显示所有磁盘

[grid@host02 lib]$kfod  disk=all 
--------------------------------------------------------------------------------
 Disk          Size Path                                     User     Group   
================================================================================
   1:        999 Mb /dev/raw/raw1                            grid     asmadmin
   2:        999 Mb /dev/raw/raw2                            grid     asmadmin
   3:        999 Mb /dev/raw/raw3                            grid     asmadmin
   4:       9993 Mb /dev/raw/raw4                            grid     asmadmin
   5:       9993 Mb /dev/raw/raw5                            grid     asmadmin
   6:       9993 Mb /dev/raw/raw6                            grid     asmadmin
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME                                                          
================================================================================
     +ASM1 /u01/app/11.2.0/grid                                                 
     +ASM2 /u01/app/11.2.0/grid
KFED 工具
KFED主要用来编辑和修复ASM metadata,可以在DiskGroup没有mount的情况下使用;因此在ASM无法启动、DiskGroup无法mount的时候可以尝试使用这个神器来修复
kfed工具支持对于ASM信息的READ/WRITE/MERGE/NEW/ FORM/FIND/STRUCT等操作,11gR2之前需要手工编译. 
一、编译kfed工具
1.编译
[oracle@node1 ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@node1 lib]$ make -f ins_rdbms.mk ikfed
2.配置环境变量
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/rdbms/lib:$PATH
3.查看帮助
[oracle@node1 ~]$ kfed -help
4查看一块磁盘信息

[oracle@rac01~]$ kfed read /dev/asm-disk1 aun=0 blkn=0
【01】kfbh.endian:                          1 ; 0x000: 0x01
【02】kfbh.hard:                          130 ; 0x001: 0x82
【03】kfbh.type:                            1 ; 0x002:KFBTYP_DISKHEAD
【04】kfbh.datfmt:                          1 ; 0x003: 0x01
【05】kfbh.block.blk:                       0 ; 0x004: blk=0
【06】kfbh.block.obj:              2147483648 ; 0x008: disk=0
【07】kfbh.check:                   875080645 ; 0x00c:0x3428abc5
【08】kfbh.fcn.base:                     4892 ; 0x010: 0x0000131c
【09】kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
【10】kfbh.spare1:                          0 ; 0x018: 0x00000000
【11】kfbh.spare2:                          0 ; 0x01c: 0x00000000
【12】kfdhdb.driver.provstr:         ORCLDISK ; 0x000: length=8
【13】kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000
【14】kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000
【15】kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000
【16】kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000
【17】kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000
【18】kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000
【19】kfdhdb.compat:                186646528 ; 0x020: 0x0b200000
【20】kfdhdb.dsknum:                        0 ; 0x024: 0x0000
【21】kfdhdb.grptyp:                        1 ; 0x026:KFDGTP_EXTERNAL
【22】kfdhdb.hdrsts:                        3 ; 0x027:KFDHDR_MEMBER
【23】kfdhdb.dskname:               DATA_0000 ; 0x028: length=9
【24】kfdhdb.grpname:                    DATA ; 0x048: length=4
【25】kfdhdb.fgname:                DATA_0000 ; 0x068: length=9
【26】kfdhdb.capname:                         ; 0x088: length=0
【27】kfdhdb.crestmp.hi:             33020845 ; 0x0a8: HOUR=0xdDAYS=0x1d MNTH=0x6 YEAR=0x7df
【28】kfdhdb.crestmp.lo:           1437992960 ; 0x0ac: USEC=0x0MSEC=0x182 SECS=0x1b MINS=0x15
【29】kfdhdb.mntstmp.hi:             33021392 ; 0x0b0: HOUR=0x10DAYS=0xe MNTH=0x7 YEAR=0x7df
【30】kfdhdb.mntstmp.lo:           2467747840 ; 0x0b4: USEC=0x0MSEC=0x1b6 SECS=0x31 MINS=0x24
........
【108】
总共有108行内容,这些内容是什么含义呢?我们来一一解读
第1行:kfbh.endian:小字节(LittleEndian) = 1  大字节(Big Endian) = 0
第2行:kfbh.hard:元文件块大小 默认是0x82
第3行:type_kfbh:类型,磁盘头总是KFBTYP_DISKHEAD
第4行:kfbh.datfmt 数据格式
第5行:kfbh.block.blk磁盘头始终是0
第6行:kfbh.block.obj磁盘在磁盘组中的号
第7行:kfbh.check 校验码,写到磁盘前计算
第8~11行:磁盘头无意义
第12行:kfdhdb.driver.provstr 没有使用Lib包的时候显示为ORCLDISK
第13~18行:kfdhdb.driver.reserved始终为0
第19行:kfdhdb.compat 版本号
第20行: kfdhdb.dsknum  0
第21行:kfdhdb.grptyp 冗余策略,共4种冗余策略
   KFDGTP_INVALID    ((kfdgtp)0)  /* Illegal value                    */
   KFDGTP_EXTERNAL    ((kfdgtp)1)  /* Externalredundancy               */
   KFDGTP_NORMAL      ((kfdgtp)2)  /*Normal redundancy                */
   KFDGTP_HIGH       ((kfdgtp)3)  /* High redundancy                  */
第22行:hdrsts_kfdhdb 磁盘状态,共8种状态
   KFDHDR_INVALID    ((kfdhdr)0)  /*   Illegal value                  */
   KFDHDR_UNKNOWN     ((kfdhdr)1)  /*  Disk header block unreadable    */
   KFDHDR_CANDIDATE   ((kfdhdr)2)  /*  No OSM or OS disk header found  */
   KFDHDR_MEMBER     ((kfdhdr)3)  /*   Normal member of the group     */
   KFDHDR_FORMER     ((kfdhdr)4)  /*   Disk dropped cleanly from group */
   KFDHDR_CONFLICT    ((kfdhdr)5)  /*  Header conflicts               */
   KFDHDR_INCOMPAT    ((kfdhdr)6)  /*  Written by incompatible software*/
   KFDHDR_PROVISIONED ((kfdhdr)7)  /*   Disk wasprepared beforehand    */
参见V$asm_disk
第23行:dskname_kfdhdb 磁盘名称 
第24行:grpname_kfhdb 磁盘组名称
第25行:fgname_kfdhdb: 磁盘名称
第26行:capname_kfdhdb 未使用
第27~28行:fdhdb.crestmp.hi,kfdhdb.crestmp.lo创建时的时间戳
第29~30行:kfdhdb.mntstmp.hi,kfdhdb.mntstmp.lo  Mount时的时间戳
第31行:kfdhdb.secsize 扇区大小
第32行:kfdhdb.blksize块大小
第33行:kfdhdb.ausize AU大小。
第34行:kfdhdb.mfact: 版本相关,无意义
第35行:kfhdb.dsksize本磁盘包含的AU数量。kfdhdb.ausize *dsksize_kfdhdb = disk size
第36行:kfdhdb.pmcnt  AU的物理地址空间。
第37行:kfdhdb.fstlocn  说明第一个AU后,是用户可用空间。
第37行:kfdhdb.altlocn 说明文件目录开始自第二个AU
第38行:kfdhdb.f1b1locn  文件目录块1分配单元号
第39~108行:在默认au的情况下,后面的信息基本都变化不大
这部分信息对于ASM识别磁盘非常重要,也正式因为它的重要,11g默认就就对其进行了一个镜像备份,可以通过kefd的repair操作直接恢复,相当的方便
        ASM磁盘头信息损坏和修复
引用文章:ASM模拟损失修改

AMDU (ASM Metadata Dump Utility)           ASM磁盘组的信息需要在Mount之后才能通过内部视图查询,如果磁盘组因为故障无法正常加载,那么信息将不可用,这为诊断带来了诸多不便。

从Oracle 11g开始,Oracle提供了一个工具AMDU用于协助诊断,通过这个工具可以在磁盘组加载之前将ASM的元数据抽取出来,用于数据库诊断,这个工具可以向后兼容,引入到10g中。
通过amdu -h可以查看详细的帮助说明,缺省的调用amdu,会自动生成一个以时间命名的目录,该目录下生成的报告文件会记录磁盘组的相关信息:
       引用文章:

        https://www.2cto.com/database/201305/208110.html



后边两个命令只是大概了解了一下。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69903565/viewspace-2305592/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69903565/viewspace-2305592/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值