This document explains how to resize the grid disks in Exadata (to make them larger), when there is free space in the cell disks. The free space can be anywhere on the cell disks. In other words, the grid disks can be built from and extended with the non-contiguous free space.
This document has an example of performing this task on a quarter rack system (two database servers and three storage cells). With an Exadata with more storage cells, the only additional steps would be to resize the grid disks on additional storage cells.
Storage cells in the example are exacell01, exacell02 and exacell03, the disk group is DATA and the new grid disk size is 100000 MB.
Resize grid disks on storage cells
Log in as root to storage cell 1, and run the following command:
# cellcli -e alter griddisk DATA_CD_00_exacell01, DATA_CD_01_exacell01, DATA_CD_02_exacell01, DATA_CD_03_exacell01, DATA_CD_04_exacell01, DATA_CD_05_exacell01, DATA_CD_06_exacell01, DATA_CD_07_exacell01, DATA_CD_08_exacell01, DATA_CD_09_exacell01, DATA_CD_10_exacell01, DATA_CD_11_exacell01 size=100000M;
Log in as root to storage cell 2, and run the following command:
# cellcli -e alter griddisk DATA_CD_00_exacell02, DATA_CD_01_exacell02, DATA_CD_02_exacell02, DATA_CD_03_exacell02, DATA_CD_04_exacell02, DATA_CD_05_exacell02, DATA_CD_06_exacell02, DATA_CD_07_exacell02, DATA_CD_08_exacell02, DATA_CD_09_exacell02, DATA_CD_10_exacell02, DATA_CD_11_exacell02 size=100000M;
Log in as root to storage cell 3, and run the following command:
# cellcli -e alter griddisk DATA_CD_00_exacell03, DATA_CD_01_exacell03, DATA_CD_02_exacell03, DATA_CD_03_exacell03, DATA_CD_04_exacell03, DATA_CD_05_exacell03, DATA_CD_06_exacell03, DATA_CD_07_exacell03, DATA_CD_08_exacell03, DATA_CD_09_exacell03, DATA_CD_10_exacell03, DATA_CD_11_exacell03 size=100000M;
As noted earlier, If you have a larger system, e.g. Exadata half rack with 7 storage cells, resize the grid disks for disk group DATA on all other storage cells.
Resize ASM disks
Log in as the Grid Infrastructure owner to database server 1, and log in to ASM instance 1 as sysasm.
$ sqlplus / as sysasm
Resize all disks in disk group DATA, with the following command:
SQL> ALTER DISKGROUP DATA RESIZE ALL;
Note that there was no need to specify the new disk size, as ASM will get that from the grid disks. If you would like to speed up the rebalance, add REBALANCE POWER 32 to the above command.
The command will trigger the rebalance operation for disk group DATA.
Monitor the rebalance with the following command:
SQL> select * from gv$asm_operation;
Once the command returns "no rows selected", the rebalance would have completed and all disks in disk group DATA should show new size.
Check that the ASM sees the new size, with the following command:
SQL> select name, total_mb from v$asm_disk_stat where name like 'DATA%';
The TOTAL_MB should show 100000M for all disks in disk group DATA.
If there is free space in Exadata cell disks, the disk group resize can be accomplished in two steps - grid disk resize on all storage cells followed by the disk resize in ASM. This requires a single ASM rebalance operation.
I have published this on MOS as Doc ID 1684112.1.