Skip to content

Steps for adding new disk in asm

1. take new raw device name from your Unix team (like /dev/rdisk/disk20)
2. make sure that you get its ownership change to oracle:dba
3. Add the new device name in asm_diskstring parameter dynamically as like below statement; in this statement only /dev/rdisk/disk20 disk is being added, all other existed previously:

alter system set asm_diskstring='/dev/rdisk/disk4','/dev/rdisk/disk6','/dev/rdisk/disk10','/dev/rdisk/disk12','/dev/rdisk/disk14','/dev/rdisk/disk16','/dev/rdisk/disk18','/dev/rdisk/disk20';

4. To verify, that new disk has been detected by ASM, you can check the value of column HEADER_STATUS from V$ASM_DISK,
it will show CANDIDATE here(Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement).

SQL> select GROUP_NUMBER,NAME,state,HEADER_STATUS,PATH from v$asm_disk;

GROUP_NUMBER NAME STATE HEADER_STATU PATH
------------ ------------------------------ -------- ------------ ------------------------------
0 NORMAL CANDIDATE /dev/rdisk/disk20
1 DATA_0000 NORMAL MEMBER /dev/rdisk/disk4
1 DATA_0001 NORMAL MEMBER /dev/rdisk/disk6
2 REDO_0000 NORMAL MEMBER /dev/rdisk/disk10
2 REDO_0001 NORMAL MEMBER /dev/rdisk/disk12
2 REDO_0002 NORMAL MEMBER /dev/rdisk/disk14
2 REDO_0003 NORMAL MEMBER /dev/rdisk/disk16
2 REDO_0004 NORMAL MEMBER /dev/rdisk/disk18

8 rows selected.

5. Add the disk to diskgroup :

ALTER DISKGROUP DATA ADD DISK '/dev/rdisk/disk20' REBALANCE POWER 1;

6. Again query v$asm_disk to verify that disk has been added.

SQL> select GROUP_NUMBER,NAME,state,HEADER_STATUS,PATH from v$asm_disk;

GROUP_NUMBER NAME STATE HEADER_STATU PATH
------------ ------------------------------ -------- ------------ ------------------------------
1 DATA_0000 NORMAL MEMBER /dev/rdisk/disk4
1 DATA_0001 NORMAL MEMBER /dev/rdisk/disk6
2 REDO_0000 NORMAL MEMBER /dev/rdisk/disk10
2 REDO_0001 NORMAL MEMBER /dev/rdisk/disk12
2 REDO_0002 NORMAL MEMBER /dev/rdisk/disk14
2 REDO_0003 NORMAL MEMBER /dev/rdisk/disk16
2 REDO_0004 NORMAL MEMBER /dev/rdisk/disk18
1 DATA_0002 NORMAL MEMBER /dev/rdisk/disk20

8 rows selected.

SQL> select GROUP_NUMBER,NAME,state,HEADER_STATUS,PATH,total_mb,free_mb from v$asm_disk;

GROUP_NUMBER NAME STATE HEADER_STATU PATH TOTAL_MB FREE_MB
------------ ------------------------------ -------- ------------ ------------------------------ ---------- ----------
1 DATA_0000 NORMAL MEMBER /dev/rdisk/disk4 157184 2766
1 DATA_0001 NORMAL MEMBER /dev/rdisk/disk6 157184 2756
2 REDO_0000 NORMAL MEMBER /dev/rdisk/disk10 768 241
2 REDO_0001 NORMAL MEMBER /dev/rdisk/disk12 768 243
2 REDO_0002 NORMAL MEMBER /dev/rdisk/disk14 768 248
2 REDO_0003 NORMAL MEMBER /dev/rdisk/disk16 768 245
2 REDO_0004 NORMAL MEMBER /dev/rdisk/disk18 768 247
1 DATA_0002 NORMAL MEMBER /dev/rdisk/disk20 157184 154356

8 rows selected.

7. Free space added is now being reflected in v$asm_diskgroup:

SQL> select NAME,TOTAL_MB,FREE_MB from v$asm_diskgroup;

NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
DATA 471552 159878
REDO 3840 1224