要求和示例
此功能要求磁盘的冗余级别应设置为 NORMAL 或者 HIGH 。
参数 compatible.asm 和 compatible.rdbms 应等于 11.1.0.0.0 或者更高。
我们需要设置 DISK_REPAIR_TIME 参数,该参数给出了磁盘修复所需的时间。
此操作的默认时间设置为 3.6 小时。
例子:
SQL> ALTER DISKGROUP dgroupA SET ATTRIBUTE 'DISK_REPAIR_TIME'='3H';
- 磁盘必须离线(硬件故障自动或者手动维护),不可掉盘。
要使磁盘脱机,请使用:
SQL> ALTER DISKGROUP DG_NAME OFFLINE DISKS
例子:
SQL> ALTER DISKGROUP dgroupA OFFLINE DISKS IN FAILGROUP controller2 DROP AFTER 5H;
磁盘的修复时间与磁盘组相关联。
我们可以使用以下命令覆盖磁盘组的修复时间:
SQL> ALTER DISKGROUP dgroupA SET ATTRIBUTE 'DISK_REPAIR_TIME'='3H';
其他手动脱机磁盘操作示例:
SQL>ALTER DISKGROUP DG1 OFFLINE DISK DG1_0003 ; SQL>ALTER DISKGROUP DG1 OFFLINE DISK DG1_0003 DROP AFTER 1H; SQL>ALTER DISKGROUP DG1 OFFLINE DISKS IN FAILGROUP FG1; SQL> ALTER DISKGROUP dgroupA OFFLINE DISKS IN FAILGROUP controller2 DROP AFTER 5H;
- 在受影响的磁盘上纠正暂时性故障后,我们需要明确地使磁盘联机。
例如:
SQL>ALTER DISKGROUP DG1 ONLINE DISK DG1_0003; SQL>ALTER DISKGROUP DG1 ONLINE DISKS IN FAILGROUP FG1 POWER 8 WAIT;
- 如果我们无法修复处于脱机状态的故障组,我们可以使用带有 FORCE 选项的 ALTER DISKGROUP DROP DISKS IN FAILGROUP 命令。
这确保了最初存储在这些磁盘上的数据是从数据的冗余副本重建的,并存储在同一磁盘组中的其他磁盘上。
例子:
SQL> ALTER DISKGROUP dgroupA DROP DISKS IN FAILGROUP controller2;
ASM 快速磁盘重新同步概述
当我们使磁盘脱机时以防磁盘损坏或者数据库无法从磁盘读取或者写入。
在 Oracle 数据库 10g 的情况下,Oracle 引擎用于平衡其他磁盘与离线磁盘的内容。
此过程是一项成本相对较高的操作,可能需要数小时才能完成,即使磁盘故障只是暂时性故障。Oracle 数据库 11g 引入了 ASM 快速镜像重新同步特性,可显着减少重新同步磁盘瞬时故障所需的时间。
当磁盘脱机时,oracle 引擎不会平衡其他磁盘,而是 ASM 跟踪在中断期间修改的分配单元。
故障磁盘中存在的内容由其他磁盘跟踪,对故障磁盘内容所做的任何修改实际上都是在其他可用磁盘中进行的。
一旦我们取回磁盘并添加它,属于该磁盘并在此期间被修改的数据将再次重新同步。
这避免了大量的重新平衡活动。ASM 快速磁盘重新同步显着减少了重新同步磁盘瞬时故障所需的时间。
当磁盘因暂时性故障而脱机时,ASM 会跟踪在中断期间修改的区。
当暂时性故障修复后,ASM 可以快速仅重新同步中断期间受到影响的 ASM 磁盘区。此功能假设受影响的 ASM 磁盘的内容未被损坏或者修改。
ASM 磁盘路径发生故障时,如果我们为相应磁盘组设置了 DISK_REPAIR_TIME 属性,则该 ASM 磁盘将脱机但不会被删除。
此属性的设置决定了 ASM 在完成修复后仍然能够重新同步的情况下容忍的磁盘中断的持续时间。
注意:跟踪机制为每个修改的分配单元使用一位。
这确保了跟踪机制非常有效。
Oracle 11g 为 ASM 引入了新的可扩展性和性能改进,这就是 ASM 快速磁盘重新同步功能的情况,只要磁盘驱动器介质没有损坏,它就会在瞬时磁盘路径故障后快速重新同步磁盘组中的 ASM 磁盘。
任何导致故障组暂时不可用的故障都被视为暂时故障。
磁盘路径故障,例如电缆断开、主机总线适配器或者控制器故障,或者磁盘电源中断,都可能导致瞬时故障。
快速镜像重新同步的持续时间取决于中断的持续时间。
重新同步的持续时间通常比完全重建整个 ASM 磁盘组所需的时间短得多。