Tuesday, August 6, 2013

How to add ASM disk to a diskgroup

Login as grid user with sysasm privilege to be able to use administration statements.

$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 6 03:54:23 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> col path format a20
SQL>col name format a20
SQL>col failgroup format a15
SQL>set lines 150
SQL>select disk_number,failgroup,create_date,path,name from v$asm_disk where name like 'DATA%';

DISK_NUMBER FAILGROUP       CREATE_DA PATH                 NAME
----------- --------------- --------- -------------------- --------------------
          0 DATA_0000       07-SEP-10 /dev/rhdisk3         DATA_0000
          1 DATA_0001       07-SEP-10 /dev/rhdisk4         DATA_0001
          2 DATA_0002       07-SEP-10 /dev/rhdisk5         DATA_0002
          3 DATA_0003       07-SEP-10 /dev/rhdisk6         DATA_0003
   
4 rows selected.

SQL> alter diskgroup DATA add disk '/dev/rhdisk22' ;

Diskgroup altered.


As you already know '/dev/rhdisk22' must be share the same name on all nodes on your RAC environment.

SQL> col path format a20
SQL>col name format a20
SQL>col failgroup format a15
SQL>set lines 150
SQL>select disk_number,failgroup,create_date,path,name from v$asm_disk  where name like 'DATA%';

DISK_NUMBER FAILGROUP       CREATE_DA PATH                 NAME
----------- --------------- --------- -------------------- --------------------
          0 DATA_0000       07-SEP-10 /dev/rhdisk3         DATA_0000
          1 DATA_0001       07-SEP-10 /dev/rhdisk4         DATA_0001
          2 DATA_0002       07-SEP-10 /dev/rhdisk5         DATA_0002
          3 DATA_0003       07-SEP-10 /dev/rhdisk6         DATA_0003
          4 DATA_0004       06-AUG-13 /dev/rhdisk22        DATA_0004

once disk added oracle will do rebalance operation with other members, we can check that by:

SQL> col OPERATION format a20
SQL>col STATE format a20

SQL>select OPERATION,state from v$asm_operation;

OPERATION            STATE
-------------------- --------------------
REBAL                RUN


check again after a while

SQL>select OPERATION,state from v$asm_operation;

no rows selected