暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DB管理ASM实例(2)

Oracle微学堂 2021-08-06
744
  • 磁盘组概览

磁盘组是一个或多个磁盘的逻辑分组,ASM 将其作为一个集合来管理。每个磁盘组都包含与自身相关联的元数据。在概念上,ASM 磁盘组类似于典型存储区域网络中的逻辑卷。

从磁盘组内分配文件空间。磁盘组中存储的文件的内容将在该磁盘组的磁盘中平均分布或条带化,以便消除热点并在各磁盘上提供一致的性能。每个ASM 文件都完全包含在一个磁盘组中。但是,一个磁盘组可以包含属于多个数据库的文件,而一个数据库可以使用来自多个磁盘组的不同文件。

磁盘组的关键属性是它的冗余设置。有三种可能的磁盘组冗余设置:

外部冗余,其中ASM 不提供任何镜像,磁盘都假设为高度可靠。

正常冗余,其中ASM 默认支持双向镜像,从而保证在较不可靠的存储上实现数据完整性。

高冗余,其中ASM 默认支持三向镜像,从而更好地保证数据完整性。

ASM 最多支持创建63 个磁盘组;但是,对于大多数安装,你很少会需要很多磁盘组。

ASM磁盘组的管理方式比较多,比如DBCAEMSQL*PLUS等都可以操作,还有oracle专门提供了ASMCMD命令行方式,像操作文件系统一样来操作磁盘组。

  • ASM 磁盘

ASM 磁盘:

是为ASM 磁盘组预配的存储设备

通过正常O/S 接口来访问

必须可由ASM 所有者读取和写入

必须可由集群中的所有节点访问

在不同的节点上可以有不同的O/S 名称或路径

可以是:

整个物理磁盘或物理磁盘的分区

存储阵列中的磁盘或分区

逻辑卷(LV) 或逻辑单元(LUN) 

网络连接文件(NFS) 

ASM 磁盘组包含一个或多个ASM 磁盘。

ASM 磁盘必须可由集群中所有节点的ASM 所有者读取和写入。

ASM 磁盘可以是磁盘上的分区,但是Oracle 强烈建议不要与其它应用程序程序共享ASM 使用的物理磁盘。这是因为在应用ASM 条带化和镜像策略时,磁盘组内的各个ASM 磁盘的I/O 性能必须相似且一致,才能获得最佳性能。在ASM 和其它应用程序之间共享设备会难以确保磁盘性能相似且一致。

集群中不同节点上的ASM 磁盘的O/S 设备名称不必相同。ASM 通过读取ASM 磁盘的标头来识别磁盘组的成员。

通常,ASM 磁盘是以存储阵列中的裸LUN 提供给ASM 的。另外,ASM 磁盘还可以是远程NFS 文件器中的文件。

  • 分配单元

ASM 磁盘划分为分配单元(AU)

在创建磁盘组时可以配置AU 大小。

• AU 默认大小为1 MB

足够小,能够被数据库缓存;但又足够大,能够提供高效的后续访问

允许的AU 大小:

– 12481632 64 MB 

在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大的AU 可能非常有用

ASM 磁盘内,空间划分为分配单元(AU)AU 默认大小是1 MB,该大小足够小,不会变为热点,但又足够大,能够提供高效的后续访问。创建磁盘组时可以设置AU 大小。你无法更改磁盘组的AU 大小。在超大型数据库(VLDB) 中或使用专门的存储硬件时,较大的AU 大小可能会很有用。如果经常访问某个AU,则数据库内核会将其缓存以便实现更高的访问效率。

  • ASM 文件

ASM 文件:

是由AU 组成的ASM 区的集合

可变大小的区支持大型文件

对数据库内核显示为普通文件

文件名以“+”开头

例如,

+DATA/orcl/datafile/system.256.689832921

可以与可选的文件名别名相关联

例如,+DATA/dbfiles/mydb/system01.dbf

在磁盘组中的磁盘中平均分布

根据磁盘组中定义的策略进行镜像

ASM 呈现一组文件供ASM 的客户机使用。ASM 文件由一组分配单元组成,这些文件对数据库内核显示为普通文件。

每个ASM 文件都具有唯一的系统生成的名称。

