0755-22663188

浅谈Oracle 20c ASM文件组模板技术

发布时间:2020-06-07

首先,Oracle ASM file group 是一组文件,它们共享相同的属性和特征。文件组最主要的好处是在相同的磁盘组里为不同的数据库文件定义不同的可用性属性,这一特性让在多租户架构的pdb (可插拔数据库)尤为适用。

对于ASM 文件组的属性集包括冗余度, 负载均衡优先级, 负载均衡权重设置, 客户端兼容性, 条带, 配额组, 以及访问控制列表。

要使用ASM 文件组特性就必须要有柔性磁盘组的支持,让我们来看一下柔性磁盘组,这是在12.2以后版本加入的一个新特性,传统磁盘组创建时有高(high), 正常(normal),外部(external)三种冗余方式,12.2中加入了两种新的冗余方式,柔性磁盘组(FLEX disk group)和扩展磁盘组(EXTENDED disk group),扩展磁盘组主要用于Extend RAC扩展集群平台,功能是柔性磁盘组的超集,这里我们仅讨论柔性磁盘组,以便更简明的说明问题。

在一个用正常或高冗余方式创建的磁盘组,我们可以迁移到柔性冗余方式,通过ALTER DISKGROUP 的CONVERT REDUNDANCY TO FLEX 语句就可以迁移到柔性冗余方式。另外,外部冗余的磁盘组不可以转换为柔性冗余方式。

我们可以直接创建柔性磁盘组,如下:

或者我们也可以把一个存在的磁盘组转换为柔性冗余磁盘组,如下所示:

或者

Oracle 柔性磁盘组支持文件组和配额组,和以前的磁盘组比起来,具有更好的存储和数据库级别的管理能力,数据库级别和磁盘组级别比较而言,数据库级别相当于一个更细粒度的管理能力,此外,柔性磁盘组具有以下特点:

1.文件的冗余在数据库级别是柔性的,不像高冗余或正常冗余,通常文件数据是3份或2份。

2.文件组用来描述数据库文件的冗余属性。每个数据库有自己的文件组,可以分别定义不同的柔性冗余属性。文件组会关联一个空间配额组,以简化空间大小额度管理。

3.一个柔性磁盘组要求至少3个失败容错组(failure group) , 通常 Oracle 会为每一块ASM 候选磁盘创建一个失败容错组,以提供1个或2个磁盘失败的容错。如果容忍2块盘的失败,则至少需要5个失败容错组。

4.缺省的分配单元(AU)是 4M大小。

5.磁盘组的COMPATIBLE.ASM和COMPATIBLE.RDBMS 是 12.2 或更高。


在柔性磁盘组里,我们将为不同的数据库定义灵活的冗余设置,这就借助于文件组技术。

文件组有以下一些重要特点:

1.一个柔性磁盘组中至少包含一个缺省文件组。

2.一个柔性磁盘组中包含多个文件组,可以为每一个pdb分别创建一个文件组,以便更好的实现管理控制。

3.一个数据库在一个柔性磁盘组里只允许一个文件组。

4.一个数据库可存放在多个柔性磁盘组中,但它们的文件组名称是相同的。

5.一个文件组只能属于一个柔性或扩展磁盘组。

6.一个文件组只能描述仅一个数据库,pdb, CDB, volume 和集群。

7.一个文件组仅属于一个空间配额组。自动创建的文件组会关联到通用空间配额组(generic quota group)。

8.每当我们创建一个数据库,pdb,CDB的时候,如果有一个客户 id 相同或名字相同的文件组存在,它将用来描述数据库,pdb,CDB的文件,否则,Oracle 将创建一个新的文件组。

9.当我们执行一个数据库创建操作的时候,Oracle 会给我们自动创建一个系统命名的文件组,当我们删除数据库时,该自动创建的文件组会被自动删除,而我们手工创建的文件组,则需要我们手工删除。

让我们通过一个多租户数据库环境的演示,来更好的解释相关概念:

在该演示图中,文件组pdb1在磁盘组1 和 2 中,专门用来服务于 pdb1 插拔数据库,该文件组关联QGRP1配额组,数据库 pdb2,pdb3 在两个磁盘组中的文件组名分别是pdb2和 pdb3,它们关联到QGRP2配额组。

我们再看一个手工添加文件组的样例,截图如下:

就像我们前面提到的,对于手工添加的文件组,我们必须手工删除它们。另外,文件组最主要的用途就是给数据库或pdb,CDB,卷灵活的设置冗余属性或特征参数,比如:

文件组具有以下一些重要属性:

1.COMPATIBLE.CLIENT

磁盘组的COMPATIBLE.RDBMS属性必须小于或等于每个文件组的COMPATIBLE.CLIENT属性,数据库的兼容性(COMPATIBLE)初始化参数,以及磁盘组的COMPATIBLE.ASM属性。

2.POWER_LIMIT

大家熟知的负载均衡权重参数,取值范围在1至1024之间,取值越大,rebalance越优先。

3.PRIORITY

负载均衡优先级(rebalance priority), 可选的参数值包括HIGHEST, HIGH, MEDIUM, LOW, 或LOWEST,缺省值为MEDIUM,相对POWER_LIMIT参数而言,先比较优先级属性。

4.REDUNDANCY (冗余方式)

最核心的属性,帮助我们设置文件冗余方式,缺省文件冗余设置来源于系统模板,可以有以下选项:

  • HIGH  (高)

  • 对所有文件提供三路镜像保护。

  • MIRROR (镜像)

对所有文件提供两路镜像保护。

PARITY (奇偶性)

对于不要求日常更新的数据库文件的一种冗余方式,减少了asm对数据库文件冗余维护的开销,特别适用于只写一次的文件,诸如归档日志(archive logs)和备份(backup sets)类型的文件。

DOUBLE (双奇偶性):DOUBLE 说明 double parity 和可以容忍2个失败。

UNPROTECTED (不保护):不提供对文件的镜像。

5.STRIPING (条带方式)

大多数文件类型是粗颗粒(COARSE)条带,而控制文件通常是细颗粒(FINE)条带,通常是128KB大小条带化处理。

我们可以在一个文件组里为某种文件类型设置属性,示例如下:

这些设置让我们感觉非常像以前的asm文件模板,通过文件类型模板,我们可以在normal冗余的磁盘组里对特定文件提供不保护冗余的需求,以及大量类似的需求。未来将以多租户架构为标准架构,从20c开始,将强制使用多租户架构,每个CDB 可配备3个pdb 而无需多租户选项 license, 通过文件组功能,我们可以在pdb 级别,而不是磁盘组级别,更加灵活的设置和管理。

借助于Oracle Database 20c 的文件组模板新特性,我们进一步简化文件及文件组的管理,通过建立文件组模板,我们可以设置大量的属性,新建的文件也可以直接通过模板继承相关设置,从而简化我们的管理,如下所示:

注意,一个数据库在一个柔性磁盘组里只允许一个文件组,不是指文件组模板。

或者更常见的用例,如下:

最后,我们看到文件组模板功能有点类似于文件模板,但是文件组模板更加灵活、强大、更适合多租户数据库环境里对pdb、CDB, volume的管理。有文件组模板,你能定制缺省文件组的属性,当创建数据库(PDB)时,能方便的继承这些属性,如果不使用文件组模板,当你想改变自动创建的文件组属性时,通过它所产生的文件将会触发一个不必要的负载均衡动作(rebalance),Oracle 20c 的文件组模板新特性给我们提供一个更好的选择。


注:部分内容引用于Oracle 官方文档。