作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家聊聊 Oracle ASM 管理的内部工具:KFED、KFOD、AMDU,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

ASM 管理命令功能十分强大,当 ASM 实例或者磁盘组出现异常时,还可以使用 ASM 管理的内部工具:KFED、KFOD、AMDU 命令来诊断问题,检查处理 ASM 磁盘异常问题。

在 Oracle 19c 的环境中,如下所示,不管单机还是 RAC 均存在这三个命令,在 11g 中也是,可见 11g 以上的环境这三个命令已经集成到了各自环境下的 bin 目录下了。

[root@JiekeXu ~]# su - oracle
Last login: Tue Apr 20 09:21:16 CST 2021 on pts/1
[oracle@JiekeXu ~]$ which kfed
/opt/oracle/product/19c/dbhome_1/bin/kfed
[oracle@JiekeXu ~]$ ls -l /opt/oracle/product/19c/dbhome_1/bin/kfed
-rwxr-x--x 1 oracle oinstall 142480 Mar 14 20:54 /opt/oracle/product/19c/dbhome_1/bin/kfed
[oracle@JiekeXu ~]$ ps -ef | grep d.bin
oracle   26844 26812  0 17:07 pts/1    00:00:00 grep --color=auto d.bin
[oracle@JiekeXu ~]$ ps -ef | grep smon
oracle    2963     1  0 Mar21 ?        00:01:12 ora_smon_JiekeCDB
oracle   26848 26812  0 17:07 pts/1    00:00:00 grep --color=auto smon
[oracle@JiekeXu ~]$ which kfod
/opt/oracle/product/19c/dbhome_1/bin/kfod
[oracle@JiekeXu ~]$ ls -l /opt/oracle/product/19c/dbhome_1/bin/kfod
-rwxr-xr-x 1 oracle oinstall 484 Apr 18  2019 /opt/oracle/product/19c/dbhome_1/bin/kfod
[oracle@JiekeXu ~]$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
[oracle@JiekeXu ~]$ sql
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 23 17:08:09 2021
Version 19.10.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.10.0.0.0
SYS@JiekeCDB> show pdbsCON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO3 JIEKEPDB                       READ WRITE NO5 JIEKEPDB1                      READ WRITE NO19c RAC 环境jieke2:/home/grid(+ASM2)$ which kfod
/u01/app/19.0.0.0/grid/bin/kfod
jieke2:/home/grid(+ASM2)$ which kfed
/u01/app/19.0.0.0/grid/bin/kfed
jieke2:/home/grid(+ASM2)$ ls -l /u01/app/19.0.0.0/grid/bin/kfed
-rwxr-x--x 1 root oinstall 102416 Apr 22 17:00 /u01/app/19.0.0.0/grid/bin/kfed
jieke2:/home/grid(+ASM2)$ which amdu
/u01/app/19.0.0.0/grid/bin/amdu
jieke2:/home/grid(+ASM2)$ ls -l /u01/app/19.0.0.0/grid/bin/amdu
-rwxr-x--x 1 root oinstall 131072 Apr 22 17:00 /u01/app/19.0.0.0/grid/bin/amdu
jieke2:/home/grid(+ASM2)$ exit
logout
jieke2:~ # su - oracle
jieke2:/home/oracle(jiekexu2)$ which kfed
/u01/app/oracle/product/19.0.0.0/dbhome_1/bin/kfed
jieke2:/home/oracle(jiekexu2)$ ls -l /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/kfed
-rwxr-x--x 1 oracle oinstall 98320 Apr 22 22:47 /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/kfed11g 单机环境JIEKEADG:/home/oracle$which kfed
/app/product/11.2.0/db/bin/kfed
JIEKEADG:/home/oracle$which kfod
/app/product/11.2.0/db/bin/kfod
JIEKEADG:/home/oracle$which amdu
/app/product/11.2.0/db/bin/amdu

相反在 Oracle 10g 时的环境中只有 kfod 命令,kfed 和 amdu 都不存在,10g 中也不存在 ASM 的概念,只有裸设备的概念,当然只有 kfod 也可以满足了。

