零宕机时间迁移 ASM 磁盘组到另一个 SAN、磁盘阵列、DAS 的准确步骤 (Doc ID 1946664.1)
Tags: Doc ID 1946664.1MosOracle磁盘组
目标
本文详述了在零宕机时间的前提下将 ASM 磁盘组从一个存储设备(SAN/磁盘阵列/DAS等)迁移到另一个存储设备(SAN/磁盘阵列/DAS等)的准确步骤。此过程也适用于存放 OCR、表决磁盘和 ASM spfile 的磁盘组。
解决方案
如果你您计划将你您的磁盘组从当前的磁盘迁移到新的存储上,此操作过程能没有没有任何停机时间地实现它。请按照如下步骤:
1) 备份所有数据库并检验备份有效性(为保护数据所必须)。
2) 增加新的路径(新存储的新磁盘)到 asm_diskstring 以供 ASM 识别:
例如:
1 | SQL> alter system set asm_diskstring = '/dev/emcpowerc*' , '/dev/emcpowerh*'; |
这里: '/dev/emcpowerc*' 是当前的磁盘。
这里: '/dev/emcpowerh*' 是新的磁盘。
3) 确认新磁盘被 ASM 识别:
1 | SQL> select path from v$asm_disk; |
4) 使用下面文档中的方法验证所有新磁盘:
How To Add a New Disk(s) to An Existing Diskgroup on RAC Cluster or Standalone ASM Configuration (Best Practices). (Doc ID 557348.1)
5) 增加新磁盘到目标磁盘组:
1 2 3 4 5 6 7 8 9 10 | SQL> alter diskgroup <diskgroup name> add disk ‘<new disk 1>’, ‘<new disk 2>’, ‘<new disk 3>’, ‘<new disk 4>’, . . . ‘<new disk N>’ rebalance power <#>; |
6) 接下来等待重平衡操作完成:
1 2 3 | SQL> select * from v$asm_operation; SQL> select * from gv$asm_operation; |
7) 最后,移除旧磁盘:
1 2 3 4 5 6 7 8 9 10 | SQL> alter diskgroup <diskgroup name> drop disk <disk name A>, <disk name B>, <disk name D>, <disk name E>, . . . <disk name X> rebalance power <#>; |
8) 接下来等待重平衡操作完成:
1 2 | SQL> select * from v$asm_operation; SQL> select * from gv$asm_operation; |
9) 至此,你您的 ASM 磁盘组和数据库已经迁移到了新的存储上面。
注: 或者,我们也可以按照如下命令,将加盘,删盘放在一个操作里执行,这种方式只会发生一次重平衡操作:
1 2 3 4 | SQL> alter diskgroup <diskgroup name> add disk '<new device physical name 1>', .., '<new device physical name N>' drop disk <old disk logical name 1>, <old disk logical name 2>, ..,<old disk logical name N> rebalance power <#>; |
这样会比使用分开的命令(加盘和删盘语句)高效许多。
注1:因为在 10g 版本(如果驱逐磁盘时发生了某些错误,比如 hang)ASM 不会去自动重启重平衡操作(这个已经在 11g 和 12c 版本得到增强),所以需要做一个手工的重平衡操作。手工启动重平衡的命令如下:
1 | SQL> alter diskgroup <diskgroup name> rebalance power 11; |
注2:一旦 drop 磁盘发起的重平衡操作完成,来自旧的 SAN/磁盘阵列/DAS 中的磁盘最终要从磁盘组中驱逐出去,此时在 v$asm_disk 视图中这些磁盘的记录为 HEADER_STATUS = FORMER。
参考
NOTE:1918350.1 - Exact Steps to Migrate ASM Diskgroups to Another SAN/Disk-Array/DAS/Etc without Downtime (When ASMLIB Devices Are Involved)
NOTE:557348.1 - How To Add a New Disk(s) to An Existing Diskgroup on RAC Cluster or Standalone ASM Configuration (Best Practices).