本文详述了在零宕机时间的前提下将 ASM 磁盘组从一个存储设备(SAN/磁盘阵列/DAS等)迁移到另一个存储设备(SAN/磁盘阵列/DAS等)的准确步骤。此过程也适用于存放 OCR、表决磁盘和 ASM spfile 的磁盘组。
操作步骤
如果你您计划将你您的磁盘组从当前的磁盘迁移到新的存储上,此操作过程能没有没有任何停机时间地实现它。请按照如下步骤:
1) 备份所有数据库并检验备份有效性(为保护数据所必须)。
2) 增加新的路径(新存储的新磁盘)到 asm_diskstring 以供 ASM 识别:
例如:
SQL> alter system set asm_diskstring = '/dev/emcpowerc*' , '/dev/emcpowerh*';
这里: '/dev/emcpowerc*' 是当前的磁盘。
这里: '/dev/emcpowerh*' 是新的磁盘。
3) 确认新磁盘被 ASM 识别:
SQL> select path from v$asm_disk;
4) 使用下面文档中的方法验证所有新磁盘:
请参考上一篇文章《 》
5) 增加新磁盘到目标磁盘组:
SQL> alter diskgroup add disk
‘’,
‘’,
‘’,
‘’,
.
.
.
‘’ rebalance power <#>;
6) 接下来等待重平衡操作完成:
SQL> select * from v$asm_operation;
SQL> select * from gv$asm_operation;
7) 最后,移除旧磁盘:
SQL> alter diskgroup drop disk
,
,
,
,
.
.
.
rebalance power <#>;
8) 接下来等待重平衡操作完成:
SQL> select * from v$asm_operation;
SQL> select * from gv$asm_operation;
9) 至此,你您的 ASM 磁盘组和数据库已经迁移到了新的存储上面。
注: 或者,我们也可以按照如下命令,将加盘,删盘放在一个操作里执行,这种方式只会发生一次重平衡操作:
SQL> alter diskgroup
add disk '', .., ''
drop disk , , ..,
rebalance power <#>;
这样会比使用分开的命令(加盘和删盘语句)高效许多。
注1:因为在 10g 版本(如果驱逐磁盘时发生了某些错误,比如 hang)ASM 不会去自动重启重平衡操作(这个已经在 11g 和 12c 版本得到增强),所以需要做一个手工的重平衡操作。手工启动重平衡的命令如下:
SQL> alter diskgroup rebalance power 11;
注2:一旦 drop 磁盘发起的重平衡操作完成,来自旧的 SAN/磁盘阵列/DAS 中的磁盘最终要从磁盘组中驱逐出去,此时在 v$asm_disk 视图中这些磁盘的记录为 HEADER_STATUS = FORMER。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12798004/viewspace-1410771/
,如需转载,请注明出处,否则将追究法律责任。