ZBJIEKEXU:[jiekexu]/software/oracle $ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Apr 23 17:26:52 2021
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ZBJIEKEXU:[jiekexu]/software/oracle $ which kfed
no kfed in /usr/bin /etc /usr/sbin /usr/ucb /software/oracle/bin /usr/bin/X11 /sbin . /software/app1/oracle/product/10.2.0/db/bin /bin /usr/bin /usr/sbin /etl_pc/oracledata/dds/bin /etl_pc/oracledata/dds/dt /software/app1/oracle/product/10.2.0/db/OPatch
ZBJIEKEXU:[jiekexu]/software/oracle $ which kfod
/software/app1/oracle/product/10.2.0/db/bin/kfod
ZBJIEKEXU:[jiekexu]/software/oracle $ which amdu
no amdu in /usr/bin /etc /usr/sbin /usr/ucb /software/oracle/bin /usr/bin/X11 /sbin . /software/app1/oracle/product/10.2.0/db/bin /bin /usr/bin /usr/sbin /etl_pc/oracledata/dds/bin /etl_pc/oracledata/dds/dt /software/app1/oracle/product/10.2.0/db/OPatch
ZBJIEKEXU:[jiekexu]/software/oracle $

kfed 工具

KFED is a useful tool which allows to analyze ASM disk header information when ASM diskgroups can not be mounted.
KFED 是当 ASM 实例不能挂载磁盘组时,读 ASM 磁盘头的工具。

读磁盘头

命令示例:

kfed read /dev/rhdisk123
kfed read /dev/rhdisk13 text=/tmp/asmdisk13.txt
kfed read /dev/rhdisk12 text=/tmp/asmdisk12.txt

jieke2:/home/grid(+ASM2)$ kfed read /dev/mapper/asm4
kfbh.endian:                          0 ; 0x000: 0x00
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:                  3593069111 ; 0x00c: 0xd629e237
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.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:                318767104 ; 0x020: 0x13000000
kfdhdb.dsknum:                        0 ; 0x024: 0x0000
kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname:         JIEKE_ARCH_0000 ; 0x028: length=15
kfdhdb.grpname:              JIEKE_ARCH ; 0x048: length=10
kfdhdb.fgname:          JIEKE_ARCH_0000 ; 0x068: length=15
kfdhdb.siteguid[0]:                   0 ; 0x088: 0x00
kfdhdb.siteguid[1]:                   0 ; 0x089: 0x00
kfdhdb.siteguid[2]:                   0 ; 0x08a: 0x00

修复盘头:
kfed repair /dev/rhdisk1
kfed repair /dev/rhdisk3

在原操作系统中,编译 asmdisk13.txt
把第12行 kfdhdb.driver.provstr: 的内容修改成
“kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8” 和 asmdisk12.txt 一样。

用下面的命令把每一个写回对应的磁盘:
kfed merge /dev/rhdisk13 text=asmdisk13.txt

生产环境示例:

kfed read /dev/mapper/asm12

kfod 工具

在系统级别,Oracle 还提供一个 KFOD 工具,用于列举搜索磁盘,在 ASM 实例启动之后,这些信息可以通过视图提供。

