1) Backup all your databases and valid the backup (always required to protect your data).
2) Add the new path (new disks from the new storage) to your asm_diskstring to be recognized by ASM:
Example:
SQL> alter system set asm_diskstring = '/dev/oracleasm*' , '/dev/oracleasmdisk*';
Where: '/dev/oracleasm*' are the current disks.
Where: '/dev/oracleasmdisk*' are the new disks.
Before you add the disk(s) to your production diskgroup, validate whether the candidate disk(s) is/are in good shape and can be accessed from each node (without harm the existing production diskgroups)
Before adding the Disk to exiting Disk Group, Check the ASM disks details via below query.
The new disk status must be 'Candidate' to PROVISIONED
select DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,
PATH FROM V$ASM_DISK;
Add New ASM Disk 'DATA2' to the Existing Diskgroup 'DATA'
alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA2' rebalance power 20;
Wait for re-balance operation to complete using below Query, it should return Zero rows once rebalace is completed
Select operation, state, est_work, est_minutes from v$asm_operation;
Once re-balance operation is completed, check the disk details using below query,
the New disk status must be MEMBER
select a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,
b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
order by b.group_number,b.name;
Drop the old ASM Disk 'DATA1' from the existing Disk Group 'DATA'
alter diskgroup DATA drop disk 'DATA1' rebalance power 20;
Wait for re-balance operation to complete using below Query, it should return Zero rows once rebalace is completed
Select operation, state, est_work, est_minutes from v$asm_operation;
Once re-balance operation is completed, check the disk details via below query and you must see DATA1 disk marked as FORMER
select a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,
b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
order by b.group_number,b.name;
Migration Can be done online, Howeverer only removal of disk from OS level need reboot the database.
Reference Oracle Document ID:
Exact Steps To Migrate ASM Diskgroups To Another SAN/Disk-Array/DAS/etc Without Downtime. (Doc ID 837308.1)
How To Add a New Disk(s) to An Existing Diskgroup on RAC Cluster or Standalone ASM Configuration (Best Practices). (Doc ID 557348.1)
Move OCR , Vote File , ASM SPILE to new Diskgroup (Doc ID 1638177.1)