生成格式为:+diskgroup/dbname/file_type/file_type_tag.file.incarnation 

• +diskgroup :磁盘组名称;  

• dbname :数据库的DB_UNIQUE_NAME参数值;   

• file_type :创建的文件类型,比如CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBAC

K等等;   

•  file_type_tag  :文件类型的标签,比如表空间对应的通常为该表空间名称;   

•   file.incarnation  :文件序号+incarnation,用来确保文件的唯一; 

sys@TEST0924> alter tablespace INVENTORY add datafile '+DATA';

Tablespace altered.

ASMCMD> pwd

+data/test0924/datafile

ASMCMD> ls

INVENTORY.266.829658135

示例显示了一个完全限定的ASM 文件名的示例。完全限定的ASM 文件名表示一个层次结构,其开头是加号与磁盘组名称的组合。磁盘组名称后是数据库名称和文件类型。最后的元素由标记名称、文件编号和原型编号组成。可以创建别名(可选),为管理员提供一种更用户友好的方式来引用ASM 文件。

文件使用条带化和镜像所有内容(SAME) 策略在磁盘组的各ASM 磁盘中平均分布。

ASM 本身支持大多数与数据库相关的文件类型,例如数据文件、日志文件、控制文件、

RMAN 备份及其它文件。在Oracle Database11g发行版2 之前,ASM 仅支持与Oracle DB 相关的文件,无法用于存储和管理ASCII 跟踪文件和预警日志、Oracle 二进制文件、

Oracle 集群注册表(OCR) 和集群表决磁盘。Oracle Database 11g发行版2 提供在ASM 上运行通用文件系统的方式,从而消除了上述限制。

  • 区映射

ASM 通过称为区映射的元数据跟踪文件的分布。区映射是一个表,将文件中的数据区映射到磁盘上的分配单元。

文件区与分配单元之间的关系如下所示。区包含:

一个AU 用于前20,000 个区(0-19999) 

•4 AU 用于接下来的20,000 个区(20000-39999) 

• 16 AU 用于40,000 以上的区

将可变大小的区与大型分配单元结合使用,可满足非常大的ASM 文件的需要。

  • 条带化粒度

ASM 用于负载平衡的条带化策略与用于等待时间的条带化策略不同:

对于负载平衡,粗粒度条带化将多个分配单元连接起来使用。

例如:

ASM 中,条带化主要具有两种用途:

在磁盘组的所有磁盘中执行I/O 负载平衡。

改善I/O 等待时间。

粗粒度条带化在磁盘组的各磁盘中分布分配单元。这用于为磁盘组提供负载平衡。分配文件时,ASM 会在所有磁盘中平均分布分配单元。有时分布无法非常平均,但是随着时间的流逝,会变得几乎相等。上图显示了一个具有五个分配单元的文件,这些分配单元在条带化之后,分布在一个外部冗余磁盘组的五个磁盘中,该磁盘组共包含八个磁盘。

对于前20,000 个区,区大小等于AU 大小。从第20,001 个区到第40,000 个区,该区组总是一次分配8 个区,区大小等于4 AU 大小。如果AU 大小为1 MB,这意味着ASM 文件将一次增大64 MB (8 * 4 * 1 MB)。如果文件采用粗粒度条带化,则它将在8 个区中进行条带化,条带大小为1 AU。条带化始终在AU 级别进行,而不是在区级别。因此,无论文件多大,粗粒度文件的每个AU 都与该文件的前一个AU 所在的磁盘不同。在第40,000 个区之后,仍旧是每次分配8 个区,但区大小等于16 AU 大小。

  • 细粒度条带化

细粒度条带化在分配单元组中放置128 KB 条带单元来改善等待时间。

磁盘组具有8 个磁盘和外部冗余

使用默认的AU 大小:1 MB 

第一个1 MB 区在8 AU 中以128 KB 条带形式写入

细粒度条带化将数据区拆分为128 KB 的块,然后在许多磁盘中分布每个区的负载,从而改善特定类型文件的等待时间。默认情况下,细粒度条带化用于控制文件和联机重做日志文件。

