This document will detail the steps to restore a database on a new host using RMAN. For this demonstration we will be using Oracle Database 11gR2 on Linux and disk based backup.
One of the first things we want to do is get the Database ID (DBID
) from the database in which we will be restoring its backup. You can find the DBID
by connecting to the database with RMAN as shown below.
[oracle@ora1 ~]$ rman Recovery Manager: Release 11.2.0.1.0 - Production on Tue Apr 27 09:40:34 2010 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. RMAN> connect target / connected to target database: ORCL (DBID=1239150297) RMAN>
If you are unable to connect to the database you can also find the DBID
by inspecting the file name of the control file autobackup. For example, c-1239150297-20100427-00
, is a control file autobackup. The first group of numbers appearing after the c-
, 123915029
, is the DBID
.
When we restore the database we are not going to have the active redo logs from the original database so we want to stop the recovery at the last SCN
in the archive logs. We can find the last SCN
by querying V$ARCHIVED_LOG
.
SQL> select max(next_change#) 2 from v$archived_log 3 where archived = 'YES' 4 group by thread#; MAX(NEXT_CHANGE#) ----------------- 1375117 SQL>
Here we see that the archive logs contain log information up to SCN
1375117. That is our stopping SCN
. We can also find the last SCN
in our archive logs through RMAN using LIST BACKUP OF ARCHIVELOG ALL
.
RMAN> list backup of archivelog all; List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 54 2.09M DISK 00:00:01 27-APR-10 BP Key: 54 Status: AVAILABLE Compressed: NO Tag: TAG20100427T094350 Piece Name: /u03/app/oracle/oradata/orcl/backup/1vlc5nqn_1_1 List of Archived Logs in backup set 54 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 12 1359005 26-APR-10 1359528 26-APR-10 1 13 1359528 26-APR-10 1359609 26-APR-10 1 14 1359609 26-APR-10 1362018 26-APR-10 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 55 13.82M DISK 00:00:02 27-APR-10 BP Key: 55 Status: AVAILABLE Compressed: NO Tag: TAG20100427T094350 Piece Name: /u03/app/oracle/oradata/orcl/backup/20lc5nqr_1_1 List of Archived Logs in backup set 55 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 1 1362019 26-APR-10 1374991 27-APR-10 BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 60 136.00K DISK 00:00:00 27-APR-10 BP Key: 60 Status: AVAILABLE Compressed: NO Tag: TAG20100427T094652 Piece Name: /u03/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 List of Archived Logs in backup set 60 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 2 1374991 27-APR-10 1375117 27-APR-10 RMAN>
Looking through the output above we see that highest Next SCN is 1375117 which is part of backup set 60.
Next we need to make the backup available to the new host. If the backups reside on a shared file system that the new host has access to then there is nothing more to do. If the backups are on local storage we will need to transfer the backups to the new host.
[oracle@ora1 backup]$ sftp oracle@ora2 Connecting to ora2... oracle@ora2's password: sftp> cd /u01/app/oracle/oradata/orcl/backup sftp> mput * Uploading 1vlc5nqn_1_1 to /u01/app/oracle/oradata/orcl/backup/1vlc5nqn_1_1 1vlc5nqn_1_1 100% 2142KB 2.1MB/s 00:00 Uploading 20lc5nqr_1_1 to /u01/app/oracle/oradata/orcl/backup/20lc5nqr_1_1 20lc5nqr_1_1 100% 14MB 13.8MB/s 00:01 Uploading 21lc5nqv_1_1 to /u01/app/oracle/oradata/orcl/backup/21lc5nqv_1_1 21lc5nqv_1_1 100% 1009MB 13.3MB/s 01:16 Uploading 22lc5nqv_1_1 to /u01/app/oracle/oradata/orcl/backup/22lc5nqv_1_1 22lc5nqv_1_1 100% 80MB 13.4MB/s 00:06 Uploading 23lc5ns4_1_1 to /u01/app/oracle/oradata/orcl/backup/23lc5ns4_1_1 23lc5ns4_1_1 100% 33MB 16.6MB/s 00:02 Uploading 24lc5o0c_1_1 to /u01/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 24lc5o0c_1_1 100% 137KB 136.5KB/s 00:00 Uploading c-1239150297-20100426-00 to /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100426-00 c-1239150297-20100426-00 100% 9600KB 9.4MB/s 00:01 Uploading c-1239150297-20100427-00 to /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 c-1239150297-20100427-00 100% 9632KB 9.4MB/s 00:01 sftp> exit [oracle@ora1 backup]$
All of the rest of the steps will take place on the new host.
Set the ORACLE_SID
to the SID
of the database that made the backup and start up RMAN and connect to the target.
[oracle@ora2 backup]$ export ORACLE_SID=orcl [oracle@ora2 backup]$ rman Recovery Manager: Release 11.2.0.1.0 - Production on Tue Apr 27 11:27:23 2010 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. RMAN> connect target / connected to target database (not started) RMAN>
We now need to set the DBID
and bring the database in mount mode. When we bring the database up in mount mode we will receive errors because the parameter file is not found. This is to be expected as we are restoring to a new host. Oracle will use a “dummy” parameter file for the time being.
RMAN> set dbid 1239150297 executing command: SET DBID RMAN> startup nomount startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 159019008 bytes Fixed Size 1335192 bytes Variable Size 75497576 bytes Database Buffers 79691776 bytes Redo Buffers 2494464 bytes RMAN>
Now with the database in mount mode we need to restore the SPFILE. We are going to need to make some changes to the SPFILE so we will restore SPFILE
to a PFILE
. The SPFILE
is stored in the control file autobackup. All of the RMAN configuration parameters values are at their defaults so we will need to set the location for the control file autobackup.
RMAN> show controlfile autobackup format; RMAN configuration parameters for database with db_unique_name DUMMY are: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default RMAN>
Below we will set the location for the control file autobackup and restore the SPFILE
to a PFILE
and then we shutdown the database.
RMAN> set controlfile autobackup format for device type disk to '/u01/app/oracle/oradata/orcl/backup/%F'; executing command: SET CONTROLFILE AUTOBACKUP FORMAT RMAN> restore spfile 2> to pfile '/u01/app/oracle/oradata/orcl/initorcl.ora' 3> from autobackup; Starting restore at 27-APR-10 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=19 device type=DISK channel ORA_DISK_1: looking for AUTOBACKUP on day: 20100427 channel ORA_DISK_1: AUTOBACKUP found: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete Finished restore at 27-APR-10 RMAN> shutdown abort; Oracle instance shut down RMAN>
Now that we have the SPFILE
we need to edit the some of the parameter to reflect the new host’s file system were appropriate. Below is a list of the some of the parameter you might need to change in your environment. These directories must exist on the new host.
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump' *.control_files='/u02/app/oracle/oradata/orcl/ctl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl','/u03/app/oracle/oradata/orcl/ctl/control03.ctl'#Restore Controlfile *.db_recovery_file_dest_size=4039114752 *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' *.diagnostic_dest='/u01/app/oracle' *.log_archive_dest_1='LOCATION=/u02/app/oracle/oradata/orcl/arch' *.local_listener='LISTENER_ORCL'
Note: If you are using 11g you to ensure your kernel parameters are set appropriately to avoid a possible ORA-00845
.
[oracle@ora2 orcl]$ oerr ora 00845 00845, 00000, "MEMORY_TARGET not supported on this system" // *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux. // *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system. [oracle@ora2 orcl]$
After making the necessary changes to the PFILE
we now will bring the database back up in NOMOUNT
mode so we can restore the control files. When bringing the database up in NOMOUNT
mode we will use the PFILE
we edited earlier.
RMAN> startup nomount pfile='/u01/app/oracle/oradata/orcl/initorcl.ora'; connected to target database (not started) Oracle instance started Total System Global Area 849530880 bytes Fixed Size 1339824 bytes Variable Size 528485968 bytes Database Buffers 314572800 bytes Redo Buffers 5132288 bytes RMAN>
Just like the SPFILE
we will use the autobackup to restore the control file after setting the control file autobackup format. After restoring the control files we mount the database.
RMAN> set controlfile autobackup format for device type disk to '/u01/app/oracle/oradata/orcl/backup/%F'; executing command: SET CONTROLFILE AUTOBACKUP FORMAT RMAN> restore controlfile from autobackup; Starting restore at 27-APR-10 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=19 device type=DISK recovery area destination: /u01/app/oracle/flash_recovery_area database name (or database unique name) used for search: ORCL channel ORA_DISK_1: no AUTOBACKUPS found in the recovery area channel ORA_DISK_1: looking for AUTOBACKUP on day: 20100427 channel ORA_DISK_1: AUTOBACKUP found: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 channel ORA_DISK_1: control file restore from AUTOBACKUP complete output file name=/u02/oradata/orcl/ctl/control01.ctl output file name=/u01/app/oracle/flash_recovery_area/orcl/control02.ctl output file name=/u03/app/oracle/oradata/orcl/ctl/control03.ctl Finished restore at 27-APR-10 RMAN> alter database mount; database mounted released channel: ORA_DISK_1 RMAN>
Now that the control files have been restored and mounted, all of the RMAN configuration parameters have been set. You should verify the paths to make sure they are appropriate for this host.
RMAN> show all; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u03/app/oracle/oradata/orcl/backup/%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 2 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 CHANNEL DEVICE TYPE DISK FORMAT '/u03/app/oracle/oradata/orcl/backup/%U' MAXPIECESIZE 2 G; CONFIGURE MAXSETSIZE TO UNLIMITED; # default 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 ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE'; CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default RMAN>
Given the current settings RMAN is going to look in /u03/app/oracle/oradata/orcl/backup
for both the control file autobackups and database/archive log backups. The backup we copied over is located in /u01/app/oracle/oradata/orcl/backup
. There are two ways to resolve this issue. Either move the backup to the location were RMAN is configured or change the configuration. It may be that moving the backups may not be an option so we document what needs to be done next.
RMAN has record of a backup in /u03/app/oracle/oradata/orcl/backup
but has no record of the backup we have in /u01/app/oracle/oradata/orcl/backup/
. We need remove the record of the old location and the backup of the new location.
In order to let RMAN know about the backup in /u01/app/oracle/oradata/orcl/backup
we use the CATALOG
command.
RMAN> catalog start with '/u01/app/oracle/oradata/orcl/backup'; Starting implicit crosscheck backup at 27-APR-10 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=19 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=20 device type=DISK Crosschecked 32 objects Finished implicit crosscheck backup at 27-APR-10 Starting implicit crosscheck copy at 27-APR-10 using channel ORA_DISK_1 using channel ORA_DISK_2 Finished implicit crosscheck copy at 27-APR-10 searching for all files in the recovery area cataloging files... no files cataloged searching for all files that match the pattern /u01/app/oracle/oradata/orcl/backup List of Files Unknown to the Database ===================================== File Name: /u01/app/oracle/oradata/orcl/backup/20lc5nqr_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/23lc5ns4_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 File Name: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100426-00 File Name: /u01/app/oracle/oradata/orcl/backup/21lc5nqv_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/1vlc5nqn_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/22lc5nqv_1_1 Do you really want to catalog the above files (enter YES or NO)? yes cataloging files... cataloging done List of Cataloged Files ======================= File Name: /u01/app/oracle/oradata/orcl/backup/20lc5nqr_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/23lc5ns4_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100427-00 File Name: /u01/app/oracle/oradata/orcl/backup/c-1239150297-20100426-00 File Name: /u01/app/oracle/oradata/orcl/backup/21lc5nqv_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/1vlc5nqn_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 File Name: /u01/app/oracle/oradata/orcl/backup/22lc5nqv_1_1 RMAN>
As a result of the CATALOG
command RMAN performed a CROSSCHECK
. The backup registered at /u03/app/oracle/oradata/orcl/backup/
was marked expired as a result of the CROSSCHECK
because they were not present.
We are almost ready to restore the database the last thing to be done is to build the restore script. During the restore we can change the location of the data files by using SET NEWNAME FOR DATAFILE
. The data files in the backup are on various locations but we would like to restore them to only one.
Also we would like to change the location of the redo logs as well. In order to change the redo log locations the ALTER DATABASE RENAME FILE
command has to be issued. Below are examples of both.
SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs01.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/orcl/users01.dbf'; SET NEWNAME FOR DATAFILE 5 TO '/u01/app/oracle/oradata/orcl/example01.dbf'; SET NEWNAME FOR DATAFILE 6 TO '/u01/app/oracle/oradata/orcl/test.dbf'; SET NEWNAME FOR DATAFILE 7 TO '/u01/app/oracle/oradata/orcl/dbfs01.dbf'; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo01.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/red01_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo02.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo02_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo03.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo03_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo04.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo04_b.log'' ";
If you remember we stated that we wanted the restore to stop at SCN 1375117 because that was the latest SCN
in which we have archive logs. In order to stop at a specific SCN
we will use the SET UNTIL SCN 1375117
.
After all of that we just need to restore the database, switch the data files so the control files have the new path and recover the database. Not much at all. 😉
Below is the entire script to do just that.
RUN { SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs01.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/orcl/users01.dbf'; SET NEWNAME FOR DATAFILE 5 TO '/u01/app/oracle/oradata/orcl/example01.dbf'; SET NEWNAME FOR DATAFILE 6 TO '/u01/app/oracle/oradata/orcl/test.dbf'; SET NEWNAME FOR DATAFILE 7 TO '/u01/app/oracle/oradata/orcl/dbfs01.dbf'; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo01.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/red01_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo02.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo02_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo03.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo03_b.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo04.log'' "; SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo04_b.log'' "; SET UNTIL SCN 1375117; RESTORE DATABASE; SWITCH DATAFILE ALL; RECOVER DATABASE; }
The script above was saved to the file restore.rman. Below is the output.
RMAN> @restore.rman RMAN> RUN { 2> SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf'; 3> SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf'; 4> SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs01.dbf'; 5> SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/orcl/users01.dbf'; 6> SET NEWNAME FOR DATAFILE 5 TO '/u01/app/oracle/oradata/orcl/example01.dbf'; 7> SET NEWNAME FOR DATAFILE 6 TO '/u01/app/oracle/oradata/orcl/test.dbf'; 8> SET NEWNAME FOR DATAFILE 7 TO '/u01/app/oracle/oradata/orcl/dbfs01.dbf'; 9> 10> 11> SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log'' 12> TO ''/u01/app/oracle/oradata/orcl/redo/redo01.log'' "; 13> SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.log'' 14> TO ''/u02/app/oracle/oradata/orcl/redo/red01_b.log'' "; 15> SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log'' 16> TO ''/u01/app/oracle/oradata/orcl/redo/redo02.log'' "; 17> SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.log'' 18> TO ''/u02/app/oracle/oradata/orcl/redo/redo02_b.log'' "; 19> SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log'' 20> TO ''/u01/app/oracle/oradata/orcl/redo/redo03.log'' "; 21> SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.log'' 22> TO ''/u02/app/oracle/oradata/orcl/redo/redo03_b.log'' "; 23> SQL "ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log'' 24> TO ''/u01/app/oracle/oradata/orcl/redo/redo04.log'' "; 25> SQL "ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.log'' 26> TO ''/u02/app/oracle/oradata/orcl/redo/redo04_b.log'' "; 27> 28> SET UNTIL SCN 1375117; 29> 30> RESTORE DATABASE; 31> SWITCH DATAFILE ALL; 32> 33> RECOVER DATABASE; 34> } executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME using target database control file instead of recovery catalog sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo01.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo01.log'' sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/red01_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/red01_b.log'' sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo02.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo02.log'' sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo02_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo02_b.log'' sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo03.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo03.log'' sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo03_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo03_b.log'' sql statement: ALTER DATABASE RENAME FILE ''/u02/app/oracle/oradata/orcl/redo/redo04.log'' TO ''/u01/app/oracle/oradata/orcl/redo/redo04.log'' sql statement: ALTER DATABASE RENAME FILE ''/u03/app/oracle/oradata/orcl/redo/redo04_b.log'' TO ''/u02/app/oracle/oradata/orcl/redo/redo04_b.log'' executing command: SET until clause Starting restore at 27-APR-10 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=17 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=1 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/orcl/undotbs01.dbf channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/orcl/example01.dbf channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/orcl/test.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/oradata/orcl/backup/22lc5nqv_1_1 channel ORA_DISK_2: starting datafile backup set restore channel ORA_DISK_2: specifying datafile(s) to restore from backup set channel ORA_DISK_2: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf channel ORA_DISK_2: reading from backup piece /u01/app/oracle/oradata/orcl/backup/23lc5ns4_1_1 channel ORA_DISK_2: piece handle=/u01/app/oracle/oradata/orcl/backup/23lc5ns4_1_1 tag=TAG20100427T094358 channel ORA_DISK_2: restored backup piece 1 channel ORA_DISK_2: restore complete, elapsed time: 00:00:07 channel ORA_DISK_2: starting datafile backup set restore channel ORA_DISK_2: specifying datafile(s) to restore from backup set channel ORA_DISK_2: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf channel ORA_DISK_2: restoring datafile 00002 to /u01/app/oracle/oradata/orcl/sysaux01.dbf channel ORA_DISK_2: restoring datafile 00007 to /u01/app/oracle/oradata/orcl/dbfs01.dbf channel ORA_DISK_2: reading from backup piece /u01/app/oracle/oradata/orcl/backup/21lc5nqv_1_1 channel ORA_DISK_1: piece handle=/u01/app/oracle/oradata/orcl/backup/22lc5nqv_1_1 tag=TAG20100427T094358 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:23 channel ORA_DISK_2: piece handle=/u01/app/oracle/oradata/orcl/backup/21lc5nqv_1_1 tag=TAG20100427T094358 channel ORA_DISK_2: restored backup piece 1 channel ORA_DISK_2: restore complete, elapsed time: 00:00:56 Finished restore at 27-APR-10 datafile 1 switched to datafile copy input datafile copy RECID=9 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=10 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=11 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=12 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/users01.dbf datafile 5 switched to datafile copy input datafile copy RECID=13 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/example01.dbf datafile 6 switched to datafile copy input datafile copy RECID=14 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/test.dbf datafile 7 switched to datafile copy input datafile copy RECID=15 STAMP=717436375 file name=/u01/app/oracle/oradata/orcl/dbfs01.dbf Starting recover at 27-APR-10 using channel ORA_DISK_1 using channel ORA_DISK_2 starting media recovery channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=2 channel ORA_DISK_1: reading from backup piece /u01/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 channel ORA_DISK_1: piece handle=/u01/app/oracle/oradata/orcl/backup/24lc5o0c_1_1 tag=TAG20100427T094652 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 archived log file name=/u02/oradata/orcl/arch/1_2_717335393.dbf thread=1 sequence=2 media recovery complete, elapsed time: 00:00:01 Finished recover at 27-APR-10 RMAN> RMAN> **end-of-file** RMAN>
All that is left is to open the database with the RESETLOGS option.
RMAN> alter database open resetlogs; database opened RMAN>
* how
* to
* restore
* complete
* database
* on
* another
* system
* (in
* oracle)
Excellent documentation…
Many Many Thanks
Can we use multiple channels to do the RESTORE ? We have 4tb db and around 800gb of RMAN backup size. We need 5 channels to be configured.
its a good documents
but do u have any idea that when i use (/data/app/oracle/rman_backup/ its my BK dirictory
RMAN> catalog start with ‘/data/app/oracle/rman_backup/’;
Starting implicit crosscheck backup at 12-MAR-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=63 device type=DISK
ORA-03113: end-of-file on communication channel
ORA-01403: no data found
ORA-01403: no data found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of catalog command at 03/12/2013 19:01:48
ORA-03113: end-of-file on communication channel
ORA-01403: no data found
ORA-01403: no data found
****
i copy this files from rac database using backup database plus archivelog delete input and then backup backupset 1,2,3,4 format ‘/data/app/oracle/rman_backup/%U’;
and i also try backup as copy command but this message is appear
Best comprehensive disaster recovery instructions I’ve ever found. Thanks for saving my bacon. Systems admins thanks you too
nice post
i think i sone of the mos comprensive documentation in order to recover a database in another host
tanks
Hi,
please give doc for rman restore script from local server database to production standby database.
Thanks
Elayaraja
Hi,
please give me doc rman restore script from test to production standby database.
Thanks
Elayaraja
good doccumentation
This is an excellent doc.
What about when I have to restore/duplicate to a different SID. At what point and how to change the name from PROD to DEV2?
Rooster
This the greatest documentation i’ve ever seen.
Thank you very much!
Superb documentation of a complex matter! Thank you very much!
Nice post!!
Very Nice Arcticle !!!
Many Many Thanks 🙂
Thanks for this wonderful document which is really helpful.
In this scenario, have you ever come across a situation where the database nags that the redo logs belong to a diferrent SID?
Nice Post Informative
super documentation. please also inform how to connect shared datafile while restoring.
Hi,
Since you require to recover upto 1375117, shoudn’t set until scn be 1375118?
On very rare occasion I come across a documented procedure that I would frame as “best in class.” This is one of the maybe 12 in 18 years that I would reference that way. Well done! And thank you.
Good document with screen shots
Exactly what i looking for, thanks!
Great article. Thanks. I had to add a couple of steps to my process but this set me in the right direction. Cheers.
I must say you have hi quality posts here. Your blog should go viral.
You need initial boost only. How to get it?
Search for: Etorofer’s strategies
Great People Great Documentation
failed at
RMAN> alter database open resetlogs;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00601: fatal error in recovery manager
RMAN-03004: fatal error during execution of command
ORA-03114: not connected to ORACLE
RMAN-03002: failure of sql statement command at 10/13/2017 14:40:13
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
Process ID: 1960
Session ID: 12 Serial number: 45288
ORACLE error from target database:
ORA-03114: not connected to ORACLE
getting error RMAN-03002: failure of switch command at 01/03/2018 11:17:37
ORA-19563: header validation failed for file
Starting restore at 03-JAN-18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/wizer/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/wizer/noencrypt_data.dbf
channel ORA_DISK_1: reading from backup piece /u01/rman_bkp/WIZER/backupset/2018_01_02/o1_mf_nnndf_TAG20180102T165811_f4pv6hpm_.bkp
channel ORA_DISK_1: piece handle=/u01/rman_bkp/WIZER/backupset/2018_01_02/o1_mf_nnndf_TAG20180102T165811_f4pv6hpm_.bkp tag=TAG20180102T165811
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/wizer/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/wizer/users01.dbf
channel ORA_DISK_1: reading from backup piece /u01/rman_bkp/WIZER/backupset/2018_01_02/o1_mf_nnndf_TAG20180102T165811_f4pv6hsl_.bkp
channel ORA_DISK_1: piece handle=/u01/rman_bkp/WIZER/backupset/2018_01_02/o1_mf_nnndf_TAG20180102T165811_f4pv6hsl_.bkp tag=TAG20180102T165811
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:37
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/wizer/system01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/wizer/noencrypt_data.dbf
channel ORA_DISK_1: reading from backup piece /u01/rman_bkp/Database_1asnm916_1_1
channel ORA_DISK_1: piece handle=/u01/rman_bkp/Database_1asnm916_1_1 tag=TAG20180102T165811
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 03-JAN-18
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of switch command at 01/03/2018 11:17:37
ORA-19563: header validation failed for file
i followed the same but is giving the errors in my case i am restoring of asm rac linux oracle server backup in a non asm oracle linux server
RUN
{
SET NEWNAME FOR DATAFILE 1 TO ‘/u01/app/BMADBA/oradata/bmadb/system01.dbf’;
SET NEWNAME FOR DATAFILE 2 TO ‘/u01/app/BMADBA/oradata/bmadb/sysaux01.dbf’;
SET NEWNAME FOR DATAFILE 3 TO ‘/u01/app/BMADBA/oradata/bmadb/undotbs01.dbf’;
SET NEWNAME FOR DATAFILE 4 TO ‘/u01/app/BMADBA/oradata/bmadb/users01.dbf’;
SET NEWNAME FOR DATAFILE 5 TO ‘/u01/app/BMADBA/oradata/bmadb/undotbs02.dbf’;
SET NEWNAME FOR DATAFILE 6 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_famsblank_01.dbf’;
SET NEWNAME FOR DATAFILE 7 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_itreasury_01.dbf’;
SET NEWNAME FOR DATAFILE 8 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_ibcbs_01.dbf’;
SET NEWNAME FOR DATAFILE 9 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_forex_01.dbf’;
SET NEWNAME FOR DATAFILE 10 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_hrmis_01.dbf’;
SET NEWNAME FOR DATAFILE 11 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_01.dbf’;
SET NEWNAME FOR DATAFILE 12 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_famsblank_02.dbf’;
SET NEWNAME FOR DATAFILE 13 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_itreasury_02.dbf’;
SET NEWNAME FOR DATAFILE 14 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_ibcbs_02.dbf’;
SET NEWNAME FOR DATAFILE 15 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_forex_02.dbf’;
SET NEWNAME FOR DATAFILE 16 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_hrmis_02.dbf’;
SET NEWNAME FOR DATAFILE 17 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_02.dbf’;
SET NEWNAME FOR DATAFILE 18 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_04.dbf’;
SET NEWNAME FOR DATAFILE 19 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_05.dbf’;
SET NEWNAME FOR DATAFILE 20 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_06.dbf’;
SET NEWNAME FOR DATAFILE 21 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_aml_01.dbf’;
SET NEWNAME FOR DATAFILE 22 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_aml_02.dbf’;
SET NEWNAME FOR DATAFILE 23 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata_03.dbf’;
SET NEWNAME FOR DATAFILE 24 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata.284.948287157’;
SET NEWNAME FOR DATAFILE 25 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata.286.952098641’;
SET NEWNAME FOR DATAFILE 26 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata.287.972476791’;
SET NEWNAME FOR DATAFILE 27 TO ‘/u01/app/BMADBA/oradata/bmadb/ts_cbsdata.288.973275119’;
SET UNTIL SCN 985561858;
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 09/10/2018 11:08:33
RMAN-06026: some targets not found – aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore