ASM 翻译系列第十五弹:ASM Internal ASM File Directory
原作者:Bane Radulovic
译者: 郭旭瑞
审核: 魏兴华
DBGeeK社群联合出品
kfbh.block.blk: 257 ; 0x004: blk=257
FROM v$asm_file f, v$asm_alias a
WHERE f.group_number=a.group_number and f.file_number=a.file_number
ORDER BY 1, 2;
GROUP_NUMBER FILE_NUMBER NAME TYPE
------------ ----------- ---------------------- ----------------
1 253 REGISTRY.253.769023761 ASMPARAMETERFILE
1 256 SYSTEM.256.769030243 DATAFILE
1 257 SYSAUX.257.769030245 DATAFILE
1 258 UNDOTBS1.258.769030245 DATAFILE
1 259 USERS.259.769030245 DATAFILE
1 260 Current.260.769030435 CONTROLFILE
1 261 Current.261.769030431 CONTROLFILE
1 262 group_1.262.769030439 ONLINELOG
1 263 group_1.263.769030445 ONLINELOG
1 264 group_2.264.769030453 ONLINELOG
3 256 Current.256.771527253 CONTROLFILE
3 257 group_1.257.771527259 ONLINELOG
3 258 group_1.258.771527263 ONLINELOG
...
34 rows selected.
SQL>
pxn_kffxp "Physical extent",
au_kffxp "Allocation unit",
disk_kffxp "Disk"
FROM x$kffxp
WHERE group_kffxp=1 -- Diskgroup 1 (DATA)
and number_kffxp=1 -- File 1 (file directory)
ORDER BY 1, 2;
Virtual extent Physical extent Allocation unit Disk
-------------- --------------- --------------- ----------
0 0 10 0
0 1 10 1
0 2 10 2
1 3 48 2
1 4 46 1
1 5 47 0
6 rows selected.
SQL>
kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002
FROM v$asm_alias
WHERE group_number=1
ORDER BY 1;
ASM file number File name
--------------- ----------------------
253 REGISTRY.253.769023761
256 SYSTEM.256.769030243
257 SYSAUX.257.769030245
258 UNDOTBS1.258.769030245
259 USERS.259.769030245
260 Current.260.769030435
261 Current.261.769030431
262 group_1.262.769030439
263 group_1.263.769030445
264 group_2.264.769030453
265 group_2.265.769030461
266 group_3.266.769030471
267 group_3.267.769030479
268 TEMP.268.769030503
269 EXAMPLE.269.769030517
270 spfile.270.769030977
...
SQL>
block_size "Block size",
block_size*(file_size_blks+1) "File size"
FROM v$controlfile;
File Block size File size
------------------------------------------ ---------- ----------
+DATA/BR/CONTROLFILE/current.262.822925011 16384 17973248
+DATA/BR/CONTROLFILE/current.261.822925013 16384 17973248
SQL>
pxn_kffxp "Physical extent",
au_kffxp "Allocation unit",
disk_kffxp "Disk"
FROM x$kffxp
WHERE group_kffxp=1 -- Diskgroup 1 (DATA)
and number_kffxp=262 -- File 262 (control file)
and xnum_kffxp <> 2147483648
ORDER BY 1, 2;
Virtual extent Physical extent Allocation unit Disk
-------------- --------------- --------------- ----
0 0 776 3
0 1 778 1
0 2 779 2
1 3 781 0
1 4 777 3
1 5 779 1
2 6 780 2
2 7 780 1
2 8 778 3
...
23 69 795 1
23 70 793 3
23 71 798 0
72 rows selected.
SQL>
FROM v$asm_disk
WHERE group_number=1
ORDER BY 1;
DISK_NUMBER PATH
----------- ---------
0 /dev/sdb1
1 /dev/sdc1
2 /dev/sdd1
3 /dev/sde1
SQL>
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 262 ; 0x004: blk=262
...
kfffdb.node.incarn: 822925011 ; 0x000: A=1 NUMM=0x18866b69
kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff
kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0
kfffdb.hibytes: 0 ; 0x00c: 0x00000000
kfffdb.lobytes: 17973248 ; 0x010: 0x01124000
kfffdb.xtntcnt: 72 ; 0x014: 0x00000048
kfffdb.xtnteof: 72 ; 0x018: 0x00000048
kfffdb.blkSize: 16384 ; 0x01c: 0x00004000
kfffdb.flags: 19 ; 0x020: O=1 S=1 S=0 D=0 C=1 I=0 R=0 A=0
kfffdb.fileType: 1 ; 0x021: 0x01
...
kfffde[0].xptr.au: 776 ; 0x4a0: 0x00000308
kfffde[0].xptr.disk: 3 ; 0x4a4: 0x0003
kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0
kfffde[0].xptr.chk: 34 ; 0x4a7: 0x22
kfffde[1].xptr.au: 778 ; 0x4a8: 0x0000030a
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: 34 ; 0x4af: 0x22
kfffde[2].xptr.au: 779 ; 0x4b0: 0x0000030b
kfffde[2].xptr.disk: 2 ; 0x4b4: 0x0002
kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0
kfffde[2].xptr.chk: 32 ; 0x4b7: 0x20
...
$
FROM v$datafile;
NAME Size (MB)
-------------------------------------------- ----------
+DATA/br/datafile/system.256.769030243 720
+DATA/br/datafile/sysaux.257.769030245 590
+DATA/br/datafile/undotbs1.258.769030245 105
+DATA/br/datafile/users.259.769030245 5
+DATA/br/datafile/example.269.769030517 345.625
SQL>
FROM x$kffxp
WHERE group_kffxp=1 and number_kffxp=256 and xnum_kffxp <> 2147483648
ORDER BY 1,2;
Extent AU Disk
---------- ---------- ----------
0 42 1
0 48 2
1 43 1
1 49 0
2 44 1
2 45 3
...
720 1111 1
720 1119 2
1442 rows selected.
SQL>
0-59号extent(kfffde[0]-kfffde[59])被称作directly addressed extent,因为它们直接指向数据extent。而编号59以上的extent,被称为indirectly addressed extent,因为它们指向的extent持有的是剩余extent的信息。
接下来对1号磁盘(kfffde[60].xptr.disk=1)的58号AU(kfffde[60].xptr.au=58)进行查看。
我们看到,这确实是一个indirect extent block(kfbh.type=KFBTYP_INDIRECT),它持有该数据文件剩余的extent的分布信息。
郭旭瑞,沃趣科技产品交付部经理,负责QData Cloud高性能数据库云平台、QBackup数据库秒级备份恢复云平台等产品的整体交付管理与技术支持、维保服务工作。个人网站:www.dbalex.com
ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups
ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files
ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名
ASM 翻译系列第七弹:高级知识 How many partners?
翻译系列第八弹: 高级知识ASM file extent map
ASM 翻译系列第十弹:ASM Internal ASM DISK header
ASM 翻译系列第十一弹:高级知识 Offline or drop?
ASM 翻译系列第十二弹:ASM Internal amdu - ASM Metadata Dump Utility
杭州沃趣科技股份有限公司创建于2012年,创始团队为原阿里巴巴数据库及系统运维团队核心骨干,凭借着多年的运维经验,为行业客户提供专业数据库、系统相关的服务和产品;专注为用户提供基于高性能、高可用、可扩展的开放数据库云平台解决方案的国产厂商。
沃趣科技的产品已广泛应用于证券、保险、医疗、广电传媒、银行、电信、能源电力、快递物流、公共事业、大型企业等,为这些行业用户持续提供行业解决方案及服务支持。
研发中心位于杭州,同时在北京、上海、广州、南京、兰州、沈阳建立了分支机构,建立了辐射全国的销售和服务体系。
我们始终坚信,数据是驱动企业创新的源动力!坚持围绕企业数据库做好一件事
——让高性能触手可及!