《深入了解Oracle ASM(二):ASM File number 1 文件目录》 中我们介绍了ASM metadata FILE NUMBER 1 FILE DIRECTORY, FILE DIRECTORY中记录了ASM中每一个文件的信息,但是注意FILE DIRCTORY中不记录文件的名字; 在ASM中文件名字以ALIAS的形式存放,包括文件和目录,均存放在FILE NUMBER 6 ALIAS Directory 中。
ALIAS Directory中保存了本diskgroup中按路径分层的文件名信息。存放在ASM中的ORACLE 数据库文件均会被赋予一个系统生成的名字,这个名字基于文件类型、数据库实例名和一些特征信息,例如表空间名。
除了系统赋予的文件名,用户还可以增加额外的alias,例如 :
alter tablespace MAC add datafile ‘+DATA’ size 10M; ==>只生成系统文件名
alter tablespace MAC add datafile ‘+DATA/MACDB/datafile/data1.dbf’ size 10M; ==> 会生成系统赋予的文件名和一个用户自定义alias(+DATA/MACDB/datafile/data1.dbf)
SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk" from x$kffxp 2 WHERE group_kffxp=1 and number_kffxp=6 3 and xnum_kffxp <> 2147483648; Extent AU Disk ---------- ---------- ---------- 0 7 4 0 8 0 0 6 8 SQL> select path ,disk_number from v$asm_disk where disk_number=4; /oracleasm/asm-disk05 4 kfed read /oracleasm/asm-disk05 aus=4194304 aun=7 blkn=0|less [oracle@mlab2 ~]$ kfed read /oracleasm/asm-disk05 aus=4194304 aun=7 blkn=0|less kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 11 ; 0x002: KFBTYP_ALIASDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 6 ; 0x008: file=6 kfbh.check: 4094241978 ; 0x00c: 0xf4092cba kfbh.fcn.base: 698 ; 0x010: 0x000002ba 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: 0 ; 0x01c: 0x00000000 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfade[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfade[0].entry.hash: 2974797312 ; 0x028: 0xb14fce00 kfade[0].entry.refer.number: 1 ; 0x02c: 0x00000001 kfade[0].entry.refer.incarn: 1 ; 0x030: A=1 NUMM=0x0 kfade[0].name: ASMDB1 ; 0x034: length=6 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: 0 ; 0x070: A=0 NUMM=0x0 kfade[1].entry.hash: 0 ; 0x074: 0x00000000 kfade[1].entry.refer.number: 0 ; 0x078: 0x00000000 kfade[1].entry.refer.incarn: 0 ; 0x07c: A=0 NUMM=0x0 kfade[1].name: ; 0x080: length=0 kfade[1].fnum: 0 ; 0x0b0: 0x00000000 kfade[1].finc: 0 ; 0x0b4: 0x00000000 kfade[1].flags: 0 ; 0x0b8: U=0 S=0 S=0 U=0 F=0 kfade[1].ub1spare: 0 ; 0x0b9: 0x00 kfade[1].ub2spare: 0 ; 0x0ba: 0x0000 kfade[2].entry.incarn: 0 ; 0x0bc: A=0 NUMM=0x0 kfade[2].entry.hash: 0 ; 0x0c0: 0x00000000 kfade[2].entry.refer.number: 0 ; 0x0c4: 0x00000000 kfade[2].entry.refer.incarn: 0 ; 0x0c8: A=0 NUMM=0x0 kfade[2].name: ; 0x0cc: length=0 kfade[2].fnum: 0 ; 0x0fc: 0x00000000 kfade[2].finc: 0 ; 0x100: 0x00000000 kfade[2].flags: 0 ; 0x104: U=0 S=0 S=0 U=0 F=0 kfade[2].ub1spare: 0 ; 0x105: 0x00 kfade[2].ub2spare: 0 ; 0x106: 0x0000 kfade[3].entry.incarn: 0 ; 0x108: A=0 NUMM=0x0 kfade[3].entry.hash: 0 ; 0x10c: 0x00000000 kfade[3].entry.refer.number: 0 ; 0x110: 0x00000000 kfade[3].entry.refer.incarn: 0 ; 0x114: A=0 NUMM=0x0
KFBTYP_ALIASDIR 代表metadata block类型是ALIAS DIRECTORY
kffdnd.fstblk.number 代表父目录的refer.number
kffdnd.overfl.number 代表父目录所在块号
kfade[0].entry.refer.number: 每一个文件有一个refer.number,仅有目录的refer.number是有意义的,普通文件的refer.number没有意义,因为不会被参考
kfade[0].name 文件名
kfade[0].fnum 文件号
kfade[0].finc 文件incarnation 号
Leave a Reply