共计 6332 个字符,预计需要花费 16 分钟才能阅读完成。
这篇文章主要介绍“怎么使用 ASM 维护工具”,在日常操作中,相信很多人在怎么使用 ASM 维护工具问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用 ASM 维护工具”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
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 磁盘头信息损坏和修复
AMDU (ASM Metadata Dump Utility)
ASM 磁盘组的信息需要在 Mount 之后才能通过内部视图查询,如果磁盘组因为故障无法正常加载,那么信息将不可用,这为诊断带来了诸多不便。
从 Oracle 11g 开始,Oracle 提供了一个工具 AMDU 用于协助诊断,通过这个工具可以在磁盘组加载之前将 ASM 的元数据抽取出来,用于数据库诊断,这个工具可以向后兼容,引入到 10g 中。
通过 amdu - h 可以查看详细的帮助说明,缺省的调用 amdu,会自动生成一个以时间命名的目录,该目录下生成的报告文件会记录磁盘组的相关信息
到此,关于“怎么使用 ASM 维护工具”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!