when database open
1, make sure asm diskgroup is avaliable
Select name,total_mb,free_mb from v$asm_diskgroup where state='CONNECTED';
2, check current controlfile and using spfile
show parameter control_files
show parameter pfile
3, add new controlfile to spfile
alter system set control_files='<original file>','<asm diskgroup name where new
control file will stored>' scope=spfile sid='*';
for example:
alter system set
control_files='+OLD/ANBOB/controlfile/current.258.798205861','+NEW_DATA'
scope=spfile sid='*';
4, restart oracle database instance, shutdown and startup in mount (not ASM
instance)
shutdown immediate
stratup nomount
5, Dumplicate controlfile to new path in spfile using rman
rman target /
rman> restore controlfile from '<original file full name>' ; exmaple:
'+SYSTEM/ANBOB/controlfile/current.258.798205861'
Note: that the command prints the name of the new created file in new ASM
diskgroup(my case is +NEW_DATA)
6, Modify the control_file parameter with the complete path of the new file
alter system set control_files='+OLD/ANBOB/controlfile/current.258.798205861','<
full name of the new controlfile generated in the previous step >' scope=spfile
sid='*';
like this "+NEW_DATA/ANBOB/controlfile/current.258.798205861"
7, restart instance and verify controlfile
shutdown immediate
startup
show parameter control
Summary:
Of course, you can use create a directory and copy confile using
dbms_file_transfer.copy_file too. or using rman COPY CURRENT CONTROLFILE TO '';