oracle 12c 中asm元数据是否有所变化
本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客
本文链接地址: oracle 12c 中asm元数据是否有所变化
oracle 12c 已经发布了几个月了,最近太忙,一直没时间研究12c,今天抽空研究一下12c 中asm的元数据是否有所改变,
经过测试发现基本上毫无变化,如下是测试过程:
++++12 c asm instance
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[grid@12c_single ~]$ sqlplus "/as sysasm" SQL*Plus: Release 12.1.0.1.0 Production on Wed Aug 14 03:30:36 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Automatic Storage Management option SQL> alter diskgroup data mount; Diskgroup altered. SQL> show parameter instance NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ _dummy_instance boolean TRUE cluster_database_instances integer 1 instance_name string +ASM instance_number integer 1 instance_type string ASM SQL> SQL> select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents 2 from x$kffxp 3 where group_kffxp=1 4 and disk_kffxp <> 65534 5 group by number_kffxp, disk_kffxp; FILE# DISK# EXTENTS ---------- ---------- ---------- 1 0 1 1 1 1 2 0 1 3 0 21 3 1 21 4 0 1 4 1 1 5 0 1 6 1 1 256 0 386 256 1 386 。。。。。 274 0 130 274 1 132 275 0 337 275 1 335 276 0 11 276 1 10 50 rows selected. |
这里的file 1~file 6其实都是元数据,不多说了,以前写过很多类似的文章了。 通常来讲,我们比较关注的是
file directory和alias directory,以及disk header。
首先我们来看下file directory,先随便找个datafile 来进行说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
FILE# NAME BYTES/1024/1024 ---------- -------------------------------------------------------------------------------- --------------- 1 +DATA/KILLDB/DATAFILE/system.257.823363955 780 3 +DATA/KILLDB/DATAFILE/sysaux.256.823363841 770 4 +DATA/KILLDB/DATAFILE/undotbs1.259.823364125 225 5 +DATA/KILLDB/DD7C48AA5A4404A2E04325AAE80A403C/DATAFILE/system.270.823364267 260 6 +DATA/KILLDB/DATAFILE/users.258.823364123 5 7 +DATA/KILLDB/DD7C48AA5A4404A2E04325AAE80A403C/DATAFILE/sysaux.269.823364265 670 10 +DATA/KILLDB/E3DA76F042E228D7E043136DA8C0825B/DATAFILE/system.274.823409067 260 11 +DATA/KILLDB/E3DA76F042E228D7E043136DA8C0825B/DATAFILE/sysaux.275.823409067 670 8 rows selected. SQL> |
这里我以datafile 6为例进行说明,其asm file number为258.
首先我们定位到file directory:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm1 aun=2 blkn=1| more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 1 ; 0x004: blk=1 kfbh.block.obj: 1 ; 0x008: file=1 kfbh.check: 4126565344 ; 0x00c: 0xf5f663e0 kfbh.fcn.base: 262 ; 0x010: 0x00000106 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfffdb.node.incarn: 1 ; 0x000: A=1 NUMM=0x0 kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kfffdb.hibytes: 0 ; 0x00c: 0x00000000 kfffdb.lobytes: 2097152 ; 0x010: 0x00200000 kfffdb.xtntcnt: 2 ; 0x014: 0x00000002 kfffdb.xtnteof: 2 ; 0x018: 0x00000002 kfffdb.blkSize: 4096 ; 0x01c: 0x00001000 kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0 kfffdb.fileType: 15 ; 0x021: 0x0f kfffdb.dXrs: 17 ; 0x022: SCHE=0x1 NUMB=0x1 kfffdb.iXrs: 17 ; 0x023: SCHE=0x1 NUMB=0x1 kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffff kfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000 kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000 kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000 kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000 kfffdb.xtntblk: 2 ; 0x03c: 0x0002 kfffdb.break: 60 ; 0x03e: 0x003c kfffdb.priZn: 0 ; 0x040: KFDZN_COLD kfffdb.secZn: 0 ; 0x041: KFDZN_COLD kfffdb.ub2spare: 0 ; 0x042: 0x0000 kfffdb.alias[0]: 4294967295 ; 0x044: 0xffffffff kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff kfffdb.strpwdth: 0 ; 0x04c: 0x00 kfffdb.strpsz: 0 ; 0x04d: 0x00 kfffdb.usmsz: 0 ; 0x04e: 0x0000 kfffdb.crets.hi: 32989616 ; 0x050: HOUR=0x10 DAYS=0xd MNTH=0x8 YEAR=0x7dd kfffdb.crets.lo: 75310080 ; 0x054: USEC=0x0 MSEC=0x349 SECS=0x7 MINS=0x1 kfffdb.modts.hi: 32989616 ; 0x058: HOUR=0x10 DAYS=0xd MNTH=0x8 YEAR=0x7dd kfffdb.modts.lo: 75310080 ; 0x05c: USEC=0x0 MSEC=0x349 SECS=0x7 MINS=0x1 kfffdb.dasz[0]: 0 ; 0x060: 0x00 kfffdb.dasz[1]: 0 ; 0x061: 0x00 kfffdb.dasz[2]: 0 ; 0x062: 0x00 kfffdb.dasz[3]: 0 ; 0x063: 0x00 kfffdb.permissn: 0 ; 0x064: 0x00 kfffdb.ub1spar1: 0 ; 0x065: 0x00 kfffdb.ub2spar2: 0 ; 0x066: 0x0000 kfffdb.user.entnum: 0 ; 0x068: 0x0000 kfffdb.user.entinc: 0 ; 0x06a: 0x0000 kfffdb.group.entnum: 0 ; 0x06c: 0x0000 kfffdb.group.entinc: 0 ; 0x06e: 0x0000 kfffdb.paswdblk: 0 ; 0x070: 0x00000000 kfffdb.spare[0]: 0 ; 0x074: 0x00000000 kfffdb.spare[1]: 0 ; 0x078: 0x00000000 kfffdb.spare[2]: 0 ; 0x07c: 0x00000000 kfffdb.spare[3]: 0 ; 0x080: 0x00000000 kfffdb.spare[4]: 0 ; 0x084: 0x00000000 kfffdb.spare[5]: 0 ; 0x088: 0x00000000 kfffdb.spare[6]: 0 ; 0x08c: 0x00000000 kfffdb.spare[7]: 0 ; 0x090: 0x00000000 kfffdb.spare[8]: 0 ; 0x094: 0x00000000 kfffdb.spare[9]: 0 ; 0x098: 0x00000000 kfffdb.spare[10]: 0 ; 0x09c: 0x00000000 kfffdb.usm: ; 0x0a0: length=0 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: 25 ; 0x4a8: 0x00000019 +++第25号au 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: 50 ; 0x4af: 0x32 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 。。。。。。 |
这里的au 2是元数据用的,那么对于datafile的信息来讲,就在第25号au中,且xptr.disk为1,
那么说明应该是在该diskgroup中 的第2个disk中,如下:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm2 aun=25 blkn=2| more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 258 ; 0x004: blk=258 kfbh.block.obj: 1 ; 0x008: file=1 kfbh.check: 436792063 ; 0x00c: 0x1a08eaff kfbh.fcn.base: 7145 ; 0x010: 0x00001be9 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfffdb.node.incarn: 823364123 ; 0x000: A=1 NUMM=0x1889c50d kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kfffdb.hibytes: 0 ; 0x00c: 0x00000000 kfffdb.lobytes: 5251072 ; 0x010: 0x00502000 kfffdb.xtntcnt: 6 ; 0x014: 0x00000006 kfffdb.xtnteof: 6 ; 0x018: 0x00000006 kfffdb.blkSize: 8192 ; 0x01c: 0x00002000 kfffdb.flags: 17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0 kfffdb.fileType: 12 ; 0x021: 0x0c kfffdb.dXrs: 17 ; 0x022: SCHE=0x1 NUMB=0x1 kfffdb.iXrs: 17 ; 0x023: SCHE=0x1 NUMB=0x1 kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffff kfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000 kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000 kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000 kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000 kfffdb.xtntblk: 6 ; 0x03c: 0x0006 kfffdb.break: 60 ; 0x03e: 0x003c kfffdb.priZn: 0 ; 0x040: KFDZN_COLD kfffdb.secZn: 0 ; 0x041: KFDZN_COLD kfffdb.ub2spare: 0 ; 0x042: 0x0000 kfffdb.alias[0]: 108 ; 0x044: 0x0000006c kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff kfffdb.strpwdth: 1 ; 0x04c: 0x01 kfffdb.strpsz: 20 ; 0x04d: 0x14 kfffdb.usmsz: 0 ; 0x04e: 0x0000 kfffdb.crets.hi: 32989616 ; 0x050: HOUR=0x10 DAYS=0xd MNTH=0x8 YEAR=0x7dd kfffdb.crets.lo: 1029890048 ; 0x054: USEC=0x0 MSEC=0xb8 SECS=0x16 MINS=0xf kfffdb.modts.hi: 32989635 ; 0x058: HOUR=0x3 DAYS=0xe MNTH=0x8 YEAR=0x7dd kfffdb.modts.lo: 0 ; 0x05c: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0 kfffdb.dasz[0]: 0 ; 0x060: 0x00 kfffdb.dasz[1]: 0 ; 0x061: 0x00 kfffdb.dasz[2]: 0 ; 0x062: 0x00 kfffdb.dasz[3]: 0 ; 0x063: 0x00 kfffdb.permissn: 0 ; 0x064: 0x00 kfffdb.ub1spar1: 0 ; 0x065: 0x00 kfffdb.ub2spar2: 0 ; 0x066: 0x0000 kfffdb.user.entnum: 0 ; 0x068: 0x0000 kfffdb.user.entinc: 0 ; 0x06a: 0x0000 kfffdb.group.entnum: 0 ; 0x06c: 0x0000 kfffdb.group.entinc: 0 ; 0x06e: 0x0000 kfffdb.paswdblk: 0 ; 0x070: 0x00000000 kfffdb.spare[0]: 0 ; 0x074: 0x00000000 kfffdb.spare[1]: 0 ; 0x078: 0x00000000 kfffdb.spare[2]: 0 ; 0x07c: 0x00000000 kfffdb.spare[3]: 0 ; 0x080: 0x00000000 kfffdb.spare[4]: 0 ; 0x084: 0x00000000 kfffdb.spare[5]: 0 ; 0x088: 0x00000000 kfffdb.spare[6]: 0 ; 0x08c: 0x00000000 kfffdb.spare[7]: 0 ; 0x090: 0x00000000 kfffdb.spare[8]: 0 ; 0x094: 0x00000000 kfffdb.spare[9]: 0 ; 0x098: 0x00000000 kfffdb.spare[10]: 0 ; 0x09c: 0x00000000 kfffdb.usm: ; 0x0a0: length=0 kfffde[0].xptr.au: 740 ; 0x4a0: 0x000002e4 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: 204 ; 0x4a7: 0xcc kfffde[1].xptr.au: 737 ; 0x4a8: 0x000002e1 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: 200 ; 0x4af: 0xc8 kfffde[2].xptr.au: 741 ; 0x4b0: 0x000002e5 kfffde[2].xptr.disk: 0 ; 0x4b4: 0x0000 kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0 kfffde[2].xptr.chk: 205 ; 0x4b7: 0xcd kfffde[3].xptr.au: 738 ; 0x4b8: 0x000002e2 kfffde[3].xptr.disk: 1 ; 0x4bc: 0x0001 kfffde[3].xptr.flags: 0 ; 0x4be: L=0 E=0 D=0 S=0 kfffde[3].xptr.chk: 203 ; 0x4bf: 0xcb kfffde[4].xptr.au: 742 ; 0x4c0: 0x000002e6 kfffde[4].xptr.disk: 0 ; 0x4c4: 0x0000 kfffde[4].xptr.flags: 0 ; 0x4c6: L=0 E=0 D=0 S=0 kfffde[4].xptr.chk: 206 ; 0x4c7: 0xce kfffde[5].xptr.au: 739 ; 0x4c8: 0x000002e3 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: 202 ; 0x4cf: 0xca kfffde[6].xptr.au: 4294967295 ; 0x4d0: 0xffffffff kfffde[6].xptr.disk: 65535 ; 0x4d4: 0xffff kfffde[6].xptr.flags: 0 ; 0x4d6: L=0 E=0 D=0 S=0 kfffde[6].xptr.chk: 42 ; 0x4d7: 0x2a ....... |
为什么这里是blkn=2呢 ?因为该datafile的asm file number是258,而asm中从第2个au开始(默认au 1m)是从256 号block开始,
那么这里就应该是258-256=2. 所以该文件的信息的au分配信息应该是在第2号block中.
从上面可以看到,该文件分配了6个au,每个au 大小为1m。
那么这个结果是否ok呢? 可以通过查询x$kffxp试图来进行确认,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SQL> select disk_kffxp, AU_kffxp, xnum_kffxp 2 from x$kffxp 3 where group_kffxp=1 4 and number_kffxp=258; DISK_KFFXP AU_KFFXP XNUM_KFFXP ---------- ---------- ---------- 0 740 0 1 737 1 0 741 2 1 738 3 0 742 4 1 739 5 6 rows selected. SQL> |
我们可以看到,完全一致。
接下来,我们继续来看下另外一个重要的asm metadata:alias directory.
从最前面的查询我们知道file 6是alias directory信息,那么也就是说alias directory的au分配信息应该是在
第2号au的第6个block中,我们来看下是否是这样:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm1 aun=2 blkn=6| more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 6 ; 0x004: blk=6 kfbh.block.obj: 1 ; 0x008: file=1 kfbh.check: 154755809 ; 0x00c: 0x093962e1 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfffdb.node.incarn: 1 ; 0x000: A=1 NUMM=0x0 kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kfffdb.hibytes: 0 ; 0x00c: 0x00000000 kfffdb.lobytes: 1048576 ; 0x010: 0x00100000 kfffdb.xtntcnt: 1 ; 0x014: 0x00000001 kfffdb.xtnteof: 1 ; 0x018: 0x00000001 kfffdb.blkSize: 4096 ; 0x01c: 0x00001000 kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0 kfffdb.fileType: 15 ; 0x021: 0x0f kfffdb.dXrs: 17 ; 0x022: SCHE=0x1 NUMB=0x1 kfffdb.iXrs: 17 ; 0x023: SCHE=0x1 NUMB=0x1 kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffff kfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000 kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000 kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000 kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000 kfffdb.xtntblk: 1 ; 0x03c: 0x0001 kfffdb.break: 60 ; 0x03e: 0x003c kfffdb.priZn: 0 ; 0x040: KFDZN_COLD kfffdb.secZn: 0 ; 0x041: KFDZN_COLD kfffdb.ub2spare: 0 ; 0x042: 0x0000 kfffdb.alias[0]: 4294967295 ; 0x044: 0xffffffff kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff kfffdb.strpwdth: 0 ; 0x04c: 0x00 kfffdb.strpsz: 0 ; 0x04d: 0x00 kfffdb.usmsz: 0 ; 0x04e: 0x0000 kfffdb.crets.hi: 32989616 ; 0x050: HOUR=0x10 DAYS=0xd MNTH=0x8 YEAR=0x7dd kfffdb.crets.lo: 75343872 ; 0x054: USEC=0x0 MSEC=0x36a SECS=0x7 MINS=0x1 kfffdb.modts.hi: 32989616 ; 0x058: HOUR=0x10 DAYS=0xd MNTH=0x8 YEAR=0x7dd kfffdb.modts.lo: 75343872 ; 0x05c: USEC=0x0 MSEC=0x36a SECS=0x7 MINS=0x1 kfffdb.dasz[0]: 0 ; 0x060: 0x00 kfffdb.dasz[1]: 0 ; 0x061: 0x00 kfffdb.dasz[2]: 0 ; 0x062: 0x00 kfffdb.dasz[3]: 0 ; 0x063: 0x00 kfffdb.permissn: 0 ; 0x064: 0x00 kfffdb.ub1spar1: 0 ; 0x065: 0x00 kfffdb.ub2spar2: 0 ; 0x066: 0x0000 kfffdb.user.entnum: 0 ; 0x068: 0x0000 kfffdb.user.entinc: 0 ; 0x06a: 0x0000 kfffdb.group.entnum: 0 ; 0x06c: 0x0000 kfffdb.group.entinc: 0 ; 0x06e: 0x0000 kfffdb.paswdblk: 0 ; 0x070: 0x00000000 kfffdb.spare[0]: 0 ; 0x074: 0x00000000 kfffdb.spare[1]: 0 ; 0x078: 0x00000000 kfffdb.spare[2]: 0 ; 0x07c: 0x00000000 kfffdb.spare[3]: 0 ; 0x080: 0x00000000 kfffdb.spare[4]: 0 ; 0x084: 0x00000000 kfffdb.spare[5]: 0 ; 0x088: 0x00000000 kfffdb.spare[6]: 0 ; 0x08c: 0x00000000 kfffdb.spare[7]: 0 ; 0x090: 0x00000000 kfffdb.spare[8]: 0 ; 0x094: 0x00000000 kfffdb.spare[9]: 0 ; 0x098: 0x00000000 kfffdb.spare[10]: 0 ; 0x09c: 0x00000000 kfffdb.usm: ; 0x0a0: length=0 kfffde[0].xptr.au: 24 ; 0x4a0: 0x00000018 kfffde[0].xptr.disk: 1 ; 0x4a4: 0x0001 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 51 ; 0x4a7: 0x33 kfffde[1].xptr.au: 4294967295 ; 0x4a8: 0xffffffff kfffde[1].xptr.disk: 65535 ; 0x4ac: 0xffff kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 42 ; 0x4af: 0x2a 。。。。。。。 |
可以看到,file 6的元数据应该在第24号au中,且xptr.disk为1. 那么:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm2 aun=24 blkn=1| more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 11 ; 0x002: KFBTYP_ALIASDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 1 ; 0x004: blk=1 kfbh.block.obj: 6 ; 0x008: file=6 kfbh.check: 1024264220 ; 0x00c: 0x3d0d081c kfbh.fcn.base: 7179 ; 0x010: 0x00001c0b kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0 kffdnd.parent.number: 0 ; 0x014: 0x00000000 kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0 kffdnd.fstblk.number: 1 ; 0x01c: 0x00000001 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfade[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfade[0].entry.hash: 710518681 ; 0x028: 0x2a59a799 kfade[0].entry.refer.number: 2 ; 0x02c: 0x00000002 kfade[0].entry.refer.incarn: 1 ; 0x030: A=1 NUMM=0x0 kfade[0].name: DATAFILE ; 0x034: length=8 kfade[0].fnum: 4294967295 ; 0x064: 0xffffffff kfade[0].finc: 4294967295 ; 0x068: 0xffffffff kfade[0].flags: 4 ; 0x06c: U=0 S=0 S=1 U=0 F=0 kfade[0].ub1spare: 0 ; 0x06d: 0x00 kfade[0].ub2spare: 0 ; 0x06e: 0x0000 kfade[1].entry.incarn: 3 ; 0x070: A=1 NUMM=0x1 kfade[1].entry.hash: 4053320104 ; 0x074: 0xf198c1a8 kfade[1].entry.refer.number: 3 ; 0x078: 0x00000003 kfade[1].entry.refer.incarn: 3 ; 0x07c: A=1 NUMM=0x1 kfade[1].name: CONTROLFILE ; 0x080: length=11 kfade[1].fnum: 4294967295 ; 0x0b0: 0xffffffff kfade[1].finc: 4294967295 ; 0x0b4: 0xffffffff kfade[1].flags: 4 ; 0x0b8: U=0 S=0 S=1 U=0 F=0 kfade[1].ub1spare: 0 ; 0x0b9: 0x00 kfade[1].ub2spare: 0 ; 0x0ba: 0x0000 kfade[2].entry.incarn: 1 ; 0x0bc: A=1 NUMM=0x0 kfade[2].entry.hash: 2803485489 ; 0x0c0: 0xa719cb31 kfade[2].entry.refer.number: 4 ; 0x0c4: 0x00000004 kfade[2].entry.refer.incarn: 1 ; 0x0c8: A=1 NUMM=0x0 kfade[2].name: ONLINELOG ; 0x0cc: length=9 kfade[2].fnum: 4294967295 ; 0x0fc: 0xffffffff kfade[2].finc: 4294967295 ; 0x100: 0xffffffff kfade[2].flags: 4 ; 0x104: U=0 S=0 S=1 U=0 F=0 kfade[2].ub1spare: 0 ; 0x105: 0x00 kfade[2].ub2spare: 0 ; 0x106: 0x0000 kfade[3].entry.incarn: 1 ; 0x108: A=1 NUMM=0x0 kfade[3].entry.hash: 2905271101 ; 0x10c: 0xad2aeb3d kfade[3].entry.refer.number: 5 ; 0x110: 0x00000005 kfade[3].entry.refer.incarn: 1 ; 0x114: A=1 NUMM=0x0 kfade[3].name: TEMPFILE ; 0x118: length=8 kfade[3].fnum: 4294967295 ; 0x148: 0xffffffff kfade[3].finc: 4294967295 ; 0x14c: 0xffffffff kfade[3].flags: 4 ; 0x150: U=0 S=0 S=1 U=0 F=0 kfade[3].ub1spare: 0 ; 0x151: 0x00 kfade[3].ub2spare: 0 ; 0x152: 0x0000 kfade[4].entry.incarn: 1 ; 0x154: A=1 NUMM=0x0 kfade[4].entry.hash: 3981589715 ; 0x158: 0xed523cd3 kfade[4].entry.refer.number: 6 ; 0x15c: 0x00000006 kfade[4].entry.refer.incarn: 1 ; 0x160: A=1 NUMM=0x0 kfade[4].name:DD7C48AA5A4404A2E04325AAE80A403C ; 0x164: length=32 kfade[4].fnum: 4294967295 ; 0x194: 0xffffffff kfade[4].finc: 4294967295 ; 0x198: 0xffffffff kfade[4].flags: 4 ; 0x19c: U=0 S=0 S=1 U=0 F=0 kfade[4].ub1spare: 0 ; 0x19d: 0x00 kfade[4].ub2spare: 0 ; 0x19e: 0x0000 kfade[5].entry.incarn: 1 ; 0x1a0: A=1 NUMM=0x0 kfade[5].entry.hash: 313789181 ; 0x1a4: 0x12b40afd kfade[5].entry.refer.number: 8 ; 0x1a8: 0x00000008 kfade[5].entry.refer.incarn: 1 ; 0x1ac: A=1 NUMM=0x0 kfade[5].name:E3D0E88840A25537E043136DA8C0DDEC ; 0x1b0: length=32 kfade[5].fnum: 4294967295 ; 0x1e0: 0xffffffff kfade[5].finc: 4294967295 ; 0x1e4: 0xffffffff kfade[5].flags: 4 ; 0x1e8: U=0 S=0 S=1 U=0 F=0 kfade[5].ub1spare: 0 ; 0x1e9: 0x00 kfade[5].ub2spare: 0 ; 0x1ea: 0x0000 kfade[6].entry.incarn: 1 ; 0x1ec: A=1 NUMM=0x0 kfade[6].entry.hash: 3261836913 ; 0x1f0: 0xc26bae71 kfade[6].entry.refer.number: 10 ; 0x1f4: 0x0000000a kfade[6].entry.refer.incarn: 1 ; 0x1f8: A=1 NUMM=0x0 kfade[6].name: PARAMETERFILE ; 0x1fc: length=13 kfade[6].fnum: 4294967295 ; 0x22c: 0xffffffff kfade[6].finc: 4294967295 ; 0x230: 0xffffffff kfade[6].flags: 4 ; 0x234: U=0 S=0 S=1 U=0 F=0 kfade[6].ub1spare: 0 ; 0x235: 0x00 kfade[6].ub2spare: 0 ; 0x236: 0x0000 kfade[7].entry.incarn: 1 ; 0x238: A=1 NUMM=0x0 kfade[7].entry.hash: 4185518538 ; 0x23c: 0xf979f1ca kfade[7].entry.refer.number: 4294967295 ; 0x240: 0xffffffff kfade[7].entry.refer.incarn: 0 ; 0x244: A=0 NUMM=0x0 kfade[7].name: spfilekilldb.ora ; 0x248: length=16 kfade[7].fnum: 272 ; 0x278: 0x00000110 kfade[7].finc: 823365931 ; 0x27c: 0x3113912b kfade[7].flags: 17 ; 0x280: U=1 S=0 S=0 U=0 F=1 kfade[7].ub1spare: 0 ; 0x281: 0x00 kfade[7].ub2spare: 0 ; 0x282: 0x0000 kfade[8].entry.incarn: 1 ; 0x284: A=1 NUMM=0x0 kfade[8].entry.hash: 3018013455 ; 0x288: 0xb3e33b0f kfade[8].entry.refer.number: 11 ; 0x28c: 0x0000000b kfade[8].entry.refer.incarn: 1 ; 0x290: A=1 NUMM=0x0 kfade[8].name:E3D1604B5C725A02E043136DA8C03BCA ; 0x294: length=32 kfade[8].fnum: 4294967295 ; 0x2c4: 0xffffffff kfade[8].finc: 4294967295 ; 0x2c8: 0xffffffff kfade[8].flags: 4 ; 0x2cc: U=0 S=0 S=1 U=0 F=0 kfade[8].ub1spare: 0 ; 0x2cd: 0x00 kfade[8].ub2spare: 0 ; 0x2ce: 0x0000 kfade[9].entry.incarn: 1 ; 0x2d0: A=1 NUMM=0x0 kfade[9].entry.hash: 1668870450 ; 0x2d4: 0x6378f132 kfade[9].entry.refer.number: 13 ; 0x2d8: 0x0000000d kfade[9].entry.refer.incarn: 1 ; 0x2dc: A=1 NUMM=0x0 kfade[9].name:E3DA76F042E228D7E043136DA8C0825B ; 0x2e0: length=32 kfade[9].fnum: 4294967295 ; 0x310: 0xffffffff kfade[9].finc: 4294967295 ; 0x314: 0xffffffff kfade[9].flags: 4 ; 0x318: U=0 S=0 S=1 U=0 F=0 kfade[9].ub1spare: 0 ; 0x319: 0x00 kfade[9].ub2spare: 0 ; 0x31a: 0x0000 kfade[10].entry.incarn: 0 ; 0x31c: A=0 NUMM=0x0 kfade[10].entry.hash: 0 ; 0x320: 0x00000000 kfade[10].entry.refer.number: 0 ; 0x324: 0x00000000 kfade[10].entry.refer.incarn: 0 ; 0x328: A=0 NUMM=0x0 kfade[10].name: ; 0x32c: length=0 。。。。。。 |
可以看到,datafile的信息在最前面,我们来看下datafile的详细信息(cdb):
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm2 aun=24 blkn=2| more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 11 ; 0x002: KFBTYP_ALIASDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 2 ; 0x004: blk=2 kfbh.block.obj: 6 ; 0x008: file=6 kfbh.check: 4161348994 ; 0x00c: 0xf8092582 kfbh.fcn.base: 2063 ; 0x010: 0x0000080f kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0 kffdnd.parent.number: 1 ; 0x014: 0x00000001 kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0 kffdnd.fstblk.number: 2 ; 0x01c: 0x00000002 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfade[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfade[0].entry.hash: 1787583896 ; 0x028: 0x6a8c5d98 kfade[0].entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfade[0].entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfade[0].name: SYSAUX ; 0x034: length=6 kfade[0].fnum: 256 ; 0x064: 0x00000100 kfade[0].finc: 823363841 ; 0x068: 0x31138901 kfade[0].flags: 18 ; 0x06c: U=0 S=1 S=0 U=0 F=1 kfade[0].ub1spare: 0 ; 0x06d: 0x00 kfade[0].ub2spare: 0 ; 0x06e: 0x0000 kfade[1].entry.incarn: 1 ; 0x070: A=1 NUMM=0x0 kfade[1].entry.hash: 1670094427 ; 0x074: 0x638b9e5b kfade[1].entry.refer.number: 4294967295 ; 0x078: 0xffffffff kfade[1].entry.refer.incarn: 0 ; 0x07c: A=0 NUMM=0x0 kfade[1].name: SYSTEM ; 0x080: length=6 kfade[1].fnum: 257 ; 0x0b0: 0x00000101 kfade[1].finc: 823363955 ; 0x0b4: 0x31138973 kfade[1].flags: 18 ; 0x0b8: U=0 S=1 S=0 U=0 F=1 kfade[1].ub1spare: 0 ; 0x0b9: 0x00 kfade[1].ub2spare: 0 ; 0x0ba: 0x0000 kfade[2].entry.incarn: 1 ; 0x0bc: A=1 NUMM=0x0 kfade[2].entry.hash: 85588530 ; 0x0c0: 0x0519fa32 kfade[2].entry.refer.number: 4294967295 ; 0x0c4: 0xffffffff kfade[2].entry.refer.incarn: 0 ; 0x0c8: A=0 NUMM=0x0 kfade[2].name: USERS ; 0x0cc: length=5 kfade[2].fnum: 258 ; 0x0fc: 0x00000102 kfade[2].finc: 823364123 ; 0x100: 0x31138a1b kfade[2].flags: 18 ; 0x104: U=0 S=1 S=0 U=0 F=1 kfade[2].ub1spare: 0 ; 0x105: 0x00 kfade[2].ub2spare: 0 ; 0x106: 0x0000 kfade[3].entry.incarn: 1 ; 0x108: A=1 NUMM=0x0 kfade[3].entry.hash: 3427720216 ; 0x10c: 0xcc4edc18 kfade[3].entry.refer.number: 4294967295 ; 0x110: 0xffffffff kfade[3].entry.refer.incarn: 0 ; 0x114: A=0 NUMM=0x0 kfade[3].name: UNDOTBS1 ; 0x118: length=8 kfade[3].fnum: 259 ; 0x148: 0x00000103 kfade[3].finc: 823364125 ; 0x14c: 0x31138a1d kfade[3].flags: 18 ; 0x150: U=0 S=1 S=0 U=0 F=1 kfade[3].ub1spare: 0 ; 0x151: 0x00 kfade[3].ub2spare: 0 ; 0x152: 0x0000 kfade[4].entry.incarn: 0 ; 0x154: A=0 NUMM=0x0 kfade[4].entry.hash: 0 ; 0x158: 0x00000000 kfade[4].entry.refer.number: 0 ; 0x15c: 0x00000000 kfade[4].entry.refer.incarn: 0 ; 0x160: A=0 NUMM=0x0 。。。。。。。 |
下面我们来看下pdb PDB$SEED的datafile信息,从前面可以看到应该是在第7个block中,如下:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[oracle@12c_single ~]$ kfed read /dev/asmvg/lvasm2 aun=24 blkn=7|more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 11 ; 0x002: KFBTYP_ALIASDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 7 ; 0x004: blk=7 kfbh.block.obj: 6 ; 0x008: file=6 kfbh.check: 2772306899 ; 0x00c: 0xa53e0bd3 kfbh.fcn.base: 3747 ; 0x010: 0x00000ea3 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0 kffdnd.parent.number: 6 ; 0x014: 0x00000006 kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0 kffdnd.fstblk.number: 7 ; 0x01c: 0x00000007 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfade[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfade[0].entry.hash: 1199197943 ; 0x028: 0x477a4ef7 kfade[0].entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfade[0].entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfade[0].name: SYSAUX ; 0x034: length=6 kfade[0].fnum: 269 ; 0x064: 0x0000010d kfade[0].finc: 823364265 ; 0x068: 0x31138aa9 kfade[0].flags: 18 ; 0x06c: U=0 S=1 S=0 U=0 F=1 kfade[0].ub1spare: 0 ; 0x06d: 0x00 kfade[0].ub2spare: 0 ; 0x06e: 0x0000 kfade[1].entry.incarn: 1 ; 0x070: A=1 NUMM=0x0 kfade[1].entry.hash: 78587076 ; 0x074: 0x04af24c4 kfade[1].entry.refer.number: 4294967295 ; 0x078: 0xffffffff kfade[1].entry.refer.incarn: 0 ; 0x07c: A=0 NUMM=0x0 kfade[1].name: SYSTEM ; 0x080: length=6 kfade[1].fnum: 270 ; 0x0b0: 0x0000010e kfade[1].finc: 823364267 ; 0x0b4: 0x31138aab kfade[1].flags: 18 ; 0x0b8: U=0 S=1 S=0 U=0 F=1 kfade[1].ub1spare: 0 ; 0x0b9: 0x00 kfade[1].ub2spare: 0 ; 0x0ba: 0x0000 kfade[2].entry.incarn: 1 ; 0x0bc: A=1 NUMM=0x0 kfade[2].entry.hash: 71941814 ; 0x0c0: 0x0449beb6 kfade[2].entry.refer.number: 4294967295 ; 0x0c4: 0xffffffff kfade[2].entry.refer.incarn: 0 ; 0x0c8: A=0 NUMM=0x0 kfade[2].name: pdbseed_temp01.dbf ; 0x0cc: length=18 kfade[2].fnum: 271 ; 0x0fc: 0x0000010f kfade[2].finc: 823364407 ; 0x100: 0x31138b37 kfade[2].flags: 17 ; 0x104: U=1 S=0 S=0 U=0 F=1 kfade[2].ub1spare: 0 ; 0x105: 0x00 kfade[2].ub2spare: 0 ; 0x106: 0x0000 。。。。。 |
到这里,大家可以发现相比10g和11g而已,12c中,asm的file directory和alias directory没有什么不同。
既然是这样,那么我们用12c 中自带的amdu 来抽取一个datafile试试看 ?
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 |
[oracle@12c_single ~]$ amdu -dis '/dev/asmvg/lvasm*' -nodir -norep -extract data.258 -output users01.dbf AMDU-00204: Disk N0001 is in currently mounted diskgroup DATA AMDU-00201: Disk N0001: '/dev/asmvg/lvasm1' [oracle@12c_single ~]$ dbv file=users01.dbf DBVERIFY: Release 12.1.0.1.0 - Production on Wed Aug 14 06:51:06 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. DBVERIFY - Verification starting : FILE = /home/oracle/users01.dbf DBVERIFY - Verification complete Total Pages Examined : 640 Total Pages Processed (Data) : 15 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 3 Total Pages Failing (Index): 0 Total Pages Processed (Other): 593 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 29 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 857474 (0.857474) |
可以看到,amdu抽取的文件完好无损。
说明:本文仅仅是描述了file dir和alias dir,对于其他元数据,会在后面的文章继续进行描述。
One Response to “oracle 12c 中asm元数据是否有所变化”
谢谢分享 来看看
Leave a Reply
You must be logged in to post a comment.