展会信息港展会大全

Oracle如何在ASM中定位文件的分布
来源:互联网   发布日期:2016-01-28 13:18:33   浏览:1590次  

导读: 我们将尝试找出文件的AU分布,然后根据AU分布定位磁盘所在的位置,设置有可能利用操作系统层面的工具拷贝ASM其中的数据出来。我将使用两个例子来说明如何查看au分布。 0. spfile...

我们将尝试找出文件的AU分布,然后根据AU分布定位磁盘所在的位置,设置有可能利用操作系统层面的工具拷贝ASM其中的数据出来。我将使用两个例子来说明如何查看au分布。

0. spfile

查看当前的spfile:

sys@GT11G> show parameter spfile;

NAME TYPE VALUE

------------------------------------ -----------------------------------------

spfile string +DATA01/gt11g/spfilegt11g.ora

查找对应的DISKGROUP信息:

+ASM> select name,group_number,file_number from v$asm_alias wherelower(name)='spfilegt11g.ora';

NAME GROUP_NUMBER FILE_NUMBER

-------------------- ------------ -----------

spfileGT11G.ora 1 265

+ASM> select name,group_number from v$asm_diskgroup;

NAME GROUP_NUMBER

-------- ------------

DATA01 1

FRA 2

SYSDG 3

通过视图查看对应的AU分布:

+ASM> select group_kffxp,number_kffxp,pxn_kffxp,xnum_kffxp,disk_kffxpfrom x$kffxp where group_kffxp=1 and number_kffxp=265;

GROUP_KFFXP NUMBER_KFFXP PXN_KFFXP XNUM_KFFXP DISK_KFFXP

----------- ------------ ---------- ---------- ----------

1 265 0 0 1

上述查询显示spfile文件在磁盘组1的0号磁盘上只占用了1个AU,那么我们可以直接通过kfed工具来查看下磁盘上的分配属性。

首先我们要找出对应的磁盘信息,注意磁盘序号是从0开始的:

+ASM> select group_number,disk_number,path from v$asm_disk wheregroup_number=1 and disk_number=0;

GROUP_NUMBER DISK_NUMBER PATH

------------ ----------- --------------------

1 0 /dev/asm11g-f

文件的FILE_NUMBER=256,我们应该从au2这里面查找,也即asm元数据之后的第1个文件,而blkn0是保留位置,因此我们从blkn1开始查找:

[grid@gtser2 ~]$ kfed read /dev/asm11g-f 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: 4093010779 ; 0x00c: 0xf3f6635b

kfbh.fcn.base: 443 ; 0x010: 0x000001bb

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: 32984682 ; 0x050: HOUR=0xa DAYS=0x13 MNTH=0x3YEAR=0x7dd

kfffdb.crets.lo: 3985358848 ; 0x054: USEC=0x0 MSEC=0x2f0 SECS=0x18MINS=0x3b

kfffdb.modts.hi: 32984682 ; 0x058: HOUR=0xa DAYS=0x13 MNTH=0x3YEAR=0x7dd

kfffdb.modts.lo: 3985358848 ; 0x05c: USEC=0x0 MSEC=0x2f0 SECS=0x18MINS=0x3b

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.spare[0]: 0 ; 0x070: 0x00000000

kfffdb.spare[1]: 0 ; 0x074: 0x00000000

kfffdb.spare[2]: 0 ; 0x078: 0x00000000

kfffdb.spare[3]: 0 ; 0x07c: 0x00000000

kfffdb.spare[4]: 0 ; 0x080: 0x00000000

kfffdb.spare[5]: 0 ; 0x084: 0x00000000

kfffdb.spare[6]: 0 ; 0x088: 0x00000000

kfffdb.spare[7]: 0 ; 0x08c: 0x00000000

kfffdb.spare[8]: 0 ; 0x090: 0x00000000

kfffdb.spare[9]: 0 ; 0x094: 0x00000000

kfffdb.spare[10]: 0 ; 0x098: 0x00000000

kfffdb.spare[11]: 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: 31 ; 0x4a8: 0x0000001f

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: 52 ; 0x4af: 0x34

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

注意上面的信息:

kfffde[1].xptr.au: 31 ; 0x4a8: 0x0000001f

kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000

这说明从256文件开始相关的au分布信息是放在这里的,我们继续查看这个au的信息:

