ASM AMDU工具的使用


AMDU是ORACLE针对ASM开发的源数据转储工具,其全称为ASM Metadata Dump Utility(AMDU)
ASM作为近几年最流行的存储解决方案,大家对他的优缺点都有所了解,其中的问题之一就是ASM是个黑盒。
一旦DISKGROUP无法MOUNT起来就意味着传统方法无法以磁盘为基础导出任何数据。AMDU解决了这一问题. 

一.AMDU具体以下三个主要功能:
 
 1. 将ASM DISK上的元数据转储到文件系统上以便分析
 2. 将ASM文件的内容抽取出来并写入到OS文件系统,Diskgroup是否mount均可
 3. 打印出块的元数据,以块中C语言结构或16进制的形式
 

优点: 1.是oracle自带工具, 兼容性好,坏块或文件少的情况下比较适合
缺点: 1.严重依赖源数据,如果源数据有问题,抽取的文件也会有问题


二. 下载:从MOS上可以下载Oracle 10g版本的AMDU ( Note: 553639.1 ) 工具。

 
注意 AMDU虽然是11g才发布的工具,但是实际对10g的ASM 也有效。
 从oracle 11gR2版本,amdu工具可以直接使用,不需要单独下载
 
 
三. amdu的使用方法

命令放在$ORACLE_HOME/bin目录下
[oracle@node1 ~]$ cd $ORACLE_HOME/bin
[oracle@node1 bin]$ amdu     --amdu 运行后输出的格式如下 会在当前目录下生成个以amdu+日期格式的文件夹
amdu_2016_03_14_17_11_21/

在这个文件夹下,会生成report.txt文件,report.txt文件格式如下:

[oracle@node1 amdu_2016_03_14_17_11_21]$ cat report.txt 
-*-amdu-*-

******************************* AMDU Settings ********************************
[grid@rac01test ~]$ cd amdu_2016_03_15_16_34_54/
[grid@rac01test amdu_2016_03_15_16_34_54]$ ls
report.txt
[grid@rac01test amdu_2016_03_15_16_34_54]$ cat report.txt 
-*-amdu-*-

******************************* AMDU Settings ********************************
ORACLE_HOME = /u01/11.2.0/grid
System name:Linux
Node name:rac01test
Release:2.6.32-504.el6.x86_64
Version:#1 SMP Wed Oct 15 04:27:16 UTC 2014
Machine:x86_64
amdu run:15-MAR-16 16:34:54
Endianess:1

--------------------------------- Operations ---------------------------------
------------------------------- Disk Selection -------------------------------
 -diskstring ''
------------------------------ Reading Control -------------------------------
------------------------------- Output Control -------------------------------
********************************* DISCOVERY **********************************
----------------------------- DISK REPORT N0001 ------------------------------
                Disk Path: /dev/raw/raw1
           Unique Disk ID: 
               Disk Label: 
     Physical Sector Size: 512 bytes
                Disk Size: 2055 megabytes
               Group Name: ARCH_DG
                Disk Name: ARCH_DG_0004
       Failure Group Name: ARCH_DG_0004
              Disk Number: 4
            Header Status: 3
       Disk Creation Time: 2015/11/04 14:51:20.529000
          Last Mount Time: 2016/02/03 09:53:53.840000
    Compatibility Version: 0x0b200000(11020000)
         Disk Sector Size: 512 bytes
         Disk size in AUs: 2055 AUs
         Group Redundancy: 1
      Metadata Block Size: 4096 bytes
                  AU Size: 1048576 bytes
                   Stride: 113792 AUs
      Group Creation Time: 2015/10/27 10:00:00.144000
  File 1 Block 1 location: AU 0
              OCR Present: NO

----------------------------- DISK REPORT N0002 ------------------------------
                Disk Path: /dev/raw/raw10
           Unique Disk ID: 
               Disk Label: 
     Physical Sector Size: 512 bytes
                Disk Size: 2055 megabytes
               Group Name: ARCH_DG
                Disk Name: ARCH_DG_0003
       Failure Group Name: ARCH_DG_0003
              Disk Number: 3
            Header Status: 3
       Disk Creation Time: 2015/11/04 14:51:20.529000
          Last Mount Time: 2016/02/03 09:53:53.840000
    Compatibility Version: 0x0b200000(11020000)
         Disk Sector Size: 512 bytes
         Disk size in AUs: 2055 AUs
         Group Redundancy: 1
      Metadata Block Size: 4096 bytes
                  AU Size: 1048576 bytes
                   Stride: 113792 AUs
      Group Creation Time: 2015/10/27 10:00:00.144000
  File 1 Block 1 location: AU 0
              OCR Present: NO
---------------------------------------------------------------------------------


1.从ASM磁盘组中抽取控制文件
  
查看控制文件的信息:
 
SQL> show parameter control_files

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files     string +DATADG01/xedb/controlfile/current.256.894187571
  
+DATADG01/xedb/controlfile/current.256.894187571 这里256 是这个控制文件在+DATADG01/ 这个DISKGROUP中的FILE NUMBER
  
此外我们还需要ASM DISK的 DISCOVERY PATH信息,这完全可以从 ASM 的 SPFILE中的asm_diskstring 参数获得
 
  
[grid@rac01test ~]$  amdu -diskstring '/dev/raw/raw*' -extract datadg01.256
amdu_2016_03_15_16_40_48/
WARNING: Using brute force method to determine the size of /dev/raw/rawctl.
 There will be performance issues. Please check configuration to determine the cause for the failure of ioctl
AMDU-00204: Disk N0006 is in currently mounted diskgroup DATADG01
AMDU-00201: Disk N0006: '/dev/raw/raw15'
  
查看抽取的控制文件

[grid@rac01test ~]$ cd amdu_2016_03_15_16_40_48/
[grid@rac01test amdu_2016_03_15_16_40_48]$ ls
DATADG01_256.f  report.txt
  
  
2.抽取数据文件

2.1 查看数据文件的位置,然后一次导出

SQL> select name from v$datafile;

NAME
----------------------------------------------
+DATADG01/xedb/datafile/system.259.894187575
+DATADG01/xedb/datafile/sysaux.260.894187589
+DATADG01/xedb/datafile/undotbs1.261.894187601
+DATADG01/xedb/datafile/undotbs2.263.894187615
+DATADG01/xedb/datafile/users.264.894187621
+DATADG01/xedb/datafile/users.268.895081225
+DATADG01/xedb/datafile/users.269.895582787
+DATADG01/xedb/datafile/users.280.898078315

2.2 抽取文件
[grid@rac01test ~]$ amdu -diskstring '/dev/raw/raw*' -extract datadg01.259     
[grid@rac01test ~]$ amdu -diskstring '/dev/raw/raw*' -extract datadg01.260 
[grid@rac01test ~]$ amdu -diskstring '/dev/raw/raw*' -extract datadg01.261 
......

2.3 重命名数据文件,并移动到同一个目录下,准备挂载数据文件

[oracle@rac01test ~]$mv  datadg01_259.f system.259.894187575
[oracle@rac01test ~]$mv  datadg01_260.f sysaux.260.894187589
[oracle@rac01test ~]$mv  datadg01_261.f undotbs1.261.894187601
... ... 
 
 
 
2.4 挂载前需要修改pfile文件,下面是open数据库是control file如何识别不同路径的datafile,我使用convert参数来解决(也可以是用set newname的方式)
db_file_name_convert='+DATADG01/xedb/datafile/','/oradata/aux' 
添加完pfile,启动数据库,最终成功启动数据库

你可能感兴趣的:(amdu,AMDU抽取数据)