图显示了细粒度条带化的工作原理。在此示例中,新文件的第一个1 MB 区最终占用8 个不同分配单元中的第一个128 KB 块,这8 个分配单元分布在磁盘组的八个磁盘中。因此,1 MB 的读取或写入分布在八个磁盘(而不是一个磁盘)中。

  • 细粒度条带化

示例:

磁盘组具有8 个磁盘和外部冗余

使用默认的AU 大小:1 MB 

下一个1 MB 区以128 KB 条带的形式在相同的8 个分配单元中写入,直到这些分配单元写满

继续前面的示例,空间中的下一个1 MB 区将分布在相同分配单元组的每个单元的第二个128 KB 块中。这种模式将继续,直到第一组分配单元写满,然后分配另一组。

  • ASM 故障组

共享需要容错的一项公用资源的一组磁盘

镜像的区副本存储在不同的故障组中

存储硬件指示故障组边界

分离磁盘控制器的示例:

在磁盘组内,可以将一些磁盘归到故障组中。故障组是存储或数据库管理员指定ASM 镜像操作的硬件边界的一种方式。

例如,可以将连接到一个磁盘控制器的所有磁盘指定为某个公用故障组的磁盘。这样,将在连接到不同控制器的磁盘上镜像文件区。另外,管理员可以配置ASM 来选择默认故障组策略。默认策略是每个磁盘位于自己的故障组中。

你可以使用所需的任何标准将磁盘归到故障组中。故障组可以用于避免单个磁盘、磁盘控制器、I/O 网络组件以及甚至整个存储系统的故障。通常,管理员将分析其存储环境并对故障组进行组织来消除特定故障情况。

由数据库或存储管理员确定其安装的最佳故障组配置。

  • 条带化和镜像示例

一个共含八个磁盘的正常冗余磁盘组,其中的磁盘分布在两个故障组中。

条带化和镜像示例

本页中的图显示了一个正常冗余磁盘组中条带化和镜像的示例。红块表示一个包含五个区的文件,这些区在条带化后,分布在磁盘组(共八个磁盘)的五个磁盘中。蓝块表示文件区的镜像副本。请注意,无论区在各个磁盘和故障组中如何分布,每个区在一个故障组中仅有一个副本。

分配文件时,主区的分配用于保证性能,辅助副本的分配用于保证完整性。因此,默认情况下,所有数据库读取都针对主区进行。

  • ASM如何处理磁盘故障

ASM中的磁盘组可分成两类,普通磁盘组和failure磁盘组,后者又与ASM的荣誉方式有所关联。

普通磁盘组就是标准的存储单元,ASM可以向其可访问的磁盘组中读写数据,failure磁盘组是为了提高数据的高可用性。

ASM中的磁盘荣誉策略分成三类,外部冗余,标准冗余和高度冗余,其中外部冗余与failure磁盘组无关,如果设置了标准冗余和高度冗余,那么该磁盘组就必须拥有failure磁盘组。

标准冗余,ASM要求改磁盘组至少要拥有两个failure磁盘组,即提供双倍镜像保护,对于同一份数据(ASM中镜像单位不是磁盘,也不是块,而是一种AU的单位,该单位大小默认是1M)将有主从两份镜像,并且ASM通过算法来自动确保主、从镜像不会存在于同一份failure 磁盘组,这样就保障了就算整个failure 磁盘组都损坏,数据也不会丢失。至于高度冗余(HighRedundancy)就更安全了,它至少需要三个failure 磁盘组,也就是一份AU有一主多从的镜像,理论上将更加安全。

如果磁盘发生损坏,那么损坏的磁盘默认自动offlice并被drop掉,不过该磁盘所在的磁盘组仍将保持MOUNT状态,如果该盘有镜像的话,那么应用不会有影响,镜像盘将自动实现接管--只要不是所有failure磁盘组都损坏掉,否则的话,该磁盘组将自动DISMOUNT

  • 故障示例

如果磁盘H 发生故障,则将根据正常镜像在正常磁盘上重新创建该磁盘包含的区。

此处扩展了上一页中的示例,假设磁盘H 发生故障,无法再访问其包含的数据。该故障要求恢复故障磁盘上的所有区并将这些区复制到另一磁盘。

