- Introduction
- Import and backup catalog
- Stop the database and edit pfile
- Restore the controlfile
- Restore the database
- Recover the database
- Create spfile from pfile
- Shutdown and startup the database
Introduction
In this article, We shall see a step by step Restore of a RAC database from tape backup using RMAN tool. Oracle Secure Backup (OSB) supplies reliable data protection through file system backup to tape.
The Oracle Secure Backup SBT interface enables you to use Recovery Manager (RMAN) to back up Oracle databases. All major tape drives and tape libraries in SAN, Gigabit Ethernet, and SCSI environments are supported.
Import and backup catalog
First enter the tape that holds the backup data to be restored from into the OSB tape server machine.
Then log in to the OSB client ,in our case, 10.50.11.33 using named user credential and then Go to Manage menu section and Navigate to Manage → Libraries → select Libraries → select inventory from library commands →click Apply
And then click OK as shown below.
Check the available volumes
Select List Volumes → Check if the volume is available in the main slot or not. (Magazine).
If the volume is not available → Move volume from mail slot to any vacant main slot (Magazine).
Navigate to Manage → Libraries → select Libraries → select Move Volume → enter Element spec (element_spec) number and Element spec (element_spec) for main slot → Apply
And then click OK as shown below.
If the volume id is not visible or barcode not shown choose the identify volume command from library commands and choose the drive that contain the volume →click Apply → click Ok.
If the volume id is not visible or barcode not shown choose the Inventory(Library |Drive)command from library commands and choose the drive that contain the volume →click Apply → click Ok.
Catalog import
After the volume is available and the volume id is visible we can proceed to Manage → Catalog Imports
and then Enter the Barcode or the Volume ID of the tape.
And then click Go.
Monitor ‘Catalog Import’ progress
To monitor the catalog import progress Go to Manage → jobs → select the required from view option and click Apply.
Below it shows the catalog import job after completed.
After catalog import is completed, you may start the file system restore (copy backup file from tape to disk).
Backup Catalog
Go to Restore → Backup Catalog from Data Selector, tick on Latest or choose the date
Under Browse Options:
Enter Host name where the backup to tape copy (through osb) is taken from.
Under ‘Browse Host’ click on the _ link on the top.
From the links on the top, check the one containing the link of the backup’s directory (In our case: Backup_SSD/
Choose the day containing the backup (Example:Monday):
Choose the date of the backup (Example: 22082022) and choose the host and then click on ‘Add’ button.
Enter the directory of the backup under the Alternate path: /mnt/Monday/22082022 and under the host enter the destination of the server which the backup is getting copied to .
Stop the database and edit pfile
Stop the RAC database with the following command:
[oracle@uatserver$] srvctl stop database –d UATDB
Edit the pfile parameter file:
[oracle@uatserver$] nano pfile.ora
Edit the following lines in the pfile and comment all lines referring to the second instance, instance 2. And also set cluster_database initialization parameter to False.
#*.cluster_database_instances=2
*.cluster_database=false
#wfcprod2.undo_tablespace='UNDOTBS2'
#wfcprod2.thread=2
Startup database in restrict mode
SQL>startup mount exclusive restrict pfile='/export/home/oracle/pfile.ora';
We need to add the ‘exclusive’ keyword for RAC. If it is not started due to memory problem (out of memory), edit the pfile to lower the sga max and sga target.
Drop the database
SQL> drop database; //if you want to restore the database from scratch (and if you don’t have enough space)
Startup nomount
SQL>startup nomount pfile='/export/home/oracle/pfile.ora';
Then Copy the path of the full backup’s directory, in our case , /mnt/Thursday/11082022. And check the size of the +DATA and +FRA to know if there is enough space for backup.
oracle@uatserver:~$ su - grid Password: Oracle Corporation SunOS 5.11 11.3 September 2015 grid@uatserver:~$ asmcmd 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 EXTERN N 512 4096 1048576 6289446 1205146 0 1205146 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 511591 184953 0 184953 0 Y FRA/ ASMCMD>
And Give permission to the backup folder which contains the backup:
login as: sol Using keyboard-interactive authentication. Password: Last login: Wed Dec 7 14:44:17 2022 from 10.195.45.17 Oracle Corporation SunOS 5.11 11.3 September 2015 sol@uatserver:~$ su - root Password: Oracle Corporation SunOS 5.11 11.3 September 2015 You have new mail. root@uatserver:/# cd /mnt/Monday/22082022 root@uatserver:/mnt/Monday/22082022# chmod 777 *
Restore the controlfile
oracle@uatserver:~$ rman target / Recovery Manager: Release 12.1.0.2.0 - Production on Wed Dec 7 15:11:53 2022 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: UATDB (DBID=98255031) RMAN> restore controlfile from '/mnt/Monday/22082022/22_CTLFILE'; Starting restore at 07-DEC-12 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=34 instance=primdb1 device type=DISK channel ORA_DISK_1: copied control file copy output file name=+DATA/UATDB/CONTROLFILE/current.256.1108026843 Finished restore at 07-DEC-12
Then open the pfile and edit the line of the control file with the current one you copied and save it.
*.control_files='+DATA/UATDB/CONTROLFILE/current.256.1108026843’
And then run the following commands sequentially:
RMAN> alter database mount; RMAN> catalog start with '/mnt/Monday/22082022'; RMAN> crosscheck backup; RMAN>delete expired backup; RMAN>crosscheck archivelog all; RMAN> delete expired archivelog all; RMAN>list backup summary;
Restore the database
We can restore the database either using the ‘restore database’ command or using the restore shell script:
RMAN> restore database;
OR use restore shell script(restore.sh) and the restore.sh file contains the following lines of code:
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1/ export ORACLE_SID=UATDB /u01/app/oracle/product/12.1.0/dbhome_1/bin/rman@'/export/home/oracle/restore.cmd;’
And the restore.cmd contains the following lines of code:
connect target / run { restore database; }
And finally we will run restore.sh script command:
[oracle@UATserver~] nohup ./restore.sh &
Recover the database
RMAN> recover database; Starting recover at 05-DEC-22 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 using channel ORA_DISK_4 using channel ORA_DISK_5 using channel ORA_DISK_6 using channel ORA_DISK_7 using channel ORA_DISK_8 starting media recovery archived log for thread 1 with sequence 4531 is already on disk as file +FRA/WFCPROD/ARCHIVELOG/2022_12_05/thread_1_seq_4531.540.1122626343 channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=4530 channel ORA_DISK_1: reading from backup piece /mnt/Monday/22082022/22_FULL_BACKUP_pe1dr1r4_1_1_112181437_22082022 channel ORA_DISK_1: piece handle=/mnt/Monday/22082022/22_FULL_BACKUP_pe1dr1r4_1_1_1121814372_22082022 tag=TAG20221126T230246 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:11:55 archived log file name=+FRA/UATDB/ARCHIVELOG/2022_12_05/thread_1_seq_4530.408.1122626555 thread=1 sequence=4530 channel default: deleting archived log(s) archived log file name=+FRA/UATDB/ARCHIVELOG/2022_12_07/thread_1_seq_4530.408.1122626555 RECID=127915 STAMP=1122627260 archived log file name=+FRA/UATDB/ARCHIVELOG/2022_12_07/thread_1_seq_4531.540.1122626343 thread=1 sequence=4531 unable to find archived log archived log thread=1 sequence=4532 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 12/07/2022 08:55:19 RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 4532 and starting SCN of 135221823820 RMAN> alter database open resetlogs; Statement processed RMAN> select status from v$instance; STATUS ------------ OPEN RMAN>
If the listener is started and instance is not ready (unknown) then
SQL> alter system register
And then Edit the pfile and uncomment the previously commented lines and also set the value of ‘cluster_database ‘ parameter to True.
*.cluster_database_instances=2 *.cluster_database=true UATDB2.undo_tablespace='UNDOTBS2' UATDB2.thread=2 UATDB2.instance_number=2
Create spfile from pfile
oracle@UATserver:~$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 7 16:19:20 2022 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> Create spfile from pfile=’/export/home/oracle/pfile.ora’; created.
Shutdown and startup the database
SQL>shut immediate;
Start both instances of the database:
[oracle@uatserver~] srvctl start database –d UATDB
Stop both instances of the database to check if cluster is working;
[oracle@uatserver~] srvctl stop database –d UATDB
Check if both database instances are down:
oracle@uatserver:~$ srvctl status database -d UATDB Instance UATDB1 is not running on node uatserver1 Instance UATDB2 is not running on node uatserver2).
Start both instances of the database:
[oracle@uatserver~] srvctl start database –d UATDB
And finally check the status the database:
oracle@uatserver:~$ srvctl status database -d UATDB Instance UATDB1 is running on node uatserver1 Instance UATDB2 is running on node uatserver2).