I had the pleasure of being involved in couple of Exadata implementations where Oracle delivered the wrong ASM redundancy type to a customer. The customer expected single mirroring (normal redundancy) and lot more TBs of useable storage than what was delivered. I have a general rule; if you have to do it more than once, you better script it and automate it. Check out the script the I used to migrate an Exadata customer from high redundancy to normal redundancy.

define DG='&1'
set pages 0
set lines 200 trims on feed off  echo off echo off ver off
spool cr_&DG..sql
prompt CREATE DISKGROUP &DG NORMAL REDUNDANCY

set serveroutput on size unlimited

declare
v_failgroup v$asm_disk.failgroup%TYPE;

cursor c1 is
select chr(39)||path||chr(39) path, name
from v$asm_disk
where group_number = (select group_number from v$asm_diskgroup
                      where name=upper('&DG'))
and failgroup=v_failgroup
order by path;

cursor c2 is
select distinct failgroup 
from v$asm_disk
order by failgroup;

cursor c3 is
select allocation_unit_size, compatibility, database_compatibility
from v$asm_diskgroup;
r3 c3%ROWTYPE;

begin
for r2 in c2 loop
v_failgroup := r2.failgroup;
dbms_output.put_line('FAILGROUP '||r2.failgroup||' DISK');

for r1 in c1 loop
if c1%rowcount = 1 then
   dbms_output.put_line(r1.path);
else
   dbms_output.put_line(','||r1.path);
end if;

end loop;

end loop;

open c3; fetch c3 into r3;
dbms_output.put_line('ATTRIBUTE');
dbms_output.put_line(chr(39)||'compatible.asm'||chr(39)||'='||chr(39)||r3.compatibility||chr(39)||',');
dbms_output.put_line(chr(39)||'compatible.rdbms'||chr(39)||'='||chr(39)||r3.database_compatibility||chr(39)||',');
dbms_output.put_line(chr(39)||'au_size'||chr(39)||'='||chr(39)||r3.allocation_unit_size||chr(39)||',');
dbms_output.put_line(chr(39)||'cell.smart_scan_capable'||chr(39)||'='||chr(39)||'TRUE'||chr(39)||';');
close c3;

end;
/
spool off

Here’s a sample of the generated script for the DATA disk group.

CREATE DISKGROUP DATA_EXAD NORMAL REDUNDANCY  
FAILGROUP EXADCEL01 DISK 
'o/10.0.0.3/DATA_EXAD_CD_00_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_01_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_02_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_03_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_04_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_05_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_06_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_07_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_08_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_09_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_10_exadcel01',
'o/10.0.0.3/DATA_EXAD_CD_11_exadcel01'
FAILGROUP EXADCEL02 DISK 
'o/10.0.0.4/DATA_EXAD_CD_00_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_01_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_02_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_03_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_04_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_05_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_06_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_07_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_08_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_09_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_10_exadcel02',
'o/10.0.0.4/DATA_EXAD_CD_11_exadcel02'
FAILGROUP EXADCEL03 DISK 
'o/10.0.0.5/DATA_EXAD_CD_00_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_01_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_02_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_03_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_04_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_05_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_06_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_07_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_08_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_09_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_10_exadcel03',
'o/10.0.0.5/DATA_EXAD_CD_11_exadcel03' 
ATTRIBUTE 
  'compatible.asm'='11.2.0.4',
  'compatible.rdbms'='11.2.0.4',
  'au_size'='4M',
  'cell.smart_scan_capable'='TRUE';