ASM 管理的内部工具:KFED、KFOD、AMDU
作者 | 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相关推荐
- ASM管理命令行三工具:KFOD、KFED和AMDU
ASM管理命令行三工具:KFOD.KFED和AMDU ASM(Automatic Storage Management)是Oracle目前主推的软集群存储策略.一般而言,管理ASM的工具包括使用sql ...
- 产品开发管理方法工具流程 pdf_HR必备薪酬和绩效管理方法论、工具、案例
作为一项实践性和技术性较强的工作,人力资源管理的重点,在于薪酬和绩效管理. 1.薪酬和绩效管理在人力资源管理中的作用 在企业管理中,员工的绩效管理十分重要,可以对员工的工作能力和综合素质进行相对准确的 ...
- 精益生产管理十大工具
精益生产管理十大工具 精益生产管理是以精益思想为基础,通过精益的工作流程.有效的资源利用.团队协作和质量管理等综合性管理手段,不断改善企业的生产效率和质量.在这个过程中,精益生产管理 十大工具是非常重 ...
- 远程管理linux系统工具,远程管理Linux系统工具的设计与实现Linux013
一种远程管理Linux系统工具的设计与实现 摘 要 现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务.为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linu ...
- go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具
大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目! 今天给大家推荐一款利刃:一款基于 Go 语言的可视化 Web 管理后台生成工具. 项目名称:go-sword,地址:http ...
- wav文件头修复_标记管理音频文件工具:Yate for Mac
Yate for Mac是一款Mac平台的音乐标签及管理工具,能够帮助我们轻松编辑音乐文件的元标签数据,支持MP3, M4A, MP4,AIFF, FLAC, WAV以及 DSF格式的音频文件,我们可 ...
- rac下asm管理的表空间-数据文件的重命名
asm下表空间的重命名与普通文件系统下的表空间重命名原理是一样的,只不过asm管理的数据文件有一些需要注意的地方,另外在asm下操作数据文件需要格外小心,稍有不慎将会造成数据文件丢失,如可以做备份最好 ...
- Webapi管理和性能测试工具WebBenchmark
WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能压测的缺少管理功能:WebBenchmark的设计目标 ...
- WebApi管理和性能测试工具WebApiBenchmarks
说到WebApi管理和测试工具其实已经非常多的了,Postman.Swagger等在管理和维护上都非常出色:在性能测试方面也有不少的工具如:wrk,bombardier,http_load和ab等等. ...
最新文章
- 【万字长文】吃透负载均衡
- 避免重蹈欧美“超级电厂”覆辙 瑞星全力保障国内电力行业信息安全
- 图像处理实战 多张曲线同图共舞
- Cisco 双出口NAT配置
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
- Promise的基本使用
- [BZOJ 4300]绝世好题
- 利用线性代数的方法求斐波那契数列的通项
- linux 防火墙 ftp,RedHat6 建立基于防火墙和SELinux的虚拟用户vsFTP
- vantUI 弹出层(轻提示)案例 - 踩坑篇
- 一年中重要的节日列表_感悟 | 一年中最重要的节日是春节!
- AI技术人才成长路线十大方向
- android dumpsys 分析,Android中dumpsys命令用法简单介绍
- excel-countifs和sumifs函数
- python多次登录教务系统_python3模拟登录正方教务系统
- 大数据技术之Hive+Flume+Zookeeper+Kafka详解
- 解决iPhone无法连接iTunes
- 怎么撰写一份优秀的数据分析报告(二)
- 如何检查NAS硬盘有坏没有
- 安装scrapy报错failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-dvrc8k5o\Twis
热门文章
- 记录 Ubuntu 下 Audio Jack(耳机插孔) 引起的 kworker CPU 高占用Bug
- 纷享销客获评“2021-2022年度中国企业服务最佳新经济企业TOP10”
- python 获取excel筛选文本名称
- ttf字体库文件转换成base64 的css文件
- java反射原理三种,java反射的原理、作用
- 店宝宝:电商选品多重要?“血吊坠”引发争议被下架
- RedisInsight:Redis监控工具部署(linux)
- MongoDB备份及恢复
- python实现中缀表达式转后缀表达式
- html a标签唤醒app,网页唤醒app、一个app唤醒另一个app