Add Remove Disk ASM PDF
Add Remove Disk ASM PDF
by Jeff Hunter, Sr. Database Administrator
Contents
Introduction
Identify Candidate Disks
Add Disks to a Disk Group
Drop Disks from a Disk Group
About the Author
Introduction
This short article provides the steps necessary to add a candidate disk to an already existing disk group on the
Linux platform. It also documents the steps necessary to remove disks from a running disk group.
For the purpose of this document, I already have an existing disk group named TESTDB_DATA1. I am not using the
ASMLib libraries.
Identify Candidate Disks
The current disk group configuration, (TESTDB_DATA1 and candidate disks not assigned to any disk group) has the
following configuration:
$ ORACLE_SID=+ASM; export ORACLE_SID
$ sqlplus "/ as sysdba"
SELECT
NVL(a.name, '[CANDIDATE]') disk_group_name
, b.path disk_file_path
, b.name disk_file_name
, b.failgroup disk_file_fail_group
FROM
v$asm_diskgroup a RIGHT OUTER JOIN v$asm_disk b USING (group_number)
ORDER BY
a.name;
Disk Group Name Path File Name Fail Group
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
TESTDB_DATA1 /dev/raw/raw1 TESTDB_DATA1_0000 CONTROLLER1
/dev/raw/raw2 TESTDB_DATA1_0001 CONTROLLER1
/dev/raw/raw3 TESTDB_DATA1_0002 CONTROLLER2
/dev/raw/raw4 TESTDB_DATA1_0003 CONTROLLER2
[CANDIDATE] /dev/raw/raw5
/dev/raw/raw6
/dev/raw/raw7
In this example, I will be adding two new disks (/dev/raw/raw5 and /dev/raw/raw6) to the current disk group.
Add Disks to a Disk Group
Finally, let's add the two new disks to the disk group. This needs to be done within the ASM instance and
connected as a user with SYSDBA privileges:
$ ORACLE_SID=+ASM; export ORACLE_SID
$ sqlplus "/ as sysdba"
SQL> ALTER DISKGROUP testdb_data1 ADD
2 FAILGROUP controller1 DISK '/dev/raw/raw5'
3 FAILGROUP controller2 DISK '/dev/raw/raw6' REBALANCE POWER 11;
Diskgroup altered.
After submitting the SQL to add the new disks to the disk group, query the dynamic performance view
V$ASM_OPERATION in the ASM instance to check the status of the rebalance operation. The V$ASM_OPERATION view
will return one row for every active Automatic Storage Management long running operation executing in the
Automatic Storage Management instance.
SQL> SELECT group_number, operation, state, power, est_minutes FROM v$asm_operation;
GROUP_NUMBER OPERATION STATE POWER EST_MINUTES
‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐
1 REBAL RUN 11 9
Continue to query this view to monitor the rebalance operation. When this row is gone, the ASM rebalance
operation will be complete.
After adding the new disks, this is a new view of the disk group configuration:
Disk Group Name Path File Name Fail Group
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
TESTDB_DATA1 /dev/raw/raw1 TESTDB_DATA1_0000 CONTROLLER1
/dev/raw/raw2 TESTDB_DATA1_0001 CONTROLLER1
/dev/raw/raw3 TESTDB_DATA1_0002 CONTROLLER2
/dev/raw/raw4 TESTDB_DATA1_0003 CONTROLLER2
/dev/raw/raw5 TESTDB_DATA1_0004 CONTROLLER1
/dev/raw/raw6 TESTDB_DATA1_0005 CONTROLLER2
[CANDIDATE] /dev/raw/raw7
Drop Disks from a Disk Group
Now, let's drop the same two new disks from the disk group. This needs to be done within the ASM instance and
connected as a user with SYSDBA privileges:
$ ORACLE_SID=+ASM; export ORACLE_SID
$ sqlplus "/ as sysdba"
SQL> ALTER DISKGROUP testdb_data1 DROP
2 DISK testdb_data1_0004, testdb_data1_0005 REBALANCE POWER 11;
Diskgroup altered.
Diskgroup altered.
The current disk group configuration, (TESTDB_DATA1 and candidate disks not assigned to any disk group) now
has the following configuration:
Disk Group Name Path File Name Fail Group
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
TESTDB_DATA1 /dev/raw/raw1 TESTDB_DATA1_0000 CONTROLLER1
/dev/raw/raw2 TESTDB_DATA1_0001 CONTROLLER1
/dev/raw/raw3 TESTDB_DATA1_0002 CONTROLLER2
/dev/raw/raw4 TESTDB_DATA1_0003 CONTROLLER2
[CANDIDATE] /dev/raw/raw5
/dev/raw/raw6
/dev/raw/raw7