联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
本篇主要测试在ASM未启动状态下,如何找出找出文件文件对应的AU,并且通过dd还原出数据文件
参考文档:ASM的文件管理深入解析(内含开源的ASM文件挖掘研究版程序)
模拟测试数据
SQL> alter database datafile '+XIFENFEI/xff/datafile/xifenfei.268.781905429' resize 50M ; Database altered. SQL> alter database datafile '+XIFENFEI/xff/datafile/xifenfei.268.781905429' autoextend off; Database altered. SQL> select GROUP_NUMBER from V$ASM_DISKGROUP where NAME like '%XIFENFEI%'; GROUP_NUMBER ------------ 2 SQL> select DISK_NUMBER,path from v$asm_disk where GROUP_NUMBER=2; DISK_NUMBER PATH ----------- --------------------------------------------- 1 /dev/oracleasm/disks/VOL4 0 /dev/oracleasm/disks/VOL3 SQL> create table t_xifenfei tablespace xifenfei 2 as 3 select * from dba_objects; Table created. SQL> select count(*) from t_xifenfei; COUNT(*) ---------- 74537
kfed找出相关AU映射
------------------------------------------------------------------------------ 1号文件的第一个AU(0号盘2号AU)中,只能保存1至255号文件的。 从256号文件开始,AU的分布信息保存在1号文件第二个AU中,也就是(1号盘,64号AU)。 其中第一个块(0号块),对应256号文件。1号块对应257号文件,等等,依此类推。 ------------------------------------------------------------------------------ [grid@rac1 disks]$ kfed read /dev/oracleasm/disks/VOL3 aun=2 blkn=1|more kfffde[0].xptr.au: 2 ; 0x4a0: 0x00000002 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 40 ; 0x4a7: 0x28 kfffde[1].xptr.au: 64 ; 0x4a8: 0x00000040 kfffde[1].xptr.disk: 1 ; 0x4ac: 0x0001 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 107 ; 0x4af: 0x6b kfffde[2].xptr.au: 4294967295 ; 0x4b0: 0xffffffff kfffde[2].xptr.disk: 65535 ; 0x4b4: 0xffff kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0 kfffde[2].xptr.chk: 42 ; 0x4b7: 0x2a [grid@rac1 disks]$ kfed read /dev/oracleasm/disks/VOL4 aun=64 blkn=12|more kfffde[0].xptr.au: 681 ; 0x4a0: 0x000002a9 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 129 ; 0x4a7: 0x81 kfffde[1].xptr.au: 1092 ; 0x4a8: 0x00000444 kfffde[1].xptr.disk: 1 ; 0x4ac: 0x0001 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 107 ; 0x4af: 0x6b kfffde[2].xptr.au: 1093 ; 0x4b0: 0x00000445 kfffde[2].xptr.disk: 1 ; 0x4b4: 0x0001 kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0 kfffde[2].xptr.chk: 106 ; 0x4b7: 0x6a kfffde[3].xptr.au: 682 ; 0x4b8: 0x000002aa kfffde[3].xptr.disk: 0 ; 0x4bc: 0x0000 kfffde[3].xptr.flags: 0 ; 0x4be: L=0 E=0 D=0 S=0 kfffde[3].xptr.chk: 130 ; 0x4bf: 0x82 kfffde[4].xptr.au: 1094 ; 0x4c0: 0x00000446 kfffde[4].xptr.disk: 1 ; 0x4c4: 0x0001 kfffde[4].xptr.flags: 0 ; 0x4c6: L=0 E=0 D=0 S=0 kfffde[4].xptr.chk: 105 ; 0x4c7: 0x69 kfffde[5].xptr.au: 1095 ; 0x4c8: 0x00000447 kfffde[5].xptr.disk: 1 ; 0x4cc: 0x0001 kfffde[5].xptr.flags: 0 ; 0x4ce: L=0 E=0 D=0 S=0 kfffde[5].xptr.chk: 104 ; 0x4cf: 0x68 kfffde[6].xptr.au: 683 ; 0x4d0: 0x000002ab kfffde[6].xptr.disk: 0 ; 0x4d4: 0x0000 kfffde[6].xptr.flags: 0 ; 0x4d6: L=0 E=0 D=0 S=0 kfffde[6].xptr.chk: 131 ; 0x4d7: 0x83 kfffde[7].xptr.au: 1096 ; 0x4d8: 0x00000448 kfffde[7].xptr.disk: 1 ; 0x4dc: 0x0001 kfffde[7].xptr.flags: 0 ; 0x4de: L=0 E=0 D=0 S=0 kfffde[7].xptr.chk: 103 ; 0x4df: 0x67 kfffde[8].xptr.au: 684 ; 0x4e0: 0x000002ac kfffde[8].xptr.disk: 0 ; 0x4e4: 0x0000 kfffde[8].xptr.flags: 0 ; 0x4e6: L=0 E=0 D=0 S=0 kfffde[8].xptr.chk: 132 ; 0x4e7: 0x84 kfffde[9].xptr.au: 1097 ; 0x4e8: 0x00000449 kfffde[9].xptr.disk: 1 ; 0x4ec: 0x0001 kfffde[9].xptr.flags: 0 ; 0x4ee: L=0 E=0 D=0 S=0 kfffde[9].xptr.chk: 102 ; 0x4ef: 0x66 kfffde[10].xptr.au: 1098 ; 0x4f0: 0x0000044a kfffde[10].xptr.disk: 1 ; 0x4f4: 0x0001 kfffde[10].xptr.flags: 0 ; 0x4f6: L=0 E=0 D=0 S=0 kfffde[10].xptr.chk: 101 ; 0x4f7: 0x65 kfffde[11].xptr.au: 685 ; 0x4f8: 0x000002ad kfffde[11].xptr.disk: 0 ; 0x4fc: 0x0000 kfffde[11].xptr.flags: 0 ; 0x4fe: L=0 E=0 D=0 S=0 kfffde[11].xptr.chk: 133 ; 0x4ff: 0x85 kfffde[12].xptr.au: 1099 ; 0x500: 0x0000044b kfffde[12].xptr.disk: 1 ; 0x504: 0x0001 kfffde[12].xptr.flags: 0 ; 0x506: L=0 E=0 D=0 S=0 kfffde[12].xptr.chk: 100 ; 0x507: 0x64 kfffde[13].xptr.au: 686 ; 0x508: 0x000002ae kfffde[13].xptr.disk: 0 ; 0x50c: 0x0000 kfffde[13].xptr.flags: 0 ; 0x50e: L=0 E=0 D=0 S=0 kfffde[13].xptr.chk: 134 ; 0x50f: 0x86 kfffde[14].xptr.au: 1100 ; 0x510: 0x0000044c kfffde[14].xptr.disk: 1 ; 0x514: 0x0001 kfffde[14].xptr.flags: 0 ; 0x516: L=0 E=0 D=0 S=0 kfffde[14].xptr.chk: 99 ; 0x517: 0x63 kfffde[15].xptr.au: 1101 ; 0x518: 0x0000044d kfffde[15].xptr.disk: 1 ; 0x51c: 0x0001 kfffde[15].xptr.flags: 0 ; 0x51e: L=0 E=0 D=0 S=0 kfffde[15].xptr.chk: 98 ; 0x51f: 0x62 kfffde[16].xptr.au: 687 ; 0x520: 0x000002af kfffde[16].xptr.disk: 0 ; 0x524: 0x0000 kfffde[16].xptr.flags: 0 ; 0x526: L=0 E=0 D=0 S=0 kfffde[16].xptr.chk: 135 ; 0x527: 0x87 kfffde[17].xptr.au: 1102 ; 0x528: 0x0000044e kfffde[17].xptr.disk: 1 ; 0x52c: 0x0001 kfffde[17].xptr.flags: 0 ; 0x52e: L=0 E=0 D=0 S=0 kfffde[17].xptr.chk: 97 ; 0x52f: 0x61 kfffde[18].xptr.au: 1103 ; 0x530: 0x0000044f kfffde[18].xptr.disk: 1 ; 0x534: 0x0001 kfffde[18].xptr.flags: 0 ; 0x536: L=0 E=0 D=0 S=0 kfffde[18].xptr.chk: 96 ; 0x537: 0x60 kfffde[19].xptr.au: 688 ; 0x538: 0x000002b0 kfffde[19].xptr.disk: 0 ; 0x53c: 0x0000 kfffde[19].xptr.flags: 0 ; 0x53e: L=0 E=0 D=0 S=0 kfffde[19].xptr.chk: 152 ; 0x53f: 0x98 kfffde[20].xptr.au: 1104 ; 0x540: 0x00000450 kfffde[20].xptr.disk: 1 ; 0x544: 0x0001 kfffde[20].xptr.flags: 0 ; 0x546: L=0 E=0 D=0 S=0 kfffde[20].xptr.chk: 127 ; 0x547: 0x7f kfffde[21].xptr.au: 689 ; 0x548: 0x000002b1 kfffde[21].xptr.disk: 0 ; 0x54c: 0x0000 kfffde[21].xptr.flags: 0 ; 0x54e: L=0 E=0 D=0 S=0 kfffde[21].xptr.chk: 153 ; 0x54f: 0x99 kfffde[22].xptr.au: 1105 ; 0x550: 0x00000451 kfffde[22].xptr.disk: 1 ; 0x554: 0x0001 kfffde[22].xptr.flags: 0 ; 0x556: L=0 E=0 D=0 S=0 kfffde[22].xptr.chk: 126 ; 0x557: 0x7e kfffde[23].xptr.au: 1106 ; 0x558: 0x00000452 kfffde[23].xptr.disk: 1 ; 0x55c: 0x0001 kfffde[23].xptr.flags: 0 ; 0x55e: L=0 E=0 D=0 S=0 kfffde[23].xptr.chk: 125 ; 0x55f: 0x7d kfffde[24].xptr.au: 690 ; 0x560: 0x000002b2 kfffde[24].xptr.disk: 0 ; 0x564: 0x0000 kfffde[24].xptr.flags: 0 ; 0x566: L=0 E=0 D=0 S=0 kfffde[24].xptr.chk: 154 ; 0x567: 0x9a kfffde[25].xptr.au: 1107 ; 0x568: 0x00000453 kfffde[25].xptr.disk: 1 ; 0x56c: 0x0001 kfffde[25].xptr.flags: 0 ; 0x56e: L=0 E=0 D=0 S=0 kfffde[25].xptr.chk: 124 ; 0x56f: 0x7c kfffde[26].xptr.au: 691 ; 0x570: 0x000002b3 kfffde[26].xptr.disk: 0 ; 0x574: 0x0000 kfffde[26].xptr.flags: 0 ; 0x576: L=0 E=0 D=0 S=0 kfffde[26].xptr.chk: 155 ; 0x577: 0x9b kfffde[27].xptr.au: 1108 ; 0x578: 0x00000454 kfffde[27].xptr.disk: 1 ; 0x57c: 0x0001 kfffde[27].xptr.flags: 0 ; 0x57e: L=0 E=0 D=0 S=0 kfffde[27].xptr.chk: 123 ; 0x57f: 0x7b kfffde[28].xptr.au: 1109 ; 0x580: 0x00000455 kfffde[28].xptr.disk: 1 ; 0x584: 0x0001 kfffde[28].xptr.flags: 0 ; 0x586: L=0 E=0 D=0 S=0 kfffde[28].xptr.chk: 122 ; 0x587: 0x7a kfffde[29].xptr.au: 692 ; 0x588: 0x000002b4 kfffde[29].xptr.disk: 0 ; 0x58c: 0x0000 kfffde[29].xptr.flags: 0 ; 0x58e: L=0 E=0 D=0 S=0 kfffde[29].xptr.chk: 156 ; 0x58f: 0x9c kfffde[30].xptr.au: 1110 ; 0x590: 0x00000456 kfffde[30].xptr.disk: 1 ; 0x594: 0x0001 kfffde[30].xptr.flags: 0 ; 0x596: L=0 E=0 D=0 S=0 kfffde[30].xptr.chk: 121 ; 0x597: 0x79 kfffde[31].xptr.au: 1111 ; 0x598: 0x00000457 kfffde[31].xptr.disk: 1 ; 0x59c: 0x0001 kfffde[31].xptr.flags: 0 ; 0x59e: L=0 E=0 D=0 S=0 kfffde[31].xptr.chk: 120 ; 0x59f: 0x78 kfffde[32].xptr.au: 693 ; 0x5a0: 0x000002b5 kfffde[32].xptr.disk: 0 ; 0x5a4: 0x0000 kfffde[32].xptr.flags: 0 ; 0x5a6: L=0 E=0 D=0 S=0 kfffde[32].xptr.chk: 157 ; 0x5a7: 0x9d kfffde[33].xptr.au: 1112 ; 0x5a8: 0x00000458 kfffde[33].xptr.disk: 1 ; 0x5ac: 0x0001 kfffde[33].xptr.flags: 0 ; 0x5ae: L=0 E=0 D=0 S=0 kfffde[33].xptr.chk: 119 ; 0x5af: 0x77 kfffde[34].xptr.au: 694 ; 0x5b0: 0x000002b6 kfffde[34].xptr.disk: 0 ; 0x5b4: 0x0000 kfffde[34].xptr.flags: 0 ; 0x5b6: L=0 E=0 D=0 S=0 kfffde[34].xptr.chk: 158 ; 0x5b7: 0x9e kfffde[35].xptr.au: 1113 ; 0x5b8: 0x00000459 kfffde[35].xptr.disk: 1 ; 0x5bc: 0x0001 kfffde[35].xptr.flags: 0 ; 0x5be: L=0 E=0 D=0 S=0 kfffde[35].xptr.chk: 118 ; 0x5bf: 0x76 kfffde[36].xptr.au: 1114 ; 0x5c0: 0x0000045a kfffde[36].xptr.disk: 1 ; 0x5c4: 0x0001 kfffde[36].xptr.flags: 0 ; 0x5c6: L=0 E=0 D=0 S=0 kfffde[36].xptr.chk: 117 ; 0x5c7: 0x75 kfffde[37].xptr.au: 695 ; 0x5c8: 0x000002b7 kfffde[37].xptr.disk: 0 ; 0x5cc: 0x0000 kfffde[37].xptr.flags: 0 ; 0x5ce: L=0 E=0 D=0 S=0 kfffde[37].xptr.chk: 159 ; 0x5cf: 0x9f kfffde[38].xptr.au: 1115 ; 0x5d0: 0x0000045b kfffde[38].xptr.disk: 1 ; 0x5d4: 0x0001 kfffde[38].xptr.flags: 0 ; 0x5d6: L=0 E=0 D=0 S=0 kfffde[38].xptr.chk: 116 ; 0x5d7: 0x74 kfffde[39].xptr.au: 1116 ; 0x5d8: 0x0000045c kfffde[39].xptr.disk: 1 ; 0x5dc: 0x0001 kfffde[39].xptr.flags: 0 ; 0x5de: L=0 E=0 D=0 S=0 kfffde[39].xptr.chk: 115 ; 0x5df: 0x73 kfffde[40].xptr.au: 696 ; 0x5e0: 0x000002b8 kfffde[40].xptr.disk: 0 ; 0x5e4: 0x0000 kfffde[40].xptr.flags: 0 ; 0x5e6: L=0 E=0 D=0 S=0 kfffde[40].xptr.chk: 144 ; 0x5e7: 0x90 kfffde[41].xptr.au: 1117 ; 0x5e8: 0x0000045d kfffde[41].xptr.disk: 1 ; 0x5ec: 0x0001 kfffde[41].xptr.flags: 0 ; 0x5ee: L=0 E=0 D=0 S=0 kfffde[41].xptr.chk: 114 ; 0x5ef: 0x72 kfffde[42].xptr.au: 697 ; 0x5f0: 0x000002b9 kfffde[42].xptr.disk: 0 ; 0x5f4: 0x0000 kfffde[42].xptr.flags: 0 ; 0x5f6: L=0 E=0 D=0 S=0 kfffde[42].xptr.chk: 145 ; 0x5f7: 0x91 kfffde[43].xptr.au: 1118 ; 0x5f8: 0x0000045e kfffde[43].xptr.disk: 1 ; 0x5fc: 0x0001 kfffde[43].xptr.flags: 0 ; 0x5fe: L=0 E=0 D=0 S=0 kfffde[43].xptr.chk: 113 ; 0x5ff: 0x71 kfffde[44].xptr.au: 1119 ; 0x600: 0x0000045f kfffde[44].xptr.disk: 1 ; 0x604: 0x0001 kfffde[44].xptr.flags: 0 ; 0x606: L=0 E=0 D=0 S=0 kfffde[44].xptr.chk: 112 ; 0x607: 0x70 kfffde[45].xptr.au: 698 ; 0x608: 0x000002ba kfffde[45].xptr.disk: 0 ; 0x60c: 0x0000 kfffde[45].xptr.flags: 0 ; 0x60e: L=0 E=0 D=0 S=0 kfffde[45].xptr.chk: 146 ; 0x60f: 0x92 kfffde[46].xptr.au: 1120 ; 0x610: 0x00000460 kfffde[46].xptr.disk: 1 ; 0x614: 0x0001 kfffde[46].xptr.flags: 0 ; 0x616: L=0 E=0 D=0 S=0 kfffde[46].xptr.chk: 79 ; 0x617: 0x4f kfffde[47].xptr.au: 699 ; 0x618: 0x000002bb kfffde[47].xptr.disk: 0 ; 0x61c: 0x0000 kfffde[47].xptr.flags: 0 ; 0x61e: L=0 E=0 D=0 S=0 kfffde[47].xptr.chk: 147 ; 0x61f: 0x93 kfffde[48].xptr.au: 1121 ; 0x620: 0x00000461 kfffde[48].xptr.disk: 1 ; 0x624: 0x0001 kfffde[48].xptr.flags: 0 ; 0x626: L=0 E=0 D=0 S=0 kfffde[48].xptr.chk: 78 ; 0x627: 0x4e kfffde[49].xptr.au: 1122 ; 0x628: 0x00000462 kfffde[49].xptr.disk: 1 ; 0x62c: 0x0001 kfffde[49].xptr.flags: 0 ; 0x62e: L=0 E=0 D=0 S=0 kfffde[49].xptr.chk: 77 ; 0x62f: 0x4d kfffde[50].xptr.au: 700 ; 0x630: 0x000002bc kfffde[50].xptr.disk: 0 ; 0x634: 0x0000 kfffde[50].xptr.flags: 0 ; 0x636: L=0 E=0 D=0 S=0 kfffde[50].xptr.chk: 148 ; 0x637: 0x94 --到此截止 kfffde[51].xptr.au: 4294967295 ; 0x638: 0xffffffff kfffde[51].xptr.disk: 65535 ; 0x63c: 0xffff kfffde[51].xptr.flags: 0 ; 0x63e: L=0 E=0 D=0 S=0 kfffde[51].xptr.chk: 42 ; 0x63f: 0x2a
dd操作
[grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL3 bs=1024k count=1 skip=681 seek=0 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0924808 seconds, 11.3 MB/s [grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL4 bs=1024k count=1 skip=1092 seek=1 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.051765 seconds, 20.3 MB/s [grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL4 bs=1024k count=1 skip=1093 seek=2 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0695681 seconds, 15.1 MB/s [grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL3 bs=1024k count=1 skip=682 seek=3 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0516708 seconds, 20.3 MB/s …………类此处理………… [grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL4 bs=1024k count=1 skip=1122 seek=49 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0699421 seconds, 15.0 MB/s [grid@rac1 disks]$ dd if=/dev/oracleasm/disks/VOL3 bs=1024k count=1 skip=700 seek=50 of=/tmp/xifenfei01.dbf 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0650649 seconds, 16.1 MB/s
修改所有者
[root@rac1 ~]# chown oracle.oinstall /tmp/xifenfei01.dbf [root@rac1 ~]# ll /tmp/xifenfei01.dbf -rw-r--r-- 1 oracle oinstall 53477376 Apr 30 12:57 /tmp/xifenfei01.dbf
dbv验证数据文件
[oracle@rac1 ~]$ dbv file='+XIFENFEI/xff/datafile/xifenfei.268.781905429' userid=sys/xifenfei DBVERIFY: Release 11.2.0.3.0 - Production on Mon Apr 30 12:53:32 2012 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = +XIFENFEI/xff/datafile/xifenfei.268.781905429 DBVERIFY - Verification complete Total Pages Examined : 6400 Total Pages Processed (Data) : 1066 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 156 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 5178 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 0 (0.0) [oracle@rac1 ~]$ dbv file='/tmp/xifenfei01.dbf' DBVERIFY: Release 11.2.0.3.0 - Production on Mon Apr 30 12:53:50 2012 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = /tmp/xifenfei01.dbf DBVERIFY - Verification complete Total Pages Examined : 6400 Total Pages Processed (Data) : 1066 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 156 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 5178 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 1039267 (0.1039267)
数据库验证数据文件
SQL> alter database datafile '+XIFENFEI/xff/datafile/xifenfei.268.781905429' offline; Database altered. SQL> alter database rename file '+XIFENFEI/xff/datafile/xifenfei.268.781905429' 2 to '/tmp/xifenfei01.dbf'; Database altered. SQL> recover datafile '/tmp/xifenfei01.dbf'; Media recovery complete. SQL> alter database datafile '/tmp/xifenfei01.dbf' online; Database altered. SQL> select count(*) from t_xifenfei; COUNT(*) ---------- 74537
通过查询x$kffxp表,可以得到数据文件和AU在磁盘上的映射关系
模拟ASM中数据文件大于60M
kfed查看相关数据
这个方法,在ORACLE11g中,AU=4M 好像不行呀,在0号盘2号AU中无法找到AU的分布信息。
mfkqwyc86,
有相关方法能查到吗?
学习了,但是偶还需要更多啊
blkn=12
表示12号数据文件v$datafile.file#=12