博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASM 翻译系列第八弹:ASM Internal ASM file extent map
阅读量:2448 次
发布时间:2019-05-10

本文共 5112 字,大约阅读时间需要 17 分钟。

原作者:
Bane Radulovic

译者:   庄培培

审核:   魏兴华

当ASM创建一个文件时(例如数据库实例要求创建一个数据文件),它会以extent为单位分配空间。一旦文件被创建,ASM会传递extent映射表给数据库实例,后续数据库实例能在不和ASM实例交互的情况下访问这个文件。如果一个文件的extent需要被重新定位,比如磁盘组进行rebalance操作,ASM会告知数据库实例关于extent映射表的变更。

可以通过查询ASM实例的X$KFFXP视图来获取ASM文件extent映射表的内容。X$KFFXP视图中的每一行对应着所有处于mount状态磁盘组中每一个文件的每一个物理extent的信息。

译者注:1)网络上有不少关于X$KFFXP视图的解释,有些信息过于陈旧,需要指出,它记录的每一条记录都代表的是物理extent的信息,而非AU信息,X$KFFXP视图的SIZE_KFFXP字段,代表了此extent是由几个AU组成的,在启用11G可变extent特性后会出现SIZE_KFFXP大于1的情况,具体更多信息参考本系列的第一篇文章。2)X$KFFXP这里翻译成了X$KFFXP视图,只是为了便于理解,它的本质是一个内存的数据结构(fixed table),其数据不在buffer_cache中。

X$KFFXP视图的重要字段包括:

GROUP_KFFXP 磁盘组编号。注意磁盘组编号不是恒久不变的,每次磁盘组被mount时都可能会不一样。等同于V$ASM_DISKGROUP.GROUP_NUMBER字段。

NUMBER_KFFXP 文件序号。等同于 V$ASM_FILE.FILE_NUMBER字段。 注意,ASM的文件序号不同于数据库内的数据文件序号,不要把两个概念搞混了。小于256的ASM文件序号是保留给ASM元数据文件使用的。

INCARN_KFFXP 文件版本号。当一个ASM文件序号被一个新文件重用时,文件版本号会发生改变。等同于V$ASM_FILE.INCARNATION字段。注意,ASM文件是以文件序号.版本号的方式结尾。

XNUM_KFFXP 虚拟extent序号。external冗余磁盘组的虚拟extent序号与物理extent序号一致。 normal冗余磁盘组的虚拟extent序号通过将物理extent序号除于2得到.high冗余磁盘组的虚拟extent序号通过将物理extent序号除于3得到.

PXN_KFFXP 物理extent序号。一个文件的物理extent序号都以数字0开始,顺序递增。

LXN_KFFXP 虚拟extent中物理extent的序号。 0 为 primary extent, 1 为 secondary extent, 2 为 third copy of the extent。

DISK_KFFXP 物理磁盘序号。等同于V$ASM_DISK.DISK_NUMBER。

AU_KFFXP AU序号,磁盘维度的AU编号,每个磁盘从0开始。

在ASM实例中通过以下查询,能够看出磁盘组3内的ASM元数据文件的文件序号,名字和AU数量。

$ sqlplus / as sysasmSQL> select NUMBER_KFFXP "ASM file number", DECODE (NUMBER_KFFXP,1, 'File directory', 2, 'Disk directory', 3, 'Active change directory', 4, 'Continuing operations directory',5, 'Template directory', 6, 'Alias directory', 7, 'ADVM file directory', 8, 'Disk free space directory',9, 'Attributes directory', 10, 'ASM User directory', 11, 'ASM user group directory', 12, 'Staleness directory',253, 'spfile for ASM instance', 254, 'Stale bit map space registry ', 255, 'Oracle Cluster Repository registry') "ASM metadata file name",count(AU_KFFXP) "Allocation units"from X$KFFXPwhere GROUP_KFFXP=3 and NUMBER_KFFXP<256group by NUMBER_KFFXPorder by 1;ASM file number ASM metadata file name             Allocation units--------------- ---------------------------------- ----------------              1 File directory                                    3              2 Disk directory                                    3              3 Active change directory                          69              4 Continuing operations directory                   6              5 Template directory                                3              6 Alias directory                                   3              8 Disk free space directory                         3              9 Attributes directory                              3             12 Staleness directory                               3            253 spfile for ASM instance                           2            254 Stale bit map space registry                      3            255 Oracle Cluster Repository registry              13512 rows selected.SQL>