3 5 的正常副本将复制到同一故障组中另一磁盘的空闲区域。在此示例中,区5 将从磁盘B 复制到磁盘F,区3 将从磁盘C 复制到磁盘G

磁盘发生故障后的最后一步是ASM 从磁盘组中删除故障磁盘。

删除磁盘基本上会触发相同的过程;不过,在删除磁盘时,要被删除的磁盘上的区首先会复制到可用替代位置。

 

ASM 扩展性 

• 最多支持63个磁盘组;  

最多支持10000个磁盘;  

最大支持4pb/磁盘;  

最大支持40 exabyte/ASM存储;   

最大支持1W个文件/磁盘组;   

外部冗余时单个文件最大35tb,标准冗余时单个文件最大5.8tb,高冗余度时单个文件最大3.9tb

  • 管理磁盘组

ASM 实例的主要目的是管理磁盘组和保护其数据。ASM 实例还将文件分布传送到数据库实例。这样,数据库实例就可以直接访问磁盘组中存储的文件。

有多个磁盘组管理命令。执行这些命令都需要SYSASMSYSDBA权限,且必须从ASM 实例发出。

你可以添加新磁盘组。还可以修改现有磁盘组来添加新磁盘、删除现有磁盘以及执行许多其它操作。可以删除现有磁盘组。

  • 创建和删除磁盘组使用SQL*Plus

CREATE DISKGROUP语句,该语句的语法如下: 

CREATE DISKGROUP diskgroup_name 

  [ { HIGH | NORMAL | EXTERNAL }REDUNDANCY ] 

  [ FAILGROUP failgroup_name] 

  DISK [ NAME disk_name ] [ SIZEsize_clause ] [ FORCE | NOFORCE ] ...; 

首先要指定的就是磁盘组名称(diskgroup_name)  

指定冗余度,有三个选择:HIGH(高度冗余>三路)NORMAL(标准冗余--双路)XTERNAL(

部存储冗余)   

选择是否指定FAILGROUP(如果选择非external则必须指定)   

指定该磁盘组中的成员(对应的LUN),在指定成员时一般ASM能够自动检测出磁盘的容量,不过

如果DBA基于某些方面的考虑,希望限制ASM使用的空间的话,也可以在指定成员过程中,顺

便指定大小(只要指定的大小不超出磁盘实际容量),在添加成员时,ASM也会自动检查磁盘头以

确定该磁盘是否被加入到其它的磁盘组中,当发现该盘已加入其它磁盘组的话,你可以通过

FORCE选项来强制修改该盘所属磁盘组。 

$ . oraenv

ORACLE_SID = [orcl] ? +ASM

The Oracle base forORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is 

/u01/app/oracle

$ sqlplus AS SYSASM

SQL*Plus: Release 11.2.0.1.0 - Productionon Wed Jul 8 20:46:46 2009

Copyright (c) 1982, 2009, Oracle. Allrights reserved.

..

SQL> CREATE DISKGROUP dgroupA NORMAL REDUNDANCY 

FAILGROUP controller1 DISK 

'/devices/A1' NAME diskA1 SIZE 120G FORCE, 

'/devices/A2', 

FAILGROUP controller2 DISK 

'/devices/B1', 

'/devices/B2'

SQL> DROP DISKGROUP dgroupA INCLUDING CONTENTS;

创建和删除磁盘组

假设ASM 磁盘搜索在/dev目录中找到了下列磁盘:A1A2B1B2。另外,假设磁盘A1A2的磁盘控制器不同于B1B2的磁盘控制器。第一个示例说明如何配置名为DGROUPA的磁盘组,其包含两个故障组:CONTROLLER1ONTROLLER2。该示例还对该磁盘组使用默认冗余属性NORMAL REDUNDANCY。你还可以提供磁盘名称和磁盘的大小(可选)。如果你不提供此信息,ASM 会创建默认名称并尝试确定磁盘的大小。如果无法确定大小,将返回错误。FORCE指示指定的磁盘应该添加到指定的磁盘组,即使该磁盘已经格式化为某个ASM 磁盘组的成员。对未格式化为某个ASM 磁盘组的成员的磁盘使用FORCE选项将返回错误。

