【Oracle ASM Metadata】Alias Directory (file #6)

《深入了解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 号