$> kfod help=y
_asm_a/llow_only_raw_disks KFOD allow only raw devices [_asm_allow_only_raw_disks=TRUE/(FALSE)]
_asm_l/ibraries ASM Libraries[_asm_libraries=‘lib1’,‘lib2’,…]
_asms/id ASM Instance[_asmsid=sid]
a/sm_diskstring ASM Diskstring [asm_diskstring=‘discoverystring’, ‘discoverystring’ …]
d/isks Disks to discover [disks=raw,asm,all]
g/roup Group discover [group=controlfile]
n/ohdr KFOD header suppression [nohdr=TRUE/(FALSE)]
o/p KFOD options type [OP=DISKS/GROUPS/ALL]
p/file ASM parameter file [pfile=‘parameterfile’]
s/tatus Include disk header status [status=TRUE/(FALSE)]
v/erbose KFOD verbose errors [verbose=TRUE/(FALSE)]
kfod status=TRUE asm_diskstring='/dev/rhdisk*' disks=ALLkfod disks=all status=true$ export LD_LIBRARY_PATH=/u01/stage/11.2.0.1/grid/stage/ext/lib
$ /u01/stage/11.2.0.1/grid/stage/ext/bin/kfod status=TRUE asm_diskstring='/dev/rdsk/*' disk=all dscvgroup=TRUE
--------------------------------------------------------------------------------
Disk Size Header Path Disk Group User Group
================================================================================
1: 10040 Mb MEMBER /dev/rdsk/c0t600144F0E08ACF0000004C2F6FBB0005d0s1  DG oracle oinstall
2: 10040 Mb MEMBER /dev/rdsk/c0t600144F0E08ACF0000004C2F6FBC0006d0s1  DG oracle oinstall
3: 10142 Mb MEMBER /dev/rdsk/c0t600144F0E08ACF0000004C2F6FBE0007d0s1  DG oracle oinstall
4: 10142 Mb MEMBER /dev/rdsk/c0t600144F0E08ACF0000004C2F6FBF0008d0s1  DG oracle oinstall
5:  9734 Mb MEMBER /dev/rdsk/c0t600144F0E08ACF0000004C2F6FC00009d0s1 FRA oracle oinstall
--------------------------------------------------------------------------------
读 ASM 使用的所有磁盘以及大小和磁盘相关路径
jieke2:/home/grid(+ASM2)$ kfod disks=all status=true
--------------------------------------------------------------------------------Disk          Size Header    Path                                     User     Group
================================================================================1:       2048 MB MEMBER    /dev/mapper/asm1                         grid     asmadmin2:    2097152 MB MEMBER    /dev/mapper/asm10                        grid     asmadmin3:    2097152 MB MEMBER    /dev/mapper/asm11                        grid     asmadmin4:    2097152 MB MEMBER    /dev/mapper/asm12                        grid     asmadmin5:    2097152 MB MEMBER    /dev/mapper/asm13                        grid     asmadmin6:    2097152 MB MEMBER    /dev/mapper/asm14                        grid     asmadmin7:    2097152 MB MEMBER    /dev/mapper/asm15                        grid     asmadmin8:    2097152 MB MEMBER    /dev/mapper/asm16                        grid     asmadmin9:    2097152 MB MEMBER    /dev/mapper/asm17                        grid     asmadmin10:    2097152 MB MEMBER    /dev/mapper/asm18                        grid     asmadmin11:    2097152 MB MEMBER    /dev/mapper/asm19                        grid     asmadmin12:       2048 MB MEMBER    /dev/mapper/asm2                         grid     asmadmin13:    2097152 MB MEMBER    /dev/mapper/asm20                        grid     asmadmin14:    2097152 MB MEMBER    /dev/mapper/asm21                        grid     asmadmin15:    2097152 MB MEMBER    /dev/mapper/asm22                        grid     asmadmin16:       2048 MB MEMBER    /dev/mapper/asm3                         grid     asmadmin17:    1048576 MB MEMBER    /dev/mapper/asm4                         grid     asmadmin18:    2097152 MB MEMBER    /dev/mapper/asm5                         grid     asmadmin19:    2097152 MB MEMBER    /dev/mapper/asm6                         grid     asmadmin20:    2097152 MB MEMBER    /dev/mapper/asm7                         grid     asmadmin21:    2097152 MB MEMBER    /dev/mapper/asm8                         grid     asmadmin22:    2097152 MB MEMBER    /dev/mapper/asm9                         grid     asmadmin
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME
================================================================================

amdu 工具

在 Oracle 10g 中,ASM 磁盘组的信息需要在 Mount 之后才能通过内部视图查询,如果磁盘组因为故障无法正常加载,那么信息将不可用,这为诊断带来了诸多不便。从 Oracle 11g 开始,Oracle 提供了一个工具 AMDU 用于协助诊断,通过这个工具可以在磁盘组加载之前将 ASM 的元数据抽取出来,用于数据库诊断,这个工具可以向后兼容,引入到 10g 中。

通过 amdu –h 可以查看详细的帮助说明,缺省的调用 amdu,会自动生成一个以时间命名的目录,该目录下生成的报告文件会记录磁盘组的相关信息:

