Sometimes you may need to multiplex the controlfile in RAC or ASM database.
Connect to database from any node in cluster, & check the controlfile location.
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +REDO/mcudbprd/controlfile/
current.271.924459341
control_management_pack_access string DIAGNOSTIC+TUNING
Or you can check,
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+REDO/mcudbprd/controlfile/current.271.924459341
I need to multiplex the controlfile to + DATA.
Add + DATA to control_files parameter & keep scope=spfile.
alter system set control_files='+REDO/mcudbprd/controlfile/current.271.924459341','+DATA' scope=spfile;
Shutdown RAC database & start database in nomount state.
$ srvctl stop database -d mcudbprd
$ srvctl status database -d mcudbprd
Instance mcudbprd1 is not running on node
Instance mcudbprd2 is not running on node
srvctl start database -d mcudbprd -o nomount
srvctl status database -d mcudbprd
Instance mcudbprd1 is running on node
Instance mcudbprd2 is running on node
Connect to any node & check database status & control_files parameter, +DATA will be added to parameter.
SQL> select name,open_mode from v$database;
select name,open_mode from v$database
*
ERROR at line 1:
ORA-01507: database not mounted
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +REDO/mcudbprd/controlfile/cur
rent.271.924459341, +DATA
control_management_pack_access string DIAGNOSTIC+TUNING
Now connect to RMAN & issue below command, it will create a copy of controlfile to + DATA
restore controlfile from '+REDO/mcudbprd/controlfile/current.271.924459341';
$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Oct 5 18:34:57 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: mcudbprd (not mounted)
RMAN>
RMAN> restore controlfile from '+REDO/mcudbprd/controlfile/current.271.924459341';
Starting restore at 05-OCT-16
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=247 instance=mcudbprd1 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=+REDO/mcudbprd/controlfile/current.271.924459341
output file name=+DATA/mcudbprd/controlfile/current.266.924460567
Finished restore at 05-OCT-16
RMAN> exit
When RMAN restores control file to new location, it updates the new path in spfile.
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +REDO/mcudbprd/controlfile/cur
rent.271.924459341, +DATA/ucmd
bprd/controlfile/current.266.9
24460567
control_management_pack_access string DIAGNOSTIC+TUNING
Stop the database & Start database.
srvctl stop database -d mcudbprd
srvctl start database -d mcudbprd
Once the database is open, check control_files parameter.
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +REDO/mcudbprd/controlfile/cur
rent.271.924459341, +DATA/ucmd
bprd/controlfile/current.266.9
24460567
control_management_pack_access string DIAGNOSTIC+TUNING