11G新特性 -- ASM Fast Mirror Resync
ASM Fast Mirror Resync
在oracle 10g中,如果asm磁盘因为光纤、控制器发生故障而发生failure,asm将无法继续向该磁盘中写入数据。
asm会将发生failure的磁盘变为offline,等从其它冗余组同步完数据后,将该磁盘drop。asm不会再从被offline的磁盘读取数据,因为asm认为该磁盘的数据是过期的。
即使failure的磁盘被自动修复,也需要手动将磁盘重新插回重新数据同步。
1.将磁盘offline,并指定drop after语句
SQL> alter diskgroup dgroup1 disk data01 drop after 0h;#asm完成数据重新平衡后将该磁盘删除
2.再将该磁盘重新加入磁盘组之前,要清除掉该磁盘上的数据(在11g中不需要执行这个步骤)
# dd if=/dev/zero of=asm_disk1 bs=1024k count=100
3.将磁盘重新加入磁盘组
SQL> alter diskgroup dgroup1 add disk '/dev/raw/raw1' size 100m;
在oracle 11g中,ASM Fast Mirror Resync降低了10g中,磁盘发生failure时的成本开销。
如果是暂时性的磁盘failure,asm会跟踪对发生failure的磁盘上的对应的extent的修改,等该磁盘恢复后,重新同步被修改过的extents。
这样就只是需要重写很小一部分extents的内容。在将failure的磁盘offline后,并不会将其drop(需要看参数disk_repair_time的设置)。参数disk_repair_time的值表示在磁盘offline后的多长时间不会将磁盘drop。
开启ASM Fast Mirror Resync
开启该功能需要针对磁盘组设置disk_repair_time的值。默认是3.6h
SQL> alter diskgroup dgroup1 set attribute 'disk_repair_time'='3.6h';
要想将failure的磁盘维护结束后加入磁盘组,只需执行以下操作:
SQL> alter diskgroup dgroup1 online; #自动使用ASM Fast Mirror Resync进行数据同步