学习笔记摘录整理
AMDU有以下三种功能:
将ASM DISK上的元数据转储到文件系统上以便分析
将ASM文件的内容抽取出来并写入到OS文件系统,Diskgroup是否mount均可
打印出块的元数据,以块中C语言结构或16进制的形式
选项-diskstring和-exclude用以指定那些ASM DISK需要被读取。 选项-direcotry指定上一次运行AMDU所生成的文件夹。 指定的文件夹也可以是包含上一次文件夹内容的拷贝。
探测磁盘
这一个步骤使用ASM Discovery信息以找到磁盘组。磁盘的头部Asm disk header将被读取以便判断哪些磁盘属于哪个Diskgroup。下一步骤中被扫描的磁盘将在此步骤中被选择。探测的结果将被存放在report文件中。 使用-directory选项,可以读取已存在的报告文件而非重新在重复一次本步骤。
ASMCMD> lsdsk
Path
/dev/asm-diskc
/dev/asm-diskd
/dev/asm-diske
/dev/asm-diskf
ASMCMD> exit
[grid@rac1 ~]$ amdu -diskstring '/dev/asm*'
amdu_2020_10_27_18_33_48/
[grid@rac1 ~]$
[grid@rac1 ~]$
[grid@rac1 ~]$
[grid@rac1 ~]$ cd amdu_2020_10_27_18_33_48/
[grid@rac1 amdu_2020_10_27_18_33_48]$ ls
report.txt
[grid@rac1 amdu_2020_10_27_18_33_48]$ more report.txt
-*-amdu-*-
```````````输出asm各个磁盘的信息
=========知道位置和控制文件名的情况下提取controlfile
[grid@rac1 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 4194304 10240 3072 0 3072 0 N DATADG/
MOUNTED EXTERN N 512 4096 1048576 3072 2672 0 2672 0 Y OCRDG/
-------------查找到控制文件,或者从spfile中得到控制文件的位置
[grid@rac1 ~]$ asmcmd find --type controlfile + "*"
+DATADG/RACDB/CONTROLFILE/Current.270.1026436209
-----------进行提取(磁盘组不能mount),会在当前目录下生成提取文件
amdu -diskstring="/dev/asm-diskc" -extract DATADG.270 -output control.270 -noreport -nodir
此命令相关参数的含义如下:
diskstring: 使用磁盘的全路径或者是ASM_DISKSTRING参数值
extract: 磁盘组名.ASM文件序号
output:提取的输出文件(当前目录下)
noreport:不输出amdu的执行过程
nodir:不创建dump目录
----------以ascii方式可以打开
strings control.270 | grep +DATA
+DATADG/racdb/onlinelog/group_1.275.1026436209
+DATADG/racdb/onlinelog/group_2.272.1026436209
+DATADG/racdb/onlinelog/group_3.269.1026436209
+DATADG/racdb/datafile/system.273.1026436209
+DATADG/racdb/datafile/sysaux.266.1026436213
+DATADG/racdb/datafile/undotbs1.271.1026436217
以上转储出来的control.270就是控制文件,我们使用该控制文件startup mount RDBMS实例:
SQL> alter system set control_files='/opt/oracle.SupportTools/amdu_2009_10_10_20_19_17/control.270' scope=spfile;
System altered.
SQL> startup force mount;
ORACLE instance started.
Total System Global Area 1870647296 bytes
Fixed Size 2229424 bytes
Variable Size 452987728 bytes
Database Buffers 1409286144 bytes
Redo Buffers 6144000 bytes
Database mounted.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/prodb/datafile/system.256.794687873
+DATA/prodb/datafile/sysaux.257.794687875
+DATA/prodb/datafile/undotbs1.258.794687875
+DATA/prodb/datafile/users.259.794687875
+DATA/prodb/datafile/example.265.794687995
+DATA/prodb/datafile/mactbs.267.794688457
6 rows selected.
startup mount实例后,可以从v$datafile中获得数据文件名,其中就包括了其在DISKGROUP中的FILE NUMBER
再使用./amdu -diskstring ‘/dev/asm*’ -extract 命令即可 导出数据文件到操作系统
amdu -extract DG_DATA.279
[oracle@mlab2 oracle.SupportTools]$ ./amdu -diskstring '/dev/asm*' -extract data.256
amdu_2009_10_10_20_22_21/
AMDU-00204: Disk N0006 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0006: '/dev/asm-disk10'
AMDU-00204: Disk N0003 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0003: '/dev/asm-disk5'
AMDU-00204: Disk N0002 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0002: '/dev/asm-disk6'
[oracle@mlab2 oracle.SupportTools]$ cd amdu_2009_10_10_20_22_21/
[oracle@mlab2 amdu_2009_10_10_20_22_21]$ ls
DATA_256.f report.txt
[oracle@mlab2 amdu_2009_10_10_20_22_21]$ dbv file=DATA_256.f
DBVERIFY: Release 11.2.0.3.0 - Production on Sat Oct 10 20:23:12 2009
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /opt/oracle.SupportTools/amdu_2009_10_10_20_22_21/DATA_256.f
DBVERIFY - Verification complete
Total Pages Examined : 90880
Total Pages Processed (Data) : 59817
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 12609
Total Pages Failing (Index): 0
Total Pages Processed (Other): 3637
Total Pages Processed (Seg) : 1
Total Pages Failing (Seg) : 0
Total Pages Empty : 14817
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 1125305 (0.1125305)