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