一. ASM 快速镜像再同步(ASMFast Mirror Resync)
每当ASM 无法向分配给某个磁盘的区执行写入操作时,就会使该磁盘脱机,同时会在其它磁盘上至少写入一个此区(ASM 数据区)的镜像副本(如果相应的磁盘组使用了ASM 冗余)。
使用OracleDatabase 10g 时,ASM 会假定脱机磁盘只包含过时数据,因此不再从此类磁盘中读取数据。磁盘脱机后不久,ASM 就会使用冗余区副本在磁盘组中的剩余磁盘上重新创建分配给磁盘的区(ASM 数据区),将脱机的磁盘从磁盘组中删除。此进程是一项开销相对较大的操作,可能要花费几小时来完成。
如果磁盘故障只是临时性的(如电缆、主机总线适配器、控制器故障或磁盘的电源中断),则必须在临时故障修复后重新添加磁盘。但是,将删除的磁盘重新添加回磁盘组还需要将区(ASM 数据区)迁回磁盘,因此增加了成本。
ASM 快速镜像再同步会显著减少重新同步临时故障磁盘所需的时间。如果某个磁盘因临时故障而脱机,ASM 将跟踪在中断期间发生修改的区。临时故障被修复后,ASM 可以快速地仅重新同步在中断期间受到影响的ASM 磁盘区。此功能假定受到影响的ASM磁盘内容未发生损坏或修改。
某个ASM 磁盘路径出现故障时,如果您已设置了相应磁盘组的DISK_REPAIR_TIME 属性,则ASM 磁盘会脱机,但不会被删除。此属性的设置确定了ASM 可容忍的磁盘中断持续时间;如果中断在此时间范围内,则修复完成后仍可重新同步。
注:跟踪机制对每个已修改的区使用一个位,这样可确保跟踪机制非常高效。
请按磁盘组设置此功能。可以在创建磁盘组后使用ALTER DISKGROUP 命令完成此操作。使用一个类似以下命令的命令启用ASM 快速镜像再同步:
ALTER DISKGROUPSET ATTRIBUTE 'DISK_REPAIR_TIME'='2D4H30M'
在 修复了磁盘后,运行SQL 语句ALTER DISKGROUP ONLINE DISK。此语句可使修复的磁盘组重新联机以启用写操作,这样便不会丢失新的写入内容。此语句还会启动一个过程,以复制在其冗余副本上标记为过时的所有 区。不能将ONLINE 语句用于已经删除的磁盘。
可以通过查询V$ASM_ATTRIBUTE视图来查看当前的属性值。通过查询V$ASM_DISK 或V$ASM_DISK_IOSTAT 的REPAIR_TIMER 列,可以确定ASM 删除某个脱机磁盘前剩余的时间。此外,V$ASM_OPERATION 中将出现一个与磁盘再同步操作对应的行,其中的OPERATION 列设置为SYNC。
为了进行预防性维护,还可以使用SQL语句ALTER DISKGROUP OFFLINE DISK 手动使ASM 磁盘脱机。使用此命令可以指定一个计时器,以覆盖在磁盘组级别定义的计时器。完成维护后,使用ALTER DISKGROUP ONLINE DISK 语句使磁盘重新联机。
如果无法修复处于脱机状态的故障组,则可使用带FORCE 选项的ALTER DISKGROUP DROP DISKS INFAILGROUP 命令,这样便可以确保根据数据的冗余副本重新构建原先存储在这些磁盘上的数据,并将其存储在同一磁盘组中的其它磁盘上。
注:仅当装载了磁盘组时才计算时间。而且,更改DISK_REPAIR_TIME 的值不会影响以前脱机的磁盘。DISK_REPAIR_TIME 的默认设置3.6 小时对多数环境来说应当足够了。
在Oracle Database10g 中配置ASM 故障组时,ASM 将始终读取镜像区的主副本。让节点从最靠近该节点的故障组区(即使是辅助区)读取数据效率可能更高些。在扩展的集群配置(节点跨多个站点分布)中,这种情 况尤其明显;在这种情况下,从区的本地副本读取数据可以提高性能。
使用OracleDatabase 11g 时,通过使用新的初始化参数ASM_PREFERRED_READ_FAILURE_GROUPS指定首选镜像读取名称列表来配置首选镜像读取,可以做到 这一点。这些故障组中的磁盘将成为首选读取磁盘。这样一来,每个节点都可以从其本地磁盘读取数据了。这样不但可以提高效率和性能,还可以降低网络通信量。 该参数的设置取决于具体的实例。
要 配置此功能,请设置新的ASM_PREFERRED_READ_FAILURE_GROUPS初始化参数。此参数是一个多值参数,应包含一个带有逗号分隔 的故障组名称列表的字符串。指定的每个故障组名称应以其磁盘组名称和一个“.”字符为前缀。此参数是动态参数,可以随时使用ALTER SYSTEM 命令进行修改。但是,该初始化参数仅对ASM实例有效。使用扩展集群时,该参数中指定的故障组只应包含对应实例的本地磁盘。
新的列PREFERRED_READ已被添加到V$ASM_DISK 视图中,使用单字符格式。如果磁盘所属的磁盘组属于首选读取故障组,则此列的值为Y。
要确定ASM 首选读取故障组的特定性能问题,请使用V$ASM_DISK_IOSTAT 视图。
此视图将显示每台ASM 客户机的磁盘输入/输出(I/O) 统计信息。如果从一个数据库实例中查询此视图,则仅显示此实例的行。
在实践中,扩展集群中只有数量有限的有效磁盘组配置。有效磁盘组配置会同时考虑磁盘组在扩展集群中的性能和可用性。下面是一些可能的示例:
对 于一个包含两个站点的扩展集群,正常的冗余磁盘组应只有两个故障组;一个站点的所有本地磁盘都应属于相同的故障组。此外,每个实例只能指定一个故障组作为 首选读取故障组。如果有两个以上的故障组,则ASM 不会对一个跨两个站点的虚拟区进行镜像。而且,如果具有两个以上故障组的站点关闭,则也会使磁盘组关闭。如果要创建的磁盘组是一个高冗余磁盘组,则应在每 个站点及其本地磁盘上最多创建两个故障组,并将两个本地故障组都指定为本地实例的首选读取故障组。
对于包含三个站点的扩展集群,应使用含三个故障组的高冗余磁盘组。通过这种方式,ASM 可以保证每个虚拟区对于每个站点都有一个本地镜像副本,并且三个站点上的磁盘组都受到保护以避免重大灾难。
ASM 可变大小区是一种自动功能,ASM 可使用该功能在提高内存使用效率的同时支持较大的文件大小。
在Oracle Database 11g 中,ASM 支持1、8 和64 个分配单元(AU) 的可变大小区。ASM使用预先确定了数量的各种大小的区。只要一个文件超过了特定的阈值,就会使用下一个区大小。
利用此功能,可以减少描述文件所需的区指针数,以及管理共享池中区映射所需的内存(在大型文件配置中禁止使用)。区大小在文件之间以及文件内部都有所不同。
通过可变大小区功能还可以使用ASM部署几百个TB(甚至几个PB)大小的Oracle DB。
注:可变大小区的管理是完全自动化的,不需要手动管理。
但是,如果分配并释放了大量非连续的小型数据区,并且没有其它连续的大型区可用时,则可能出现外部碎片。碎片整理操作将被集成到重新平衡操作中。因此,DBA 始终可以通过执行重新平衡操作对磁盘组进行碎片整理。
不过,这种情况极其罕见,因为ASM也会在所需大小不可用时自动在区分配过程中执行碎片整理。这可能会延长某些分配操作的时间。
注:此功能还可以加快文件的打开速度,因为这可以大量减少存储文件区所需的内存量。
ASM 可伸缩性和性能增强:
(1) 区大小自动根据文件大小增加。
(2) ASM 支持可变区大小,可以:
– 增加可能的最大文件大小
– 减少共享池中内存的使用量
(3) 出现重要碎片时,不需要执行手动重新平衡以外的其它管理任务。
ASM 强制实施下列限制:
(1) 存储系统中包含63 个磁盘组
(2) 存储系统中包含10,000 个ASM 磁盘
(3) 每个ASM 磁盘的最大存储空间为4 PB
(4) 每个存储系统的最大存储空间为40 EB
(5) 每个磁盘组包含1 百万个文件
(6) 最大文件大小取决于所使用的磁盘组的冗余类型:
外部冗余为140 PB(该值当前大于可能的数据库文件大小),
正常冗余为42 PB,
高冗余为15 PB。
注:在Oracle Database10g 中,外部冗余的最大ASM 文件大小为35 TB。
有两种兼容性适用于ASM 磁盘组:
(1) ASM 兼容性:处理说明磁盘组的持久数据结构
(2) RDBMS 兼容性:处理客户机(磁盘组的使用者)的功能
可以独立控制每个磁盘组的兼容性。这是启用包含来自Oracle Database 10g 和OracleDatabase 11g 的磁盘组的异构环境所必需的。这两种兼容性设置是每个ASM 磁盘组的属性:
(1)RDBMS 兼容性是指RDBMS 实例的最低兼容版本,可以允许该实例装载磁盘组。该兼容性确定了ASM 实例与数据库(RDBMS) 实例间交换消息的格式。ASM 实例可以支持以不同兼容性设置运行的不同RDBMS 客户机。每个实例的数据库兼容版本设置必须高于或等于该数据库使用的所有磁盘组的RDBMS 兼容性。数据库实例与ASM 实例通常在不同的Oracle 主目录中运行。这表示数据库实例与ASM 实例所运行的软件版本可能不同。数据库实例第一次连接到ASM 实例时,系统会协定这两个实例都支持的最高版本。数据库的兼容性参数设置、数据库的软件版本以及磁盘组的RDBMS 兼容性设置确定了数据库实例能否装载指定的磁盘组。
(2)ASM 兼容性是指控制磁盘上ASM 元数据的数据结构格式的持久兼容性设置。磁盘组的ASM 兼容性级别必须始终高于或等于同一磁盘组的RDBMS 兼容性级别。ASM 兼容性只与ASM 元数据的格式相关。文件内容的格式取决于数据库实例。例如,可以将某个磁盘组的ASM 兼容性设置为11.0,而将该磁盘组的RDBMS 兼容性设置为10.1。这表示该磁盘组只能由软件版本为11.0 或更高的ASM 软件管理,而软件版本高于或等于10.1 的任何数据库客户机都可以使用该磁盘组。
仅当持久磁盘结构或消息传送协议发生更改时,才需要提高磁盘组的兼容性。但是,提高磁盘组兼容性是一个不可逆的操作。可以使用CREATE DISKGROUP 命令或ALTER DISKGROUP 命令来设置磁盘组兼容性。
注: 除了确定磁盘组兼容性以外,compatible参数(数据库的兼容版本)还确定启用的功能。该参数适用于数据库实例或ASM 实例,具体取决于instance_type 参数。例如,将该参数设置为10.1 将禁止使用Oracle Database 11g 中引入的任何新功能(磁盘联机/脱机、可变区等)。
创建或变更ASM 磁盘组时,可以使用CREATE DISKGROUP 命令或ALTER DISKGROUP命令新增的ATTRIBUTE 子句更改其属性。
ASM 磁盘组属性:
(1) 通过ASM,可以使用在创建磁盘组时指定的不同AU 大小。AU 大小可以为1 MB、2 MB、4 MB、8 MB、16 MB、32 MB 或64 MB。
(2) RDBMS 兼容性。
(3) ASM 兼容性。
(4) 可以用分钟(M)、小时(H) 或天(D) 为单位指定DISK_REPAIR_TIME。
如果省略单位,则默认单位为H。如果忽略此属性,则默认值为3.6H。可以使用ALTER DISKGROUP 语句覆盖此属性。
(5) 可以为指定的模板指定冗余属性。
(6) 可以为指定的模板指定条带化属性。
注:对于每个已定义的磁盘组,可以使用V$ASM_ATTRIBUTE 固定视图查看所有定义的属性。
如下表:
CHECK 磁盘组命令已经过了简化,默认情况下将检查所有元数据目录。使用CHECK 命令可以验证ASM 磁盘组元数据的内部一致性。
ALTER DISKGROUPDATA CHECK;
ASM 会显示错误概要,并将检测到的错误细节写入到预警日志中。
在较早的版本中,可以为ALL、DISK、DISKS IN FAILGROUP 和FILE 指定此子句。
由于不再需要这些子句,所以已将其废弃。在当前版本中,CHECK 关键字可执行以下操作:
(1) 检查磁盘的一致性(等同于以前版本中的CHECK DISK 和CHECK DISK IN FAILGROUP)
(2) 交叉检查所有文件区映射和分配表的一致性(等同于以前版本中的CHECK FILE)
(3) 检查别名元数据目录和文件目录的链接是否正确
(4) 检查别名目录树的链接是否正确
(5) 检查ASM 元数据目录,确定其不包含无法访问的已分配块
使用REPAIR | NOREPAIR子句可以指示ASM 是否尝试修复一致性检查过程中发现的错误。默认设置为“REPAIR(修复)”。如果希望在存在不一致时得到提醒,但不希望ASM 执行任何自动操作解决问题,则可使用“NOREPAIR(不修复)”设置。
注:在磁盘组检查中引入额外的检查会降低整个磁盘组检查操作的速度。在磁盘组检查中引入额外的检查会降低整个磁盘组检查操作的速度。
Oracle Database11g 中有一种装载磁盘组的新装载模式RESTRICTED。以RESTRICTED 模式装载磁盘组时,客户机将无法访问磁盘组中的文件。如果某个ASM 实例知道不存在任何客户机,则该实例就不尝试向客户机传送消息来锁定/解除锁定区映射,从而可以提高重新平衡操作的性能。
以RESTRICTED 模式装载的磁盘组仅在一个节点上以独占方式进行装载;该节点上的ASM 客户机无法使用该磁盘组。
利用RESTRICTED 模式,可以在ASM 实例中的某个磁盘组上执行所有维护任务,而不需要进行外部交互。
在维护周期结束时,必须显式卸载磁盘组,然后以正常模式重新装载相应的磁盘组。
ALTER DISKROUPdiskgroupname MOUNT 命令已经过扩展,支持ASM 以RESTRICTED 模式装载磁盘组。
使用RESTRICTED 选项启动ASM 实例时,ASM_DISKGROUPS 参数中定义的所有磁盘组都将以RESTRICTED 模式装载。
适用于快速重新平衡的受限装载磁盘组:
(1) 磁盘组只能装载在单个实例上。
(2) 任何数据库客户机或其它ASM 实例都不能获得访问权限。
(3) 重新平衡可以继续进行,而无锁定开销。
示例:
(1) ALTER DISKGROUP data DISMOUNT;
(2) ALTER DISKGROUP data MOUNT RESTRICT;
(3) 维护任务:添加/删除磁盘…
(4) ALTER DISKGROUP data DISMOUNT;
(5) ALTER DISKGROUP data MOUNT;
此功能改变了装载不完整的磁盘组时ASM的行为。
使用OracleDatabase 10g 时,只要有足够的故障组来装载磁盘组,装载操作就会成功,即使存在丢失或损坏的故障组时也是如此。这种行为可能会自动删除ASM 磁盘,需要在修复后重新添加这些磁盘,因而会导致重新平衡操作持续较长的时间。
使用OracleDatabase 11g 时,这样的操作会失败,除非在装载损坏的磁盘组时指定了新的FORCE 选项。这样一来,您就可以在尝试重新装载前更正配置错误(如ASM_DISKSTRING 设置错误)或解决连接性问题了。
但 是,使用FORCE 选项装载的磁盘组可能会使一个或多个磁盘脱机(如果这些磁盘在装载时不可用的话)。必须在DISK_REPAIR_TIME 过期而无法还原这些设备之前采取更正措施。如果不使这些磁盘联机,系统就会从磁盘组中删除它们,因而需要进行高成本的重新平衡为磁盘组中的所有文件还原冗 余。此外,如果有一个或多个设备因MOUNT FORCE 而脱机,则在通过重新平衡还原磁盘组中的冗余之前,部分或全部文件将无法得到适当的保护。
因此,如果知道属于某个磁盘组的部分磁盘不可用,则带FORCE 选项的MOUNT 命令会很有用。如果ASM 找到了足够的磁盘来形成仲裁磁盘,则磁盘组装载就会成功。
在不指定任何选项时带有NOFORCE选项的MOUNT 是默认的MOUNT 选项。在NOFORCE 模式下,属于某个磁盘组的所有磁盘都必须是可访问的,否则装载将不会成功。
注:在不必要的情况下指定FORCE 选项也会导致错误。在集群中还存在一种特殊情况:如果第一个加载到磁盘组的不是ASM 实例,则当确定无法从本地访问磁盘但其它实例可访问该磁盘时,MOUNT FORCE将因出现错误而失败。
强制装载磁盘组
? 默认情况下,MOUNT 使用NOFORCE 选项:
– 所有磁盘必须可用
? 带有FORCE 选项的MOUNT:
– 如果存在仲裁磁盘,则会使不可用的磁盘脱机
– 如果所有磁盘都可用,则操作会失败
ALTER DISKGROUP data MOUNT [FORCE|NOFORCE];
强制删除磁盘组会将属于ASM 实例无法装载的磁盘组的磁盘头标记为FORMER。但是,ASM 实例会先确定使用相同存储子系统的任何其它ASM 实例是否在使用该磁盘组。如果是,并且该磁盘组在相同的集群或节点上,则语句会失败。
如果该磁盘组在不同的集群上,则系统会进行进一步的检查,以确定其它集群中的某个实例是否装载了该磁盘组。如果在其它位置装载了该磁盘组,则语句会失败。但是,与对同一个集群中的磁盘组进行的检查相比。后一项检查不是很确定。因此,应谨慎使用此子句。
注:执行带FORCE 选项的DROP DISKGROUP 命令时,必须同时指定INCLUDING CONTENTS 子句。
强制删除磁盘组
(1) 允许用户删除无法装载的磁盘组
(2) 如果在任何位置装载了磁盘组,则操作会失败
DROP DISKGROUP data FORCE INCLUDING CONTENTS;
此功能引入了一个新角色SYSASM,专门用于执行ASM 管理任务。使用SYSASM 角色取代SYSDBA 角色可以提高安全性,因为ASM 管理与数据库管理分开了。
使用OracleDatabase 11g 版本1 时,SYSASM 和SYSDBA 的OS 组是相同的,SYSASM的默认安装组是dba。在将来的版本中,必须创建单独的组,并且在ASM实例中SYSDBA 用户将受到限制。
您 也可以在ASM 实例中使用CREATE USER 和GRANT SYSASM SQL 语句组合来创建新的SYSASM 用户。这对远程ASM 管理很有用。这些命令可以更新每个ASM 实例的口令文件,不需要启动和运行实例。同样,可以使用REVOKE 命令撤消用户的SYSASM 角色,并可使用DROP USER 命令从口令文件中删除用户。
V$PWFILE_USERS 视图集成了一个新列SYSASM,用于指明用户是否(TRUE 或FALSE)可与SYSASM 权限关联。
注:使用Oracle Database 11g 版本1 时,如果以SYSDBA 身份登录ASM 实例,则将在相应的alert.log 文件中写入警告。
六.ASMCMD 的扩展
(1)ASMCMD 已经过扩展,包括了ASM 元数
----------------------转载自OCP教材
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。