Converting Oracle Database ASM storage groups redundancy from HIGH to NORMAL
Last year one of our DBA's came to us and said "We need to delete some databases, we're running out of space on the Exadata", to which we replied is there another option? It turns out there was. By default the Oracle ASM storage management software on Exadata uses HIGH redundancy which means triple mirroring or up to 3 disk failures. In development we don't necessarily need this level of protection so we investigated switching to NORMAL redundancy which means double mirroring or up to 2 disk failures and gives us some additional capacity. The catch..... you cannot directly convert. You need to create a new ASM storage group, add disks to it and then migrate the databases from the old to new storage group. Additionally, we had no available disks. However... there was a way to make this all happen.
ASM allows you to live remove disks from existing disk groups as long as there is enough space on the other disks to handle the capacity, so we...
- Added some temporary NAS storage to the Exadata.
- Moved a few databases on to the NAS storage until we had enough free space on the original storage group to drop a disk from each ASM failgroup.
- Dropped 3 disks from the old ASM diskgroup(one from each cell/failgroup)
alter diskgroup DATA drop disk DATA_CD_05_CELADM01;
alter diskgroup DATA drop disk DATA_CD_05_CELADM02;
alter diskgroup DATA drop disk DATA_CD_05_CELADM03;
#Watch and wait until operation completes:
select * from v$asm_operation;
- Created a new ASM disk group with NORMAL redundancy from the dropped disks.
- Used RMAN to backup and restore the databases from the NAS/Old ASM disk group.
- Once we had enough free space again on the Old ASM disk group, we dropped more disks and added them to the new ASM disk group.
ALTER DISKGROUP DATA01 ADD DISK 'o/*/DATA_CD_04_celadm01';
- Repeat steps 5-6 until complete.
- CREATE DISKGROUP DATA01 NORMAL REDUNDANCY
- ATTRIBUTE 'compatible.rdbms' = '188.8.131.52',
- 'content.type' = 'data',
- 'compatible.asm' = '184.108.40.206',
- 'au_size' = '4M',
- 'cell.smart_scan_capable' = 'TRUE';