Oracle ASM保护工具ADHU

在11g中asm会在Disk Header的AU 1的最后第二个block中备份asm disk header。虽然在10.2中没有这个自动备份disk header的特性,但使用ADHU工具后该工具会以同样备份目的使用该block(ADHU补全了10.2.0.5之前没有disk header自动备份的功能)。ADHU工具同样可以将disk header的备份存放到本地文件系统中。已备份的Block可以通过adhu 工具的-repair选项来恢复出来。 以文件系统备份的block可以通过kfed工具来查看,也可以通过dd命令来恢复到磁盘上。

换句话说,对于10.2.0.5之前的asm 磁盘头常见的损坏/丢失情况,ADHU工具恰恰是一个有效的保护盾。

而对于10.2.0.5和11.1.0.7以后的asm,使用adhu也是一个不错的选择。

 

使用方法:

 

adhu [-dir dirname ] [-repair] [-quiet] [-readonly] [-syslog mask ] devname

 

默认情况下adhu将disk header备份为当前目录下的备份文件。 使用-dir选项可以指定存放的目录。

当需要使用adhu去修复一个损坏的asm disk header时使用-repair 选项。

-quiet 选项将过滤所有正常的输出信息,若执行成功则不打印任何输出。

-readonly选项 以只读方式来打开disk device,这样备份block将不被写入,而备份文件将在可能的情况下写入。

-syslog选项控制是否写出结果到系统日志和标准输出。

devname代表为asm disk的设备文件,asm头的备份文件将以该device name为基础,并存放在当前目录或者-dir指定的目录。

 

ADHU is  a utility to examine ASM disk headers, report status, create backups, and optionally restore them when the header is corrupt.

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

 

诗檀软件专业数据库修复团队

 

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

 

 

了解AMDU工具生成的MAP文件

AMDU是ORACLE针对ASM开发的源数据转储工具,其全称为ASM Metadata Dump Utility(AMDU), 在《使用AMDU工具从无法MOUNT的DISKGROUP中抽取数据文件》中我们介绍了AMDU抽取数据库文件的方法, 今天我们来介绍AMDU使用DUMP转储模式时生成的MAP文件的含义。

在DUMP模式下AMDU即会生成DISKGROUP的IMAGE镜像文件,也会生成MAP文件:

 

 

[oracle@lab1 oracle.SupportTools]$ ./amdu -diskstring '/dev/asm*' -dump DATA
amdu_2012_09_24_02_14_12/

AMDU-00204: Disk N0002 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0002: '/dev/asm-diskb'

[oracle@lab1 oracle.SupportTools]$ cd amdu_2012_09_24_02_14_12/

[oracle@lab1 amdu_2012_09_24_02_14_12]$ head -10 DATA.map 

N0002 D0000 R00 A00000000 F00000000 I0 E00000000 U00 C00256 S0001 B0000000000  
N0002 D0000 R00 A00000001 F00000000 I0 E00000000 U00 C00256 S0001 B0001048576  
N0002 D0000 R00 A00000002 F00000001 I0 E00000000 U00 C00256 S0001 B0002097152  
N0002 D0000 R00 A00000003 F00000002 I0 E00000000 U00 C00256 S0001 B0003145728  
N0002 D0000 R00 A00000004 F00000003 I0 E00000000 U00 C00256 S0001 B0004194304  
N0002 D0000 R00 A00000005 F00000003 I0 E00000002 U00 C00256 S0001 B0005242880  
N0002 D0000 R00 A00000006 F00000003 I0 E00000004 U00 C00256 S0001 B0006291456  
N0002 D0000 R00 A00000007 F00000003 I0 E00000006 U00 C00256 S0001 B0007340032  
N0002 D0000 R00 A00000008 F00000003 I0 E00000008 U00 C00256 S0001 B0008388608  
N0002 D0000 R00 A00000009 F00000003 I0 E00000010 U00 C00256 S0001 B0009437184

 

 

AMDU的MAP文件是ASCII编码的文件,其内容描述了对应某个DISKGROUP的镜像文件中的数据。 AMDU针对每一个DISKGROUP创建一个map文件,一个MAP文件对应一组image file镜像文件。 map文件中的每一行对应已转储到image file镜像文件中的allocation unit AU。 存在这样的可能,即一个AU虽然实际没有数据被写入到image file镜像中,但实际在map文件中却又对应的记录。 map文件中的每一行均有着相同的字段和字段长度。 map中的行依据镜像文件中数据的顺序而排序, 同时也包含对应到镜像文件中数据的绝对位置,以便通过多种排序来跟踪AU。

 

下面要介绍的字段将出现在map文件中的每一行中。这些字段以空格分隔,每一个字段均以一个字母开头并紧跟着多位数字,数字以0作为前导。下面将介绍每个字段的含义:

Disk Report Number(Nxxxx):例如N0002 ,每个被AMDU探测到的ASM DISK都会被分配一个disk report number。这个数字也被写入在AMDU报告文件中(report file),以及该DISK的其他信息。 存在这种可能,同一个diskgroup中被探测到的2个磁盘存在同样的DISK NUMBER,此时这2个磁盘将被分配不同的disk report number。

Disk Number(Dxxxx):例如D0000; 这个字段是从ASM DISK header中抽取到的disk number。若抽取到的disk number无效或者磁盘头部无法被识别则置为9999。

Disk Repeat(Rxx): 例如R00; 一般总是为0,仅在AMDU识别大量同一个DISKGROUP下同样disk number的时候可能被增加。

Allocation Unit(AU  Axxxxxxxx):例如A00000000。 指数据存放在ASM DISK中的AU位置。若ASM DISK超过100 TB& AU是一兆的情况,则该字段会溢出8位。

 

FILE Number(Fxxxxxxxx): 例如F00000000, 指该DISKGROUP中的拥有该盘区的ASM FILE Number文件号。 若该数字小于256则为ASM源数据或ASM注册信息。 如果是物理地址源数据则其FILE NUMBER为00000000。

 

Indirect flag(Ix):例如I0。 若该盘区属于某个文件则为0, 否则为1

 

Extent Number(Exxxxxxxx),例如E00000000; 文件中的物理extent号。此是FILE EXTENT MAP中的索引,数据库实例使用该字段定位AU。若文件被2路镜像,则Extent Number为偶数的是primary extent,奇数的是secondary copy。对于物理地址源数据,则是该源数据内的extent号。

 

AU within extent(Uxx):例如U00 对于大文件可以使用大盘区。

 

Block count(Cxxxxx):例如C00256, 为从AU中拷贝到镜像文件中的块总数, 一般来说都是4k大小的block

 

Image File Sequence Number(Sxxxx):S0001 由于DUMP单个的镜像文件不超过2GB,所以该字段对应转储的image file号。

 

Byte Offset in Image File(Bxxxxxxxxxx):例如B0001048576, 对应为镜像文件中该块的位置

 

Corrupt Block Flag(X0),若该AU中存在坏块,则改行以X结尾,一般来说该字段总是空格。

 

沪ICP备14014813号-2

沪公网安备 31010802001379号