USING RMAN RESTORE AND RECOVERY PROCEDURE OF PRODUCTION DATABASE BACKUP ON TEST SERVERS
As part of disaster recovery exercise or to test the validity of a RMAN backup, a full restore and recovery of databases can be performed on scratch or test servers utilising the production RMAN backups which have been restored from the tape backups on these test or scratch servers.
This note will illustrate the above procedure by detailing the steps required to restore the backup of a production database (prod1) on a test server linux01 .
The following assumptions are made in this note:
· The RMAN backups have been restored from tape backups to the same backup location on the test server as the production server where the backup was originally taken
· The identical directory structure as is present on production has been created on the test server. This will apply to not only the location of the database files (data, control files, redo log files), but also to the bdump,cdump, udump and adump locations.
· Controlfile autobackup has been enabled. This is important.
Overview
· Restore the spfile from the autobackup
· Restore the controlfile from the autobackup
· Restore the data files
· Recover by applying archived redo log files
· Open the database with resetlogs
Restore the SPFILE
[oracle@linux01 prod1]$ rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Thu Jun 24 13:23:58 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database (not started)
RMAN> set dbid=4266928631
executing command: SET DBID
RMAN> startup force nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/dbs/initprod1.ora'
starting Oracle instance without parameter file for retrival of spfile
Oracle instance started
Total System Global Area 159383552 bytes
Fixed Size 2039056 bytes
Variable Size 67109616 bytes
Database Buffers 83886080 bytes
Redo Buffers 6348800 bytes
RMAN> run
2> {SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/backup/prod1/%F';
3> restore spfile from autobackup;
4> }
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
Starting restore at 24-JUN-10
using channel ORA_DISK_1
channel ORA_DISK_1: looking for autobackup on day: 20100624
channel ORA_DISK_1: looking for autobackup on day: 20100623
channel ORA_DISK_1: looking for autobackup on day: 20100622
channel ORA_DISK_1: autobackup found: /u02/backup/prod1/c-4266928631-20100622-00
channel ORA_DISK_1: SPFILE restore from autobackup complete
Finished restore at 24-JUN-10
RMAN> shutdown immediate;
database closed
database dismounted
Oracle instance shut down
Restore the Control File
In this case, the instance is now being started with the restored spfile. We can create a pfile as well from this spfile is so required.
RMAN> startup nomount
connected to target database (not started)
Oracle instance started
Total System Global Area 3154116608 bytes
Fixed Size 2043904 bytes
Variable Size 1879052288 bytes
Database Buffers 1258291200 bytes
Redo Buffers 14729216 bytes
RMAN> set dbid=4266928631
executing command: SET DBID
RMAN> run
2> {SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/backup/prod1/%F';
3> restore controlfile from autobackup;
4> }
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
using target database control file instead of recovery catalog
Starting restore at 24-JUN-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=541 devtype=DISK
recovery area destination: /u02/flash_recovery_area
database name (or database unique name) used for search: PROD1
channel ORA_DISK_1: no autobackups found in the recovery area
channel ORA_DISK_1: looking for autobackup on day: 20100624
channel ORA_DISK_1: looking for autobackup on day: 20100623
channel ORA_DISK_1: looking for autobackup on day: 20100622
channel ORA_DISK_1: autobackup found: /u02/backup/prod1/c-4266928631-20100622-00
channel ORA_DISK_1: control file restore from autobackup complete
output filename=/u03/oradata/prod1/control1.ctl
output filename=/u04/oradata/prod1/control2.ctl
output filename=/u05/oradata/prod1/control3.ctl
Finished restore at 24-JUN-10
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
Restore the database
RMAN> restore database;
Starting restore at 24-JUN-10
Starting implicit crosscheck backup at 24-JUN-10
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=541 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=540 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=538 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=537 devtype=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: sid=536 devtype=DISK
allocated channel: ORA_DISK_6
channel ORA_DISK_6: sid=535 devtype=DISK
Crosschecked 44 objects
Finished implicit crosscheck backup at 24-JUN-10
Starting implicit crosscheck copy at 24-JUN-10
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
Finished implicit crosscheck copy at 24-JUN-10
searching for all files in the recovery area
cataloging files...
no files cataloged
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
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00007 to /u03/oradata/prod1/system02.dbf
restoring datafile 00009 to /u03/oradata/prod1/glassfishjms_data01.dbf
restoring datafile 00010 to /u03/oradata/prod1/mciw_data01.dbf
channel ORA_DISK_1: reading from backup piece /u02/backup/prod1/hqlgt5hp_1_1
channel ORA_DISK_2: starting datafile backupset restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
restoring datafile 00004 to /u03/oradata/prod1/jira.dbf
restoring datafile 00005 to /u03/oradata/prod1/users01.dbf
restoring datafile 00018 to /u03/oradata/prod1/mcollage_lob01.dbf
channel ORA_DISK_2: reading from backup piece /u02/backup/prod1/holgt5ho_1_1
channel ORA_DISK_3: starting datafile backupset restore
channel ORA_DISK_3: specifying datafile(s) to restore from backup set
restoring datafile 00003 to /u03/oradata/prod1/sysaux01.dbf
...
...
channel ORA_DISK_2: restored backup piece 1
piece handle=/u02/backup/prod1/hplgt5ho_1_1 tag=TAG20100622T200404
channel ORA_DISK_2: restore complete, elapsed time: 00:27:35
channel ORA_DISK_1: restored backup piece 1
piece handle=/u02/backup/prod1/holgt5ho_1_1 tag=TAG20100622T200404
channel ORA_DISK_1: restore complete, elapsed time: 00:49:12
Finished restore at 24-JUN-10
Recover the database
The recovery will fail at a point where it cannot restore any more archived redo log files.
In this case the last archived log file which has been backed up is sequence 613.
This information can be obtained by issuing a LIST BACKUP OF ARCHIVELOG ALL command.
So RMAN will fail when it tries to apply sequence 614 ….
RMAN> recover database
Starting recover at 24-JUN-10
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
starting media recovery
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=613
channel ORA_DISK_1: reading from backup piece /u02/backup/prod1/hulgt6bo_1_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/u02/backup/prod1/hulgt6bo_1_1 tag=TAG20100622T201759
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archive log filename=/u02/flash_recovery_area/PROD1/archivelog/2010_06_24/o1_mf_1_613_6260ob01_.arc thread=1 sequence=613
channel default: deleting archive log(s)
archive log filename=/u02/flash_recovery_area/PROD1/archivelog/2010_06_24/o1_mf_1_613_6260ob01_.arc recid=1224 stamp=722530858
unable to find archive log
archive log thread=1 sequence=614
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 06/24/2010 15:01:03
RMAN-06054: media recovery requesting unknown log: thread 1 seq 614 lowscn 39895194
Open the database with RESETLOGS
[oracle@linux01 PROD1]$ rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Thu Jun 24 15:04:48 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: PROD1 (DBID=4266928631, not open)
RMAN> sql 'alter database open resetlogs';
using target database control file instead of recovery catalog
sql statement: alter database open resetlogs
RMAN>
Comments
Post a Comment