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结尾,一般来说该字段总是空格。
Leave a Reply