Remove a disk from ASM diskgroup online

dropDiskPlan small

Story

Recently I have installed a new Oracle 12c database for testing purposes. I have had four 5 GB disks and by mistake I have configured all of them to create +DATA disk group in ASM.
Here is how my case looks like:

select group_number, disk_number, name, total_mb, free_mb, path
from v$asm_disk

 

DataAsmDisks

  

The state is presented on the chart below - four disks, all partially used.

fourDisksUsedChart

 

All of them (asm-disk1, asm-disk2, asm-disk3, asm-disk4) belongs to GROUP_NUMBER=1 which is +DATA ASM diskgroup which can be confirmed by the following query:

select group_number, name, total_mb, free_mb
from v$asm_diskgroup

AsmDataGroup

 

Mission

Then I thought about creating +FRA diskgroup to store recovery data there. As more than a half (13 of 20 GB) of the storage is free (you can see it above - displayed by v$asm_diskgroup view), I decided to take two disks out of +DATA and use them for +FRA.

The plan is to:

  1. Instruct ASM to not store more data on DATA_0002 and DATA_0003.
  2. Move all existing data from DATA_0002 and DATA_0003 to the other two disks.
  3. Remove DATA_0002 and DATA_0003 from +DATA diskgroup.

 dropDiskPlan

Would you like to learn Liquibase? Enroll to my course on Udemy.

Promo code: BEST_COURSE_EVER

liquibase course promo

Execution

To accomplish this mission, I need to reconnect to ASM instance (in my case it is ORACLE_SID=+ASM1) as a privileged user:

$ echo $ORACLE_SID
+ASM1
$ sqlplus / as sysasm
SQL*Plus: Release 12.1.0.1.0 Production on Sat Dec 7 21:44:18 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL>

 

Now, I request ASM to move all data from DATA_0002 and DATA_0003 to other disks in +DATA group and remove those them from the group.

SQL> alter diskgroup DATA drop disk DATA_0002, DATA_0003;
Diskgroup altered.

alter diskgroup <name> drop disk command also allows specifying a speed of the operation - alter diskgroup <name> drop disk <disks names> rebalance power <speed number>. The speed number is a number from 0 to 11 where 0 stops rebalancing and 11 means “full speed”. If not specified a value from ASM_POWER_LIMIT initialization parameter is used.

 

The operation is heavy and may take some time depending on disks speed, workload, speed number used and amount of data to be moved. I monitor a progress by querying v$asm_operation view:

SQL> select group_number, operation, state, est_minutes
from v$asm_operation;
GROUP_NUMBER OPERA STAT EST_MINUTES
------------ ----- ---- -----------
1            REBAL RUN  2
1            REBAL WAIT 0

 

Once the query stops return REBAL rows I confirm completion of dropping the disks by quering v$asm_disk view:

select group_number, disk_number, name, total_mb, free_mb, path, header_status
from v$asm_disk

DataAsmDisksDropped

HEADER_STATUS is FORMER which means that the disks were properly deleted from the diskgroup. You can also notice GROUP_NUMBER=0 so they no longer belongs to +DATA.

The current state can be presented on a chart like below:

twoDisksUsedChart

 

Mission accomplished. Now, I can use them to form +FRA and then to create Fast Recovery Area.

 

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.