Manual Method:
================
1.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string +DATA/racdb/controlfile/current.260.979677429
[oracle@rac1 ~]$ srvctl stop database -d racdb
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED NORMAL N 512 4096 1048576 30717 27208 1171 13018 0 N DATA/
MOUNTED NORMAL N 512 4096 1048576 3069 2143 309 917 0 N OCR/
cd OCR
mkdir racdb
cd racdb
mkdir controlfile
ASMCMD> pwd
+DATA/RACDB/CONTROLFILE
ASMCMD> cp +DATA/RACDB/CONTROLFILE/Current.260.979677429 +OCR/racdb/controlfile/current
copying +DATA/RACDB/CONTROLFILE/Current.260.979677429 -> +OCR/racdb/controlfile/current
ASMCMD> cd +OCR/racdb/controlfile/
ASMCMD> ls -l
Type Redund Striped Time Sys Name
N current => +OCR/ASM/CONTROLFILE/current.256.1144794611
--asm_alert.log
Sun Aug 13 22:27:42 2023
SQL> /* ASMCMD */alter diskgroup /*ASMCMD*/ "OCR" add directory '+OCR/racdb'
SUCCESS: /* ASMCMD */alter diskgroup /*ASMCMD*/ "OCR" add directory '+OCR/racdb'
Sun Aug 13 22:27:56 2023
SQL> /* ASMCMD */alter diskgroup /*ASMCMD*/ "OCR" add directory '+OCR/racdb/controlfile'
SUCCESS: /* ASMCMD */alter diskgroup /*ASMCMD*/ "OCR" add directory '+OCR/racdb/controlfile'
--Output
ASMCMD> pwd
+OCR/racdb/controlfile
ASMCMD> ls -l
Type Redund Striped Time Sys Name
N current => +OCR/ASM/CONTROLFILE/current.256.1144794611
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.
[oracle@rac1 ~]$ srvctl start database -d racdb -o nomount
show controlfile
alter system set control_files='+DATA/racdb/controlfile/current.260.979677429','+OCR/racdb/controlfile/current' scope=spfile sid='*';
srvctl stop database -d racdb
[oracle@rac1 ~]$ srvctl start database -d racdb
[oracle@rac1 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node rac1
Instance racdb2 is running on node rac2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string +DATA/racdb/controlfile/current.260.979677429, +OCR/racdb/controlfile/current
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4. clean controlfile from old DG if you do moving.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===============================
RMAN CONTROLFILE Multiplexing:
===============================
1. Identify the location of the current controlfile:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/racdb/controlfile/current.260.979677429
2. Shutdown the database and start the instance:
SQL> shutdown normal
SQL> startup nomount
3. Use RMAN to duplicate the controlfile:
$ rman nocatalog
RMAN>connect target
RMAN>restore controlfile to '<DISKGROUP_NAME>' from '<OLD_PATH>';
RMAN> restore controlfile to '+OCR' from '+DATA/racdb/controlfile/current.260.979677429';
4. On the ASM instance, identify the name of the controlfile:
Using ASMCMD:
$ asmcmd
ASMCMD> cd OCR
ASMCMD> find -t controlfile . *
Changing the current directory to the diskgroup where the controlfile was created will speed the search.
Output:
ASMCMD> find -t controlfile . *
WARNING:option 't' is deprecated for 'find'
please use 'type'
+OCR/RACDB/CONTROLFILE/current.256.1144796825
5. On the database side:
##OPTIONAL STEP spfile and init file manual changes.
* Modify init.ora or spfile, adding the new path to parameter control_files.
* if using init<SID>.ora, just modify the control_files parameter and restart the database.
* If using spfile,
1) startup nomount the database instance
2) alter system set control_files='+DG1/P10R2/CONTROLFILE/backup.308.577785757','/oradata2/102b/oradata/P10R2/control01.ctl' scope=spfile;
For RAC instance:
alter system set control_files='+DATA/racdb/controlfile/current.260.979677429','+OCR/RACDB/CONTROLFILE/current.256.1144796825' scope=spfile sid='*';
3) shutdown immediate
* start the instance.
Verify that new control file has been recognized. If the new controlfile was not used, the complete procedure needs to be repeated.
6.
[oracle@rac1 ~]$ srvctl start database -d racdb
[oracle@rac1 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node rac1
Instance racdb2 is running on node rac2