RMAN Practices - Controlfile restore Scenario
In this article we will be covering Controlfile recovery Scenario in RAC database.
Loss Only One of ControlFile when there are multiplexed copy of Controlfile.
In this scenario we assume that we are not having any AUTOBACKUP and there were 2 controlfile as below. we deleted 1 controlfile intentionally and then restored it using RMAN as below. Current status of Controlfile SQL> show parameter contro NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string +DATA/TNT/CONTROLFILE/current.286.1119111973, +FRA/TNT/CONTRLFILE/current.734.1115903105 SQL> Remove 1 controlfile as below. grid@racsetn1 ~]$ srvctl stop database -d TNT [oracle@racsetn1 ~]$ su - grid [grid@racsetn1 ~]$ asmcmd ASMCMD> cd FRA/TNT/CONTROLFILE/ ASMCMD> rm Current.734.1115903105 ASMCMD> exit [grid@racsetn1 ~]$ logout start database in NOMOUNT on node1 as below. [oracle@racsetn1 ~]$ sqlplus "/as sysdba" Connected to an idle instance. SQL> startup nomount; ORACLE instance started. Total System Global Area 2751463160 bytes Fixed Size 8900344 bytes Variable Size 637534208 bytes Database Buffers 2097152000 bytes Redo Buffers 7876608 bytes SQL> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string +DATA/TNT/CONTROLFILE/current.286.1119111973, +FRA/TNT/CONTROLFILE/current.734.1115903105 Let we restore controlfile from existing controlfile as below. [oracle@racsetn1 ~]$ rman target / connected to target database: TNT (not mounted) RMAN> restore controlfile from '+DATA/TNT/CONTROLFILE/current.286.1119111973'; Starting restore at 26-OCT-22 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=17 instance=TNT1 device type=DISK channel ORA_DISK_1: copied control file copy output file name=+DATA/TNT/CONTROLFILE/current.286.1119111973 output file name=+FRA/TNT/CONTROLFILE/current.734.1119113919 Finished restore at 26-OCT-22 RMAN> exit Recovery Manager complete. [oracle@racsetn1 ~]$ Verify restored File from grid user as below. [oracle@racsetn1 ~]$ su - grid [grid@racsetn1 ~]$ asmcmd ASMCMD> cd +FRA/TNT/CONTROLFILE/ ASMCMD> ls -lrt WARNING:option 'r' is deprecated for 'ls' please use 'reverse' Type Redund Striped Time Sys Name CONTROLFILE UNPROT FINE OCT 26 16:00:00 Y current.734.1119113919 ASMCMD> exit Let we start Database now as below. [oracle@racsetn1 ~]$ sqlplus "/as sysdba" SQL> alter database mount; Database altered. [grid@racsetn1 ~]$ srvctl start database -d TNT Verify if database properly UP. SQL> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string +DATA/TNT/CONTROLFILE/current.286.1119111973, +FRA/TNT/CONTROLFILE/current.734.1119113919 SQL> @name NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE Hence this practice completed now. !!
Loss of ALL CONTROLFILE when AUTOBACKUP is ON .
Check current status of Controlfile as below. SQL> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string +DATA/TNT/CONTROLFILE/current. 286.1119111973, +FRA/TNT/CONTROLFILE/current.734.1115903105 Let we remove all Controlfile as below. [grid@racsetn1 ~]$ srvctl stop database -d TNT [grid@racsetn1 ~]$ asmcmd ASMCMD> cd +DATA/TNT/CONTROLFILE/ ASMCMD> ls current.286.1119115365 ASMCMD> rm current.286.1119115365 ASMCMD> cd +FRA/TNT/CONTROLFILE/ ASMCMD> ls current.734.1119115365 ASMCMD> rm current.734.1119115365 ASMCMD> exit [grid@racsetn1 ~]$ logout At this stage if we try to start DB we will get ERROR as below. [oracle@racsetn1 ~]$ sqlplus "/as sysdba" Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 2751463160 bytes Fixed Size 8900344 bytes Variable Size 637534208 bytes Database Buffers 2097152000 bytes Redo Buffers 7876608 bytes ORA-00205: error in identifying control file, check alert log for more info Let we RESTORE Controlfile from AUTOBACKUP as below. [oracle@racsetn1 ~]$ rman target / connected to target database: TNT (not mounted) RMAN> set DBID=1427195521; executing command: SET DBID RMAN> restore controlfile from AUTOBACKUP; Starting restore at 26-OCT-22 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=269 instance=TNT1 device type=DISK recovery area destination: +FRA database name (or database unique name) used for search: TNT channel ORA_DISK_1: AUTOBACKUP +FRA/TNT/AUTOBACKUP/2022_10_26/s_1119112291.771.1119112293 found in the recovery area channel ORA_DISK_1: looking for AUTOBACKUP on day: 20221026 channel ORA_DISK_1: restoring control file from AUTOBACKUP +FRA/TNT/AUTOBACKUP/2022_10_26/s_1119112291.771.1119112293 channel ORA_DISK_1: control file restore from AUTOBACKUP complete output file name=+DATA/TNT/CONTROLFILE/current.286.1119115455 output file name=+FRA/TNT/CONTROLFILE/current.734.1119115455 Finished restore at 26-OCT-22 RMAN> exit Recovery Manager complete. Let we Mount database and start Recovery as below. [oracle@racsetn1 ~]$ sqlplus "/as sysdba" SQL> alter database mount; Database altered. SQL> exit Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Let we RECOVER database as below [oracle@racsetn1 ~]$ rman target / connected to target database: TNT (DBID=1427195521, not open) RMAN> recover database; Starting recover at 26-OCT-22 Starting implicit crosscheck backup at 26-OCT-22 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 allocated channel: ORA_DISK_2 allocated channel: ORA_DISK_3 Crosschecked 5 objects Crosschecked 5 objects Crosschecked 5 objects Finished implicit crosscheck backup at 26-OCT-22 Starting implicit crosscheck copy at 26-OCT-22 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 Crosschecked 1 objects Finished implicit crosscheck copy at 26-OCT-22 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_1.767.1119113777 File Name: +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.743.1119114991 File Name: +FRA/TNT/AUTOBACKUP/2022_10_26/s_1119112291.771.1119112293 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 starting media recovery archived log for thread 1 with sequence 1 is already on disk as file +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_1.767.1119113777 archived log for thread 1 with sequence 2 is already on disk as file +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.743.1119114991 archived log for thread 2 with sequence 1 is already on disk as file +DATA/TNT/ONLINELOG/group_3.291.1115904155 archived log file name=+FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_1.767.1119113777 thread=1 sequence=1 archived log file name=+DATA/TNT/ONLINELOG/group_3.291.1115904155 thread=2 sequence=1 archived log file name=+FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.743.1119114991 thread=1 sequence=2 Finished recover at 26-OCT-22 RMAN> exit Now we need to use RESETLOG option to open database on node-1 only, [oracle@racsetn1 ~]$ sqlplus "/as sysdba" Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 2751463160 bytes Fixed Size 8900344 bytes Variable Size 637534208 bytes Database Buffers 2097152000 bytes Redo Buffers 7876608 bytes Database mounted. SQL> alter database open; alter database open * ERROR at line 1: ORA-01589: must use RESETLOGS or NORESETLOGS option for database open SQL> alter database open resetlogs; Database altered. SQL> @name NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE SQL> exit Now move to Second node and start database as below. [oracle@racsetn2 ~]$ export ORACLE_SID=TNT2 [oracle@racsetn2 ~]$ sqlplus "/as sysdba" Connected to an idle instance. SQL> STARTUP ORACLE instance started. Total System Global Area 2751463160 bytes Fixed Size 8900344 bytes Variable Size 654311424 bytes Database Buffers 2080374784 bytes Redo Buffers 7876608 bytes Database mounted. Database opened. SQL> exit Check DB status if everything is fine, [oracle@racsetn1 ~]$ sqlplus "/as sysdba" SQL> @name NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE SQL>
Restore CONTROLFILE from Manual Backed Up location (NO AUTOBACKUP).
Let we REST AUTOBACKUP of controlfile as below. RMAN> show all; RMAN configuration parameters for database with db_unique_name TNT are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION ON; CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/ora_home/app/19c/db/dbs/snapcf_TNT1.f'; # default RMAN> configure CONTROLFILE AUTOBACKUP OFF; old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP OFF; new RMAN configuration parameters are successfully stored Let we take backup of controlfile as user defined location as below. RMAN> backup current controlfile format '/ora_home/bkp/TNT/CTRL_%d_%u_%s'; Starting backup at 26-OCT-22 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set channel ORA_DISK_1: starting piece 1 at 26-OCT-22 channel ORA_DISK_1: finished piece 1 at 26-OCT-22 piece handle=/ora_home/bkp/TNT/CTRL_TNT_c31b8no5_387 tag=TAG20221026T175101 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 26-OCT-22 Recovery Manager complete. Start Database in Mount Mode and start recovery as below. [oracle@racsetn1 TNT]$ sqlplus "/as sysdba" SQL> alter database mount; Database altered. SQL> exit [oracle@racsetn1 TNT]$ rman target / connected to target database: TNT (DBID=1427195521, not open) RMAN> recover database; Starting recover at 26-OCT-22 Starting implicit crosscheck backup at 26-OCT-22 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 allocated channel: ORA_DISK_2 allocated channel: ORA_DISK_3 Crosschecked 6 objects Crosschecked 6 objects Crosschecked 7 objects Finished implicit crosscheck backup at 26-OCT-22 Starting implicit crosscheck copy at 26-OCT-22 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 Crosschecked 1 objects Finished implicit crosscheck copy at 26-OCT-22 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.786.1119117163 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 starting media recovery archived log for thread 1 with sequence 2 is already on disk as file +FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.786.1119117163 archived log for thread 2 with sequence 4 is already on disk as file +DATA/TNT/ONLINELOG/group_4.292.1115904165 archived log file name=+FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.786.1119117163 thread=1 sequence=2 archived log file name=+DATA/TNT/ONLINELOG/group_4.292.1115904165 thread=2 sequence=0 creating datafile file number=9 name=+DATA/TNT/DATAFILE/ts_nolog.296.1119117123 archived log file name=+FRA/TNT/ARCHIVELOG/2022_10_26/thread_1_seq_2.786.1119117163 thread=1 sequence=2 archived log file name=+DATA/TNT/ONLINELOG/group_4.292.1115904165 thread=2 sequence=0 Finished recover at 26-OCT-22 RMAN> exit Recovery Manager complete. [oracle@racsetn1 TNT]$ Open database in RESETLOGS as below [oracle@racsetn1 TNT]$ sqlplus "/as sysdba" SQL> alter database open resetlogs; Database altered. SQL> @name NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- TNT READ WRITE PRIMARY MAXIMUM PERFORMANCE SQL> exit Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Open database on Second Node as below [oracle@racsetn2 ~]$ sqlplus "/as sysdba" SQL> startup; ORACLE instance started. Total System Global Area 2751463160 bytes Fixed Size 8900344 bytes Variable Size 654311424 bytes Database Buffers 2080374784 bytes Redo Buffers 7876608 bytes Database mounted. Database opened. SQL>
© 2021 Ace2Oracle. All Rights Reserved | Developed By IBOX444