第二个语句所示,你可以删除磁盘组及其所有文件。为了避免意外删除,如果磁盘组除内部ASM 元数据外还包含任何其它文件,则必须指定INCLUDING CONTENTS选项。必须先装载磁盘组才能将其删除。在确保未打开任何磁盘组文件后,将从磁盘组中删除该组及其所有驱动器。然后,将覆盖每个磁盘的标头来清除ASM 格式信息。

  • 向磁盘组添加磁盘

ALTER DISKGROUP dgroupA ADD DISK

'/dev/sde1' NAME A5,

'/dev/sdf1' NAME A6,

'/dev/sdg1' NAME A7,

'/dev/sdh1' NAME A8;

ALTER DISKGROUP dgroupA ADD DISK '/devices/A*';

磁盘格式化---------->磁盘组重新平衡

向磁盘组添加磁盘

此示例显示如何向磁盘组添加磁盘。可以执行ALTER DISKGROUPADD DISK命令来添加磁盘。第一个语句向DGROUPA磁盘组添加四个新磁盘。

第二个语句说明搜索字符串的相互影响。请考虑下列配置:

/devices/A1是磁盘组DGROUPA的成员。

/devices/A2是磁盘组DGROUPA的成员。

/devices/A3是磁盘组DGROUPA的成员。

/devices/A4是候选磁盘。

第二个命令将A4添加到DGROUPA磁盘组。该命令将忽略其它磁盘,即使它们与搜索字符串相匹配,因为它们已经是DGROUPA磁盘组的一部分。上图显示当你向磁盘组添加磁盘时,ASM 实例会确保该磁盘是可寻址且可用的。然后会对该磁盘进行格式化和重新平衡。重新平衡过程比较耗费时间,因为该过程会将所有文件的区移至新磁盘。

注:重新平衡不会阻止任何数据库操作。重新平衡过程主要影响系统的I/O 负载。重新平衡的能力越高,对系统施加的I/O 负载越多,可用于数据库I/O I/O 带宽也就越少。

当发生添加/删除磁盘组中磁盘的操作时,ASM能够自动平衡。对于普通的删除操作(无force选项),被删除的磁盘在该上数据被有效处理前并不会立刻释放,同样,新增磁盘时,在重分配工作完成前,该盘也不会承担I/O负载的工作。要监控后台进行的操作,可以通过V$ASM_OPERATION视图查询。

如果希望ALTER DISKGROUP语句完成所有工作才返回的话,可以在执行时附加REBALANCE WAIT子句,这样该语句就会等待自动平衡的操作,直接所有操作完成才返回结果,当然在等待期间,如果你不想等待,使用CTRL+C终端既可以获得控制权,而平衡的操作不受影响,会在后台继续进行。

  • 其它ALTER命令

dgroupA删除磁盘:

ALTER DISKGROUP dgroupADROP DISK A5;

在单个命令中添加和删除磁盘:

ALTER DISKGROUP dgroupA 

DROP DISKA6

ADD FAILGROUPcontroller3 DISK'/dev/sdi1'NAME A9;

取消磁盘删除操作:

ALTER DISKGROUP dgroupA UNDROP DISKS;

其它ALTER命令

第一个语句显示如何从DGROUPA磁盘组中删除一个磁盘。

第二个语句显示如何在单个命令中添加和删除磁盘。这种方式的一大优点就是在该命令完成后才开始重新平衡操作。

第三个语句显示如何取消磁盘删除操作。

当删除磁盘时,ASM发现平衡不过来时(比如剩下的磁盘空间不足以存放所有数据时),删除操作也会失败,这种情况要么先删数据,要么取消删除的操作。

只要删除操作还没有真正完成,就可以取消删除磁盘的操作,

UNDROP命令仅对磁盘的暂挂删除操作起作用;它对于已经完成的删除操作没有影响。

如果需要,可以使用下面的语句对DGROUPB磁盘组进行重新平衡:

ALTER DISKGROUP dgroupB REBALANCEPOWER 5; 

此命令通常是不需要的,因为在添加、删除磁盘或调整磁盘大小时会自动执行该操作。

