Vous êtes sur la page 1sur 3

Adding / Dropping Disks From a ASM Disk Group

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

Vous aimerez peut-être aussi