+ASM> select group_number,disk_number,path from v$asm_disk wheregroup_number=1 and disk_number=1;

GROUP_NUMBER DISK_NUMBER PATH

------------ ----------- --------------------

1 1 /dev/asm11g-g

而265号文件是存放在blkn=265-255=10,也即第10块中(blkn=9):

[grid@gtser2 ~]$ kfed read /dev/asm11g-g aun=31 blkn=9 | 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: 265 ; 0x004: blk=265

kfbh.block.obj: 1 ; 0x008: file=1

kfbh.check: 3335649844 ; 0x00c: 0xc6d1fa34

kfbh.fcn.base: 3319 ; 0x010: 0x00000cf7

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfffdb.node.incarn: 810479951 ; 0x000: A=1 NUMM=0x182778a7

kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff

kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0

kfffdb.hibytes: 0 ; 0x00c: 0x00000000

kfffdb.lobytes: 3584 ; 0x010: 0x00000e00

kfffdb.xtntcnt: 1 ; 0x014: 0x00000001

kfffdb.xtnteof: 1 ; 0x018: 0x00000001

kfffdb.blkSize: 512 ; 0x01c: 0x00000200

kfffdb.flags: 17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0

kfffdb.fileType: 13 ; 0x021: 0x0d

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]: 318 ; 0x044: 0x0000013e

kfffdb.alias[1]: 58 ; 0x048: 0x0000003a

kfffdb.strpwdth: 1 ; 0x04c: 0x01

kfffdb.strpsz: 20 ; 0x04d: 0x14

kfffdb.usmsz: 0 ; 0x04e: 0x0000

kfffdb.crets.hi: 32984685 ; 0x050: HOUR=0xd DAYS=0x13 MNTH=0x3YEAR=0x7dd

kfffdb.crets.lo: 1287023616 ; 0x054: USEC=0x0 MSEC=0x19b SECS=0xbMINS=0x13

kfffdb.modts.hi: 32984747 ; 0x058: HOUR=0xb DAYS=0x15 MNTH=0x3YEAR=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.spare[0]: 0 ; 0x070: 0x00000000

kfffdb.spare[1]: 0 ; 0x074: 0x00000000

kfffdb.spare[2]: 0 ; 0x078: 0x00000000

kfffdb.spare[3]: 0 ; 0x07c: 0x00000000

kfffdb.spare[4]: 0 ; 0x080: 0x00000000

kfffdb.spare[5]: 0 ; 0x084: 0x00000000

kfffdb.spare[6]: 0 ; 0x088: 0x00000000

kfffdb.spare[7]: 0 ; 0x08c: 0x00000000

kfffdb.spare[8]: 0 ; 0x090: 0x00000000

kfffdb.spare[9]: 0 ; 0x094: 0x00000000

kfffdb.spare[10]: 0 ; 0x098: 0x00000000

kfffdb.spare[11]: 0 ; 0x09c: 0x00000000

kfffdb.usm: ; 0x0a0: length=0

kfffde[0].xptr.au: 936 ; 0x4a0: 0x000003a8

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: 128 ; 0x4a7: 0x80

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

我们可以看到只有:

kfffde[0].xptr.au: 936 ; 0x4a0: 0x000003a8

而下一个:

kfffde[1].xptr.au: 4294967295 ; 0x4a8: 0xffffffff

是还没分配数据的,这也印证了我们的配置,external的dg,没有冗余,因此每个au只有primaryextents,即1个au,接下来我们通过os的dd命令将该文件copy出来,我们可以直接将spfile dd到文本文件:

+ASM> select group_kfdat,number_kfdat,aunum_kfdat from x$kfdat wherefnum_kfdat=265;

GROUP_KFDAT NUMBER_KFDAT AUNUM_KFDAT

----------- ------------ -----------

1 1 936

从上面信息我们得到该文件业绩spfile的在磁盘的物理位置:

[grid@gtser2 ~]$ dd if=/dev/asm11g-g skip=936 of=/tmp/dbspfile bs=1024kcount=1

1+0 records in

1+0 records out

1048576 bytes (1.0 MB) copied, 0.00721405 seconds, 145 MB/s

[grid@gtser2 ~]$ cat /tmp/dbspfile

C"

赞助本站

人工智能实验室

相关热词: 开发 编程 android

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港