但是如果你希望使用POWER子句覆盖由初始化参数ASM_POWER_LIMIT定义的默认速度,此命令非常有用。通过重新输入具有新级别的命令,可以更改正在进行的重新平衡操作的能力级别。能力级别为零会导致重新平衡操作中断,直到隐式或显式重新调用该命令。

下面的语句可以卸载DGROUPA

ALTER DISKGROUP dgroupA DISMOUNT; 

通过MOUNTDISMOUNT选项,你可以使一个或多个磁盘组对数据库实例可用或不可用。

在支持单实例的集群ASM 环境中,当该实例故障转移到另一节点时,手动卸载和装载功能非常有用。

不管你是加还是山磁盘组中的磁盘,ASM都能自动进行平衡,确保该磁盘组中的每块盘存储的数据量平均,以实现最优化的IO性能,并且这一过程不会对数据造成影响。

  • 手动平衡磁盘组

一般情况下ASM都会自动对其下的磁盘组进行平衡,不过ORACLE也提供了手动平衡磁盘组的方式,通过alter diskgroup... power 语句。前面提到过磁盘组的平衡度有111多个级别,默认是按照ASM_POWER_LIMIT初始化参数中设置的值,手动平衡的话,设置的平衡度可以与初始化参数中并不相同,例如,设置磁盘组平衡度为6,语句如下:

SQL> alter diskgroup DATA rebalancepower 6;

Diskgroup altered.

  手动平衡磁盘组可能涉及大量的工作,该操作可能费时较久,因此DBA在执行该语句时,一定要注意该操作对IO 性能的影响。 

 另外再次强调,上述语句将很快返回diskgroupaltered的提示,但这并不表示操作真正完成,它只是反馈语句提交而已,查看磁盘后台的操作,可以通过v$asm_operator视图,或者在语句执行时增加wait子句,这样ASM将会等到操作真正完成时,才返回提示信息。 

  • 管理目录

  ASM 磁盘组中文件和目录的管理自动化水平相当高,应该说基本上完全不需要DBA参与,当然,也是可以手动修改的。

  创建新目录: 

SQL> alter diskgroup asmdisk2 add directory '+ASMDISK2/JSS1'; 

Diskgroup altered. 

  修改目录名: 

SQL> alter diskgroup asmdisk2 rename directory '+ASMDISK2/JSS1' 

  2  to '+ASMDISK2/JSS2'; 

Diskgroup altered. 

  删除目录名: 

SQL> alter diskgroup asmdisk2 drop directory '+ASMDISK2/JSS2'; 

Diskgroup altered. 

  实际上,ASM中目录和文件的管理,也可以通过ASMCMD命令行方式进行,该命令行进入之后,是一个类似文件系统的管理界面,ORACLE提供了一些最基础的,如cdlsmkdirrm等等几个有限的操作命令。

  • 管理别名

当系统自动产生的名称太过复杂不怎么好记,DBA可以通过别名,为它创建一个简单化的名称,而又不会对其现有名称造成任何影响。ASM中创建别名是通过alter diskgroupalias子句实现,支持增加/修改/删除等多项操作。V$ASM_ALIAS视图中可以查询到当前实例中创建的别名。

  例如,增加别名: 

SQL> alter diskgroup asmdisk2 add alias'+ASMDISK2/repdb/datafile/temp01.dbf' for'+ASMDISK2/repdb/TEMPFILE/TEMP.267.714576831'; 

Diskgroup altered. 

  修改别名: 

SQL> alter diskgroup asmdisk2 renamealias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+ASMDISK2/repdb/TEMPFILE/temp01.dbf'; 

Diskgroup altered. 

  删除别名: 

SQL> alter diskgroup asmdisk2 dropalias '+ASMDISK2/repdb/TEMPFILE/temp01.dbf'; 

Diskgroup altered. 

 不管是添加/删除或是修改别名,对原有文件路径均不会有影响。 

  • 使用Oracle Enterprise Manager 管理ASM

Oracle Enterprise Manager (EM) Oracle 的管理工具系列,管理对象涵盖数据库、中间件、应用程序、网络、IT 基础结构及其它。Oracle Enterprise Manager 是一个基于浏览器的环境,为常见ASM 管理任务提供了一个点击式替代方案。

  • ASM 磁盘组兼容性

