当涉及ASMLIB设备时,如何在线迁移ASM磁盘组到另一个存储?
此过程也适用于托管 OCR、投票文件和 ASM spfile 的磁盘组。
注意:这些步骤适用于外部、正常和高冗余磁盘组。
https://onitroad.com 更多教程
删除旧的 ASM 磁盘
- 最后,删除旧磁盘:
语法
SQL> alter diskgroup [diskgroup name] drop disk [disk name A], [disk name B] rebalance power #N;
例如 :
SQL> alter diskgroup DATA drop disk ASMDISK_OLD_SAN_1, ASMDISK_OLD_SAN_2 rebalance power 11;
- 然后等待重新平衡操作完成:
SQL> select * from v$asm_operation; no rows selected
SQL> select * from gv$asm_operation; no rows selected
在旧磁盘完全从磁盘组中驱逐后, ASM 磁盘组和数据库已迁移到新存储。
一起执行添加和删除操作
- 或者,我们可以在一次操作中执行add disk & drop disk语句,这样只会启动一次rebalance操作,如下所示:
语法
SQL> alter diskgroup [diskgroup name] add disk '[new disk 1>', .., '[new disk N]' drop disk [old disk 1>, .., '[old disk N] rebalance power N;
例如 :
SQL> alter diskgroup DATA add disk 'ORCL:ASMDISK_NEW_SAN_1', 'ORCL:ASMDISK_NEW_SAN_2' drop disk ASMDISK_OLD_SAN_1, ASMDISK_OLD_SAN_2 rebalance power 11;
- 这比单独的命令(添加磁盘和删除磁盘语句)更有效。
然后等待重新平衡操作完成:
SQL> select * from v$asm_operation; no rows selected
SQL> select * from gv$asm_operation; no rows selected
添加新的 ASM 磁盘
- 将新磁盘添加到所需的磁盘组,如下所示:
语法
SQL> alter diskgroup [diskgroup name] add disk '[new disk 1]', '[new disk 2]' rebalance power N;
例如 :
SQL> alter diskgroup DATA add disk 'ORCL:ASMDISK_NEW_SAN_1', 'ORCL:ASMDISK_NEW_SAN_2' rebalance power 11;
- 然后等待重新平衡操作完成:
SQL> select * from v$asm_operation; no rows selected
SQL> select * from gv$asm_operation; no rows selected
创建新的 ASM 磁盘
如果我们需要将与磁盘组关联的当前 ASMLIB 磁盘迁移并替换到新存储,那么我们可以在不停机的情况下执行此操作,因此我们可以执行以下步骤:
备份所有数据库并使备份生效(始终需要保护数据)。
以 root 操作系统用户身份使用“/etc/init.d/oracleasm createdisk”命令在新的存储物理磁盘上创建新的 ASMLIB 设备。
例如:
# /etc/init.d/oracleasm createdisk ASMDISK_NEW_SAN_1 /dev/mapper/mpathbp1 # /etc/init.d/oracleasm createdisk ASMDISK_NEW_SAN_2 /dev/mapper/mpathcp1
- 如下扫描所有其他 RAC 节点上的新 ASMIB 磁盘(作为 root 操作系统用户)。
在独立配置中,在 ASMLIB 磁盘创建期间会隐式扫描磁盘。
# /etc/init.d/oracleasm scandisks
- 确保新的 ASMLIB 磁盘和旧的 ASMLIB 磁盘存在于所有 RAC 集群节点或者独立配置上,如下所示:
# /etc/init.d/oracleasm listdisks ASMDISK_NEW_SAN_1 ASMDISK_NEW_SAN_2 ASMDISK_OLD_SAN_1 ASMDISK_OLD_SAN_2
# /usr/sbin/oracleasm-discover 'ORCL:*' Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so [ASM Library - Generic Linux, version 2.0.4 (KABI_V2)] Discovered disk: ORCL:ASMDISK_NEW_SAN_1 [40017852 blocks (20489140224 bytes), maxio 512] Discovered disk: ORCL:ASMDISK_NEW_SAN_2 [40017852 blocks (20489140224 bytes), maxio 512] Discovered disk: ORCL:ASMDISK_OLD_SAN_1 [40017852 blocks (20489140224 bytes), maxio 512] Discovered disk: ORCL:ASMDISK_OLD_SAN_2 [40017852 blocks (20489140224 bytes), maxio 512]
- 验证 ASM 发现字符串(“ASM_DISKSTRING”)是否正确指向 ASMLIB 设备(在所有 ASM 实例中),如下所示:
$ . oraenv ORACLE_SID = [+ASM1] ? +ASM The Oracle base remains unchanged with value /u01/app/grid [grid@dbaasm ~]$ sqlplus "/as sysasm" SQL*Plus: Release 11.2.0.3.0 Production on Mon Aug 18 18:39:28 2014 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Automatic Storage Management option SQL> show parameter ASM_DISKSTRING NAME TYPE VALUE ------------------ --------- ------------- asm_diskstring string ORCL:*
- 然后确认ASM正在检测新的ASMLIB磁盘和旧的ASMLIB磁盘,如下所示:
SQL> select path from v$asm_disk; PATH ------------------------- ORCL:ASMDISK_NEW_SAN_1 ORCL:ASMDISK_NEW_SAN_2 ORCL:ASMDISK_OLD_SAN_1 ORCL:ASMDISK_OLD_SAN_2
日期:2020-09-17 00:11:42 来源:oir作者:oir