amdu -diskstring ‘<your_path_to_ASM_disks>’ -dump ‘

amdu -diskstring ‘/dev/oracleasm/disks/VOL*’ -dump ‘CRSDG’

$> amdu -diskstring '/dev/raw/raw*' -dump 'DG11'--------------------------------------------------------------------------------<report.txt content>----------------------------- DISK REPORT N0003 ---------------------------
Disk Path: /dev/raw/raw3
Physical Sector Size: 512 bytes
Disk Size: 977 megabytes
Group Name: DG11
Disk Name: DG11_0000
Failure Group Name: DG11_0000----------------------------- DISK REPORT N0004 ---------------------------
Disk Path: /dev/raw/raw4
Physical Sector Size: 512 bytes
Disk Size: 978 megabytes
Group Name: DG11
Disk Name: DG11_0001
Failure Group Name: DG11_0001

amdu 抽取 ASM 磁盘组的数据文件语法如下:

amdu -diskstring ‘’ -extract ‘.’

数据文件号 可以根据 asm 实例 查询 v$asm_file视图得出

也可以查 vdatafile,如果用了别名,可以用 vasm_alias;

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/db1/datafile/system.256.794361477
+DATA/db1/datafile/sysaux.257.794361477
+DATA/db1/datafile/undotbs1.258.794361477
+DATA/db1/datafile/users.259.794361477   <(=== this files need to be extracted
+DATA/db1/datafile/example.261.794361601
+DATA/db1/datafile/testasm.263.817147851
+DATA/db1/datafile/dbfs_ts.264.822088469

比如我们要抽取 users 表空间下面对应的数据文件

Full File name = “+DATA/db1/datafile/users.259.794361477”
File Number = “259”
Disk String = “/dev/oracleasm/disks/*”
Diskgroup Name = “DATA”
Extracted File = DATA_259.f
amdu -diskstring ‘/dev/oracleasm/disks/*’ -extract ‘DATA.259’

在当前目录下会生成 amdu_ 加日期格式的文件夹

[grid@dbaasm ~]$ cd amdu_2013_08_31_00_17_17/
[grid@dbaasm amdu_2013_08_31_00_17_17]$ ls -l
total 2099228
-rw-r–r-- 1 grid oinstall 2147491840 Aug 31 00:18 DATA_259.f
-rw-r–r-- 1 grid oinstall 14514 Aug 31 00:18 report.txt

生成数据文件的格式为磁盘组+数据文件号,并且加后缀名为点 f,然后重命名为对应表空间名字 users.dbf 即可

[grid@dbaasm amdu_2013_08_31_00_17_17]$ mv DATA_259.f users.dbf
[grid@dbaasm amdu_2013_08_31_00_17_17]$ ls -l
total 2099228
-rw-r–r-- 1 grid oinstall 14514 Aug 31 00:18 report.txt
-rw-r–r-- 1 grid oinstall 2147491840 Aug 31 00:18 users.dbf <(======

关于这三个命令的就说这么多,当涉及到 ASM 磁盘的相关查看时这三个命令的功能才能发挥出来,网上关于此工具的资料少之又少,这里先记录下来,分享给需要的小伙伴们。如果此文对您有帮助,欢迎点赞、在看与转发,写作不易,举手之劳,便是对作者最大的支持。

参考链接:
https://www.modb.pro/db/6665
http://blog.itpub.net/7199859/viewspace-1246627/
ASM tools used by Support : KFOD, KFED, AMDU (Doc ID 1485597.1)

————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

一线运维 DBA 五年经验常用 SQL 大全(一)

一线运维 DBA 五年经验常用 SQL 大全(二)

ORA-00349|激活 ADG 备库时遇到的问题

Oracle 轻量级实时监控工具 oratop

MySQL OCP 认证考试你知道吗?

Oracle 19C RAC 安装遇到的坑

Oracle 每日一题系列合集

百花齐放的国产数据库

ASM 管理的内部工具:KFED、KFOD、AMDU相关推荐

  1. ASM管理命令行三工具:KFOD、KFED和AMDU

    ASM管理命令行三工具:KFOD.KFED和AMDU ASM(Automatic Storage Management)是Oracle目前主推的软集群存储策略.一般而言,管理ASM的工具包括使用sql ...

  2. 产品开发管理方法工具流程 pdf_HR必备薪酬和绩效管理方法论、工具、案例

    作为一项实践性和技术性较强的工作,人力资源管理的重点,在于薪酬和绩效管理. 1.薪酬和绩效管理在人力资源管理中的作用 在企业管理中,员工的绩效管理十分重要,可以对员工的工作能力和综合素质进行相对准确的 ...

  3. 精益生产管理十大工具

    精益生产管理十大工具 精益生产管理是以精益思想为基础,通过精益的工作流程.有效的资源利用.团队协作和质量管理等综合性管理手段,不断改善企业的生产效率和质量.在这个过程中,精益生产管理 十大工具是非常重 ...

  4. 远程管理linux系统工具,远程管理Linux系统工具的设计与实现Linux013

    一种远程管理Linux系统工具的设计与实现 摘  要 现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务.为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linu ...

  5. go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具

    大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目! 今天给大家推荐一款利刃:一款基于 Go 语言的可视化 Web 管理后台生成工具. 项目名称:go-sword,地址:http ...

  6. wav文件头修复_标记管理音频文件工具:Yate for Mac

    Yate for Mac是一款Mac平台的音乐标签及管理工具,能够帮助我们轻松编辑音乐文件的元标签数据,支持MP3, M4A, MP4,AIFF, FLAC, WAV以及 DSF格式的音频文件,我们可 ...

  7. rac下asm管理的表空间-数据文件的重命名

    asm下表空间的重命名与普通文件系统下的表空间重命名原理是一样的,只不过asm管理的数据文件有一些需要注意的地方,另外在asm下操作数据文件需要格外小心,稍有不慎将会造成数据文件丢失,如可以做备份最好 ...

  8. Webapi管理和性能测试工具WebBenchmark

    WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能压测的缺少管理功能:WebBenchmark的设计目标 ...

  9. WebApi管理和性能测试工具WebApiBenchmarks

    说到WebApi管理和测试工具其实已经非常多的了,Postman.Swagger等在管理和维护上都非常出色:在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等. ...

最新文章

  1. 【万字长文】吃透负载均衡
  2. 避免重蹈欧美“超级电厂”覆辙 瑞星全力保障国内电力行业信息安全
  3. 图像处理实战 多张曲线同图共舞
  4. Cisco 双出口NAT配置
  5. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
  6. Promise的基本使用
  7. [BZOJ 4300]绝世好题
  8. 利用线性代数的方法求斐波那契数列的通项
  9. linux 防火墙 ftp,RedHat6 建立基于防火墙和SELinux的虚拟用户vsFTP
  10. vantUI 弹出层(轻提示)案例 - 踩坑篇
  11. 一年中重要的节日列表_感悟 | 一年中最重要的节日是春节!
  12. AI技术人才成长路线十大方向
  13. android dumpsys 分析,Android中dumpsys命令用法简单介绍
  14. excel-countifs和sumifs函数
  15. python多次登录教务系统_python3模拟登录正方教务系统
  16. 大数据技术之Hive+Flume+Zookeeper+Kafka详解
  17. 解决iPhone无法连接iTunes
  18. 怎么撰写一份优秀的数据分析报告(二)
  19. 如何检查NAS硬盘有坏没有
  20. 安装scrapy报错failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-dvrc8k5o\Twis

热门文章

  1. 记录 Ubuntu 下 Audio Jack(耳机插孔) 引起的 kworker CPU 高占用Bug
  2. 纷享销客获评“2021-2022年度中国企业服务最佳新经济企业TOP10”
  3. python 获取excel筛选文本名称
  4. ttf字体库文件转换成base64 的css文件
  5. java反射原理三种,java反射的原理、作用
  6. 店宝宝:电商选品多重要?“血吊坠”引发争议被下架
  7. RedisInsight:Redis监控工具部署(linux)
  8. MongoDB备份及恢复
  9. python实现中缀表达式转后缀表达式
  10. html a标签唤醒app,网页唤醒app、一个app唤醒另一个app