使用AMDU工具从无法MOUNT的DISKGROUP中抽取数据文件

AMDU是ORACLE针对ASM开发的源数据转储工具,其全称为ASM Metadata Dump Utility(AMDU)

AMDU具体以下三个主要功能:

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

这里我们将用到使用AMDU抽取ASM DISKGROUP中的数据文件; ASM作为近几年最流行的存储解决方案, 大家对他的优缺点都有所了解,其中的问题之一就是ASM是个黑盒。 一旦DISKGROUP无法MOUNT起来就意味着传统方法无法以磁盘为基础导出任何数据。

AMDU解决了这一问题, 这里我们仅讨论在ASM DISKGROUP 无法MOUNT的情况下的范畴,不讨论RDBMS数据文件在ASM下讹误的处理。

注意 AMDU虽然是11g才发布的工具,但是实际对10g的ASM 也有效。

当前你可能遇到的场景是, ORACLE DATABASE的SPFILE、CONTROLFILE、DATAFILE均存放在ASM DISKGROUP中,而由于一些ASM ORA-600错误导致无法MOUNT该DISKGROUP, 你需要的是使用AMDU将这些文件从ASM DISK中转储出来。

场景 1 丢失了 包括SPFILE、CONTROLFILE、DATAFILE

恢复步骤: 从备份中还原出SPFILE ,即便没有SPFILE的话PFILE也可以,总之你需要从参数文件中了解control_files的信息

SQL> show parameter control_files

NAME TYPE VALUE
———————————— ———– ——————————
control_files string +DATA/prodb/controlfile/curren
t.260.794687955, +FRA/prodb/co
ntrolfile/current.256.79468795
5

获得control_files 控制文件在ASM中的位置后事情就好办了,+DATA/prodb/controlfile/current.260.794687955 这里 260是这个控制文件在+DATA 这个DISKGROUP中的FILE NUMBER

此外我们还需要ASM DISK的DISCOVERY PATH信息,这完全可以从ASM的SPFILE中的asm_diskstring 参数获得

[oracle@mlab2 oracle.SupportTools]$ unzip amdu_X86-64.zip
Archive: amdu_X86-64.zip
inflating: libskgxp11.so
inflating: amdu
inflating: libnnz11.so
inflating: libclntsh.so.11.1

[oracle@mlab2 oracle.SupportTools]$ export LD_LIBRARY_PATH=./

[oracle@mlab2 oracle.SupportTools]$ ./amdu -diskstring ‘/dev/asm*’ -extract data.260
amdu_2009_10_10_20_19_17/
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_19_17/
[oracle@mlab2 amdu_2009_10_10_20_19_17]$ ls
DATA_260.f report.txt
[oracle@mlab2 amdu_2009_10_10_20_19_17]$ ls -l
total 9548
-rw-r–r– 1 oracle oinstall 9748480 Oct 10 20:19 DATA_260.f
-rw-r–r– 1 oracle oinstall 9441 Oct 10 20:19 report.txt

以上转储出来的DATA_260.f 就是控制文件,我们使用该控制文件startup mount RDBMS实例:

SQL> alter system set control_files=’/opt/oracle.SupportTools/amdu_2009_10_10_20_19_17/DATA_260.f’ 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 命令即可 导出数据文件到操作系统

[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)

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

author's avatar The Maclean Liu
Advanced Customer Services
AskMaclean Logo 10g_ocm SHOUG

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today