#ASM 翻译系列第十八弹:ASM Internal ASM file number 5
来源:互联网 发布:迈达斯桥梁软件培训班 编辑:程序博客网 时间:2024/06/07 21:53
原文: ASM file number 5
作者: Bane Radulovic
译者:魏兴华,沃趣科技高级技术专家,主要参与公司一体机产品、监控产品、容灾产品、DBaaS平台的研发和设计。曾就职于东软集团,阿里巴巴集团,Oracle ACE组成员,DBGEEK 用户组发起人,ITPUB认证博客专家,ACOUG、SHOUG核心成员。曾在中国数据库大会、Oracle技术嘉年华、ORCL-CON、YY分享平台等公开场合多次做过数据库技术专题分享。对Oracle 并行机制、数据库异常恢复方法、ASM等有深入的研究,人称”Oracle Internal达人”,对企业数据库架构设计、故障恢复、高并发下数据库性能调优有丰富的经验,擅长从等待事件角度分析解决数据库性能问题,是OWI方法论的提倡者和践行者。
审校:魏兴华
责编:仲培艺
本章讲述ASM的5号文件,5号文件是ASM的模板目录,包含了磁盘组中所有的文件模板的信息。
有两种类型的模板:一种是系统自带的,一种是用户创建的,默认的模板(系统自带的)已经包含ASM的所有文件类型,创建文件时会根据文件类型自动匹配,用户创建的模板只会在用户特别指定时使用。
每一个模板包含了如下的一些信息:
- 每个模板的名称(对于默认模板它的名称其实就是文件类型)
- 文件冗余度(默认是磁盘组的冗余度)
- 文件条带(默认是根据文件类型来决定文件的条带)
- 系统标识(是否为系统自带的模板)
Using templates
可以通过视图V$ASM_TEMPLATE
来查看完整的模板信息,这里查看下我系统上的模板:
SQL> SELECT name "Template Name", redundancy "Redundancy", stripe "Striping", system "System"FROM v$asm_templateWHERE group_number=1;Template Name Redundancy Striping System------------------------ ---------------- ---------------- --------PARAMETERFILE MIRROR COARSE YASMPARAMETERFILE MIRROR COARSE YDUMPSET MIRROR COARSE YCONTROLFILE HIGH FINE YFLASHFILE MIRROR COARSE YARCHIVELOG MIRROR COARSE YONLINELOG MIRROR COARSE YDATAFILE MIRROR COARSE YTEMPFILE MIRROR COARSE YBACKUPSET MIRROR COARSE YAUTOBACKUP MIRROR COARSE YXTRANSPORT MIRROR COARSE YCHANGETRACKING MIRROR COARSE YFLASHBACK MIRROR COARSE YDATAGUARDCONFIG MIRROR COARSE YOCRFILE MIRROR COARSE Y16 rows selected.
有一个模板非常的显眼,那就是控制文件(3重镜像,细粒度条带),这是默认的数据库控制文件的模板,这是为什么每一个控制文件都会被做三重镜像的原因。有趣的是,我们可以使用它创建任何数据库文件。
这里举一个例子(注意我连接的是数据库的实例):
SQL> create tablespace TRIPLE_F datafile '+DATA(CONTROLFILE)' size 1m;Tablespace created.SQL> SELECT name FROM v$datafile WHERE name like '%triple_f%';NAME--------------------------------------------------------------------------------+DATA/br/datafile/triple_f.271.771793293
上面创建了一个表空间,ASM给我新创建的数据文件分配了编号217,我们接着看这个文件的冗余度,这一次我连接的是ASM的实例:
SQL> SELECT group_number, name, type "Redundancy"FROM v$asm_diskgroupWHERE name='DATA';GROUP_NUMBER NAME Redundancy------------ -------------------------------- ---------------- 1 DATA NORMAL
这是一个normal冗余的磁盘组,但是由于我们使用了控制文件模板来创建数据文件,因此我们通过查询内部视图x$kffxp
来获得我们想要的信息:
SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk"FROM x$kffxpWHERE group_kffxp=1 and number_kffxp=271ORDER BY 1,2; Extent AU Disk---------- ---------- ---------- 0 1126 1 0 1130 3 0 1136 2 1 1131 3 1 1132 0 1 1137 2... 7 1132 1 7 1135 3 7 1141 224 rows selected.
如预期,这个文件被做了三重镜像,因为我们看到每一个虚拟区都由三个物理区组成,但是为什么我的数据文件仅仅只有1MB,但是却有8个虚拟区呢,这是因为控制文件的模板是一个精细条带的模板。
译者注:隐含参数
_asm_stripesize
代表了精细条带的大小,默认为128K,隐含参数_asm_stripewidth
代表了条带的宽度,默认为8。但是有一点很奇怪,精细条带下,数据文件头好像没有独占一个extent,因为上面查询显示了这个1MB的文件一共占用了8个extent,而不是9个extent,按照条带宽度是8的设定,文件内容本身就应该占用了8个extent。
User templates
如果我想要文件具有三重镜像但是粗粒度的条带,该怎么做?我们可以手工创建一个我们自己的模板,COARSE关键字指定了这是一个粗粒度的条带:
SQL> alter diskgroup DATA add template TRIPLE_COARSE attributes (HIGH COARSE);Diskgroup altered.Let's now use this template. Back to the database instance...SQL> create tablespace TRIPLE_C datafile '+DATA(TRIPLE_COARSE)' size 1m;Tablespace created.SQL> SELECT name FROM v$datafile WHERE name like '%triple_c%';NAME--------------------------------------------------------------------------------+DATA/br/datafile/triple_c.272.771794469
ASM的文件号是272,返回到ASM实例检查:
SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk"FROM x$kffxpWHERE group_kffxp=1 and number_kffxp=272ORDER BY 1,2; Extent AU Disk---------- ---------- ---------- 0 1136 3 0 1137 0 0 1142 2 1 1133 1 1 1137 3 1 1143 26 rows selected.
这次的结果显示了只为1MB的文件分配了1个虚拟区,额外的一个是ASM的文件头。注意这个文件是三重的镜像和粗粒度的条带。
我也可以创建一个根本不做镜像的模板,我们试试看:
SQL> alter diskgroup DATA add template NO_MIRRORING attributes (UNPROTECTED);Diskgroup altered.
接下来我们使用我们上面创建的模板来添加一个数据文件:
SQL> create tablespace NOT_IMPORTANT datafile '+DATA(NO_MIRRORING)' size 1m;Tablespace created.SQL> SELECT name FROM v$datafile WHERE name like '%not_important%';NAME--------------------------------------------------------------------------------+DATA/br/datafile/not_important.273.771795255
上面新产生的数据文件的编号是273,我们来检查一下:
SQL> SELECT xnum_kffxp "Extent", au_kffxp "AU", disk_kffxp "Disk"FROM x$kffxpWHERE group_kffxp=1 and number_kffxp=273ORDER BY 1,2; Extent AU Disk---------- ---------- ---------- 0 1138 0 1 1134 1
我们看到这个文件没有被镜像(虽然在一个normal冗余的磁盘组中)。
Conclusion
模板目录包含了磁盘组中文件模板的信息,每一个磁盘组都会有默认的一系列的系统自带的模板,用户也可以额外根据需要创建自己的模板。一个比较好的使用模板的方法是在一个normal冗余的磁盘中创建一个三重镜像模板,注意如果想要使这个做法生效,我们至少需要这个磁盘组中有3个failgroup。
- #ASM 翻译系列第十八弹:ASM Internal ASM file number 5
- #ASM 翻译系列第二十弹:ASM Internal ASM file number 7
- #ASM 翻译系列第二十二弹:ASM Internal ASM file number 8
- ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory
- ASM 翻译系列第十弹:ASM Internal ASM DISK header
- #ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory
- #ASM 翻译系列第二十三弹:ASM Internal ASM files number 12 and 254
- #ASM 翻译系列第二十四弹:ASM Internal ASM files number 10 and 11
- ASM 翻译系列第八弹:ASM Internal ASM file extent map
- #ASM 翻译系列第三十一弹:ASM INTERNAL How many allocation units per file
- ASM 翻译系列第十二弹:ASM Internal amdu
- ASM 翻译系列第十四弹:ASM Internal Rebalancing act
- #ASM 翻译系列第十六弹:ASM Internal ASM Active Change Directory
- #ASM 翻译系列第十九弹:ASM Internal ASM Continuing Operations Directory
- #ASM 翻译系列第二十七弹:ASM INTERNAL ASM METADATA BLOCK
- #ASM 翻译系列第三十二弹:ASM INTERNAL Find block in ASM
- #ASM 翻译系列第三十四弹:ASM INTERNAL ASM Disk Group Attributes
- ASM 翻译系列第九弹:ASM工具箱
- Orcale(一)之:表1
- iframe中通过form提交动态加载页面
- Ubuntu 中vim配置Python开发环境
- Ubuntu安装adobe flash player插件(PPAPI和NPAPI)
- eclipse找不到import java.awt.image.BufferedImage这个类,调用不了bufferedimage
- #ASM 翻译系列第十八弹:ASM Internal ASM file number 5
- Java并发编程的艺术--笔记
- openstack oslo.config组件服务浅析
- TensorFlow学习笔记---CNN分类CIFAR-10数据集3
- 融云集成2--用户信息在会话列表和会话界面的显示
- SSH整合过程出现的问题
- DL动态加载框架技术文档
- Mac下使用Jekyll和github搭建个人博客
- Java四种引用包括强引用,软引用,弱引用,虚引用。