每个磁盘组的兼容性都可以分别控制:

– ASM 兼容性控制磁盘上ASM 元数据结构。

– RDBMS 兼容性控制最低使用者客户机级别。

– ADVM 兼容性确定磁盘组是否可以包含Oracle ASM 卷。

设置磁盘组兼容性的操作是不可逆的。

适用于ASM 磁盘组的兼容性有三种:涉及描述磁盘组的持久性数据结构,客户机(磁盘组的使用者)的功能,以及能否在磁盘组中包含卷。这些属性分别称为“ASM 兼容性“RDBMS 兼容性“ADVM 兼容性。每个磁盘组的兼容性都可以独立控制。这是支持包含Oracle Database10gOracle Database 11g磁盘组的异构环境所必需的。

这三种兼容性设置是每个ASM 磁盘组的属性:

•RDBMS 兼容性是指RDBMS 实例的最低兼容版本,此设置将允许该实例装载磁盘组。

该兼容性确定了ASM 实例与数据库(RDBMS) 实例间交换消息的格式。ASM 实例可以支持以不同兼容性设置运行的不同RDBMS 客户机。每个实例的数据库兼容版本设置必须高于或等于该数据库使用的所有磁盘组的RDBMS 兼容性。数据库实例与ASM 实例通常在不同的Oracle 主目录中运行。这意味着数据库实例可以运行与ASM 实例不同的软件版本。数据库实例第一次连接到ASM 实例时,系统会协定这两个实例都支持的最高版本。

数据库的兼容性参数设置、数据库的软件版本以及磁盘组的RDBMS 兼容性设置确定了数据库实例能否装载给定的磁盘组。

•ASM 兼容性是指控制磁盘上ASM 元数据的数据结构格式的持久性兼容性设置。

磁盘组的ASM 兼容性级别必须始终高于或等于同一磁盘组的RDBMS 兼容性级别。

ASM 兼容性只与ASM 元数据的格式相关。文件内容的格式取决于数据库实例。例如,可以将某个磁盘组的ASM 兼容性设置为11.0,而将该磁盘组的RDBMS 兼容性设置为10.1。这意味着该磁盘组只能由软件版本为11.0 或更高的ASM 软件管理,而软件版本高于或等于10.1 的任何数据库客户机都可以使用该磁盘组。

 

• ADVM 兼容性属性确定磁盘组能否包含Oracle ASM 卷。该值必须设置为11.2 或更高。设置该属性前,必须确保COMPATIBLE.ASM的值为11.2 或更高。此外,还必须加载ADVM 卷驱动程序。

仅当持久性磁盘结构或消息传送协议发生更改时,才需要提高磁盘组的兼容性。但是,提高磁盘组兼容性是一个不可逆的操作。可以使用CREATE DISKGROUP命令或ALTER DISKGROUP命令来设置磁盘组兼容性。

注:除了磁盘组兼容性,兼容参数(数据库兼容版本)确定了启用的功能;该参数适用于数据库或ASM 实例,具体取决于instance_type参数。例如,将该参数设置为10.1 将禁止使用Oracle Database 11g中引入的任何新功能(磁盘联机/脱机、可变区等)。

  • ASM 磁盘组属性

CREATE DISKGROUP DATA2 NORMAL REDUNDANCY 

DISK '/dev/sda1','/dev/sdb1'

ATTRIBUTE 'compatible.asm'='11.2';

 

每当创建或更改ASM 磁盘组时,都可以使用CREATE DISKGROUPALTER DISKGROUP命令新增的ATTRIBUTE子句更改其属性。图中的表简要概述了这些属性:

•ASM 允许使用在创建磁盘组时指定的不同分配单元(AU) 大小。AU 大小可以是12481632 64 MB

•RDBMS 兼容性:有关详细信息,请参阅“ASM 磁盘组兼容性一节。

•ASM 兼容性:有关详细信息,请参阅“ASM 磁盘组兼容性一节。

可以用分钟(M)、小时(H) 或天(D) 为单位指定DISK_REPAIR_TIME。如果省略单位,则使用默认值H。如果省略此属性,则使用默认值3.6H。可以使用ALTER DISKGROUP ... DISK OFFLINE语句覆盖此属性。