通过以上查询结果可以发现,这个磁盘组并没有包含所有类型的元数据文件(例如第十号和第十一号文件)。一个有意思的事情是,除了ASM实例的spfile,每个文件至少占用3个AU,对于这一点更多详细信息我们会在其他章节介绍。

我们再来以一个数据库控制文件为例查看下它的extent映射表

第1步,查找DATA磁盘组内所有的数据库控制文件(以Grid所属的OS用户身份运行asmcmd命令)

$ asmcmd find --type controlfile +DATA "*"+DATA/DBM/CONTROLFILE/Current.256.738247649+DATA/BR/CONTROLFILE/Current.299.748434267$

第2步,检查DATA磁盘组的磁盘组序号(连接到asm实例)

$ sqlplus / as sysasmSQL> select GROUP_NUMBER from V$ASM_DISKGROUP where NAME='DATA';GROUP_NUMBER------------1SQL>

第3步,检查磁盘组1中ASM 256号文件(+DATA/DBM/CONTROLFILE/Current.256.738247649)的extent映射表

SQL> select XNUM_KFFXP "Virtual extent", PXN_KFFXP "Physical extent", LXN_KFFXP "Extent copy", DISK_KFFXP "Disk", AU_KFFXP "Allocation unit"from X$KFFXPwhere GROUP_KFFXP=1 and NUMBER_KFFXP=256 and XNUM_KFFXP<>2147483648order by 1,2;Virtual extent Physical extent Extent copy       Disk Allocation unit-------------- --------------- ----------- ---------- ---------------             0               0           0         20               5             0               1           1         29            1903             0               2           2          6              82             1               3           0         22               6             1               4           1         31               8             1               5           2          9               3             2               6           0         30               8             2               7           1         23            1907             2               8           2          7              63             3               9           0         26               2             3              10           1         16            1904             3              11           2          6               4...            39             117           0         25            1913            39             118           1         15            1906            39             119           2          3              27120 rows selected.SQL>

以上输出可以看出这个控制文件是三路镜像,每个虚拟extent对应三个物理extent,还可以看出这个文件每个AU的实际位置。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28218939/viewspace-2121262/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28218939/viewspace-2121262/

你可能感兴趣的文章
apache 下载 速度_使用Apache限制下载速度
查看>>
mootools_带有MooStarRating的MooTools星级
查看>>
cfs_quota_Mobile Safari中的QUOTA_EXCEEDED_ERR
查看>>
mootools 获取类名_使用MooTools创建命名空间的类
查看>>
mootools_使用MooTools的别名功能
查看>>
mootools_MooTools dwCheckboxes插件
查看>>
wordpress页面_强制登录以查看WordPress博客页面
查看>>
wordpress标签分类_在WordPress中更改类别标签
查看>>
mootools_使用MooTools或jQuery的iPhone单击效果
查看>>
shoelace下载_Shoelace.css:基本CSS入门工具包
查看>>
bit.ly 短地址转换_使用PHP创建Bit.ly短URL:API版本3
查看>>
flext_Flext:MooTools自动增长Textrea插件
查看>>
mootools_书评:MooTools 1.2入门指南
查看>>
创建GitHub Pull Request和Issue模板
查看>>
reddit_使用PHP和JSON获取URL的Reddit分数
查看>>
火狐插件 xpi打包_将Firefox扩展程序打包为XPI
查看>>
使用Google Analytics(分析)跟踪AJAX链接点击
查看>>
图像处理库 gd_使用PHP和GD库进行图像处理
查看>>
robots.txt_robots.txt在开发服务器上重新路由
查看>>
css压缩_使用PHP轻松实现CSS压缩
查看>>