萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle如何在ASM中定位文件的分布

Oracle如何在ASM中定位文件的分布

   我們將嘗試找出文件的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 where lower(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_kffxp from 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 where group_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=0x3 YEAR=0x7dd

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

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

  kfffdb.modts.lo: 3985358848 ; 0x05c: USEC=0x0 MSEC=0x2f0 SECS=0x18 MINS=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 where group_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: 0xff

copyright © 萬盛學電腦網 all rights reserved