另外,如果删除磁盘组的磁盘,那么该磁盘组将故障磁盘的数据进行再次平衡,这时要保证磁盘空间足以容纳故障磁盘的数据进行镜像,否则会失败。至此可以通过添加磁盘和删除磁盘both的形式,保证磁盘组有足够的空间完成数据的rebalance。
eg:
SQL> r 1 SELECT A.NAME G_NAME, B.NAME D_NAME,B.OS_MB,B.TOTAL_MB,B.FREE_MB,B.STATE, FAILGROUP, B.FAILGROUP_TYPE, PATH 2 FROM V$ASM_DISKGROUP A, V$ASM_DISK B 3 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER 4* AND B.NAME LIKE 'DATAGROUP3%' G_NAME D_NAME OS_MB TOTAL_MB FREE_MB STATE FAILGROUP FAILGRO PATH --------------- ------------------------- ---------- ---------- ---------- -------- ------------------------------ ------- ---------------------------------------- DATAGROUP3 DATAGROUP3_DISK7 1019 1019 966 NORMAL FAILGROUP_1 REGULAR /dev/oracleasm/disks/ASMDISK7 DATAGROUP3 DATAGROUP3_DISK10 1019 1019 966 NORMAL FAILGROUP_3 REGULAR /dev/oracleasm/disks/ASMDISK10 SQL> alter diskgroup datagroup3 drop disk datagroup3_disk10 add failgroup failgroup_2 disk '/dev/oracleasm/disks/ASMDISK8'; Diskgroup altered. SQL> SELECT A.NAME G_NAME, B.NAME D_NAME,B.OS_MB,B.TOTAL_MB,B.FREE_MB,B.STATE, FAILGROUP, B.FAILGROUP_TYPE, PATH 2 FROM V$ASM_DISKGROUP A, V$ASM_DISK B 3 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER 4 AND B.NAME LIKE 'DATAGROUP3%'; G_NAME D_NAME OS_MB TOTAL_MB FREE_MB STATE FAILGROUP FAILGRO PATH --------------- ------------------------- ---------- ---------- ---------- -------- ------------------------------ ------- ---------------------------------------- DATAGROUP3 DATAGROUP3_0001 1019 1019 966 NORMAL FAILGROUP_2 REGULAR /dev/oracleasm/disks/ASMDISK8 DATAGROUP3 DATAGROUP3_DISK7 1019 1019 966 NORMAL FAILGROUP_1 REGULAR /dev/oracleasm/disks/ASMDISK7 SQL>
If you specify the FORCE clause for the drop operation, the disk is dropped even if Oracle ASM cannot read or write to the disk. You cannot use the FORCE flag when dropping a disk from an external redundancy disk group.
Caution:
(五)向磁盘组中添加磁盘和故障组
当向现有的磁盘组添加磁盘的时候也是在线的rebalance数据,可以通过v$asm_operation视图查看进度:
eg:
SQL> SELECT A.NAME G_NAME, B.NAME D_NAME,B.OS_MB,B.TOTAL_MB,B.FREE_MB,B.STATE, FAILGROUP, B.FAILGROUP_TYPE, PATH 2 FROM V$ASM_DISKGROUP A, V$ASM_DISK B 3 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER 4 AND B.NAME LIKE 'DATAGROUP3%'; G_NAME D_NAME OS_MB TOTAL_MB FR