还可以为指定的模板指定冗余属性。

还可以为指定的模板指定条带化属性。

注:对于每个已定义的磁盘组,可以通过V$ASM_ATTRIBUTE固定视图查看所有已定义的属性。

  • 使用Oracle Enterprise Manager 编辑磁盘组属性

Oracle Enterprise Manager 提供了一种简便方式用于存储和检索与磁盘组相关的环境设置。

“Create Disk Group(创建磁盘组)页和“Edit AdvancedAttributes for Disk Group(编辑磁盘组的高级属性)页中都可以设置兼容属性。仅“Edit Advanced Attributes for Disk Group(编辑磁盘组的高级属性)页中添加了disk_repair_time属性。

注:对于低于11gASM 实例,默认ASM 兼容性和客户机兼容性都为10.1。对于11gASM 实例,默认ASM 兼容性为11.2,数据库兼容性为10.1

  • 检索ASM 元数据

使用SQL*Plus

SQL> SELECT f.type, f.redundancy, f.striped,f.modification_date, 

a.system_created, a.name FROM v$asm_alias a, v$asm_file fWHERE 

a.file_number = f.file_number and a.group_number =f.group_number 

and type='DATAFILE';

TYPE REDUND STRIPE MODIFICAT S NAME

-------- ------ ------ --------- ----------------------DATAFILE MIRROR COARSE 08-JUL-09 Y SYSTEM.256.689832921

DATAFILE MIRROR COARSE 08-JUL-09 Y SYSAUX.257.689832923

使用asmcmd

ASMCMD> ls -l +DATA/orcl/datafile

Type Redund Striped Time Sys Name

DATAFILE MIRROR COARSE JUL 08 21:00:00 YSYSTEM.256.689832921

DATAFILE MIRROR COARSE JUL 08 21:00:00 YSYSAUX.257.689832923

检索ASM 元数据

ASM 实例托管基于内存的元数据表,这些表通过动态性能视图呈现。可以使用SQL*PlusasmcmdOracle Enterprise Manager 查询该数据。

使用SQL*Plus 需要具有SQL 语言知识,可能要联接多个动态性能视图来检索相关信息。

第一个示例显示v$asm_filev$asm_alias之间建立了一个联接,以便显示关于数据库的数据文件的元数据。如果针对ASM 实例执行此查询,根据语法的定义方式,将检索多个数据库的数据文件。需要使用附加过滤条件才能将输出限定为单个数据库。

asmcmd实用程序的优点在于,不需要SQL 语言知识就能连接到ASM 实例并检索元数据。

它使用与UNIX 表示法类似的样式。此幻灯片上的第二个示例使用asmcmd命令来检索SQL 示例中的元数据。此示例的另一个优点是输出限制为单个数据库的数据文件,因为列出的路径包含数据库名称orcl和文件类型datafile。因此,对于asmcmd中显示的目录,需要使用WHERE子句设置SQL 过滤条件才能给出相同结果。

注:在Oracle EnterpriseManager Database Control 中,只需在各个ASM Web 页中浏览就能查看大多数ASM 元数据。

  • ASM 快速镜像重新同步概览

ASM 快速镜像重新同步可以显著减少重新同步临时故障磁盘所需的时间。如果某个磁盘因临时故障而脱机,ASM 将跟踪在中断期间发生修改的区。临时故障被修复后,ASM 可以快速地仅重新同步在中断期间受影响的ASM 磁盘区。

此功能假设受影响的ASM 磁盘的内容未被破坏或修改。

某个ASM 磁盘路径出现故障时,如果您已设置了相应磁盘组的DISK_REPAIR_TIME属性,则ASM 磁盘会脱机,但不会被删除。此属性的设置确定了ASM 可容忍的磁盘中断持续时间;如果中断在此时间范围内,则修复完成后仍可重新同步。注:跟踪机制对每个修改的分配单元使用1 位。这样可确保跟踪机制非常高效。

  • 小结

使用SQL*plusasmcmdOracle Enterprise Manager 管理ASM 实例

创建和删除ASM 磁盘组

指定ASM 兼容性属性

扩展ASM 磁盘组

比较检索ASM 元数据的方

 

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!


 


文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论