RMAN
11GR2 : DUPLICATE Without Target And Recovery Catalog Connection
APPLIES
TO:
Oracle
Database - Enterprise Edition - Version 11.2.0.1 and later
Information
in this document applies to any platform.
***Checked
for relevance on 10-Dec-2015***
GOAL
Rman
11g release 2 provides us the flexibility of creating the rman duplicate
without connecting to the target database and recovery catalog.
All
rman needs here is the location of the backup pieces which is accessible and
rman reads the backup pieces and restores the spfile,controlfile,datafiles and
archivelog files to perform the duplicate operation.
An
example for this kind of duplicate operation is:
RMAN>
DUPLICATE DATABASE TO dup11r2
UNTIL TIME
"TO_DATE('29-MAY-2010 14:16:42','DD-MON-YYYYHH24:MI:SS')"
SPFILE
set
control_files='D:\dup11r2\c1.ctl'
set
db_file_name_convert='D:\Database\Ora11g2\ora11g2','d:\dup11r2'
set
log_file_name_convert='D:\Database\Ora11g2\ora11g2','d:\dup11r2'
BACKUP LOCATION 'D:\dup11r2';
#
Here use of the BACKUP LOCATION clause identifies the type of duplication as
having no target connection, no recovery catalog and being backup-based.
This
is a New Feature in 11gR2
http://docs.oracle.com/cd/E11882_01/backup.112/e10642/wnbradv.htm#BRADV021
Oracle®
Database Backup and Recovery User's Guide
11g
Release 2 (11.2)
.
What's New in Backup and Recovery?
SOLUTION
Process
involved in this type of duplicate database
++
Rman restores the spfile from the backup pieces located in the mentioned
location.
++
Once the spfile is restored, rman sets appropriate values to the parameters
mentioned the duplicate command. For example:
db_name
control_files
db_file_name_convert
log_file_name_convert
etc
...
Once
done, rman restarts the instance to no mount so that the changes can take
effect.
++
Rman now changes the value of the parameter db_name to the target database name
to achieve the restore of the controlfile. The restored controlfile will have
the db_name as of the target database name and since we cannot have a different
db_name in the spfile and in the controlfile, rman will have to set the
parameter db_name to the target database name and perform the restore of the
datafiles and controlfiles.
Also
here if the duplicate is happening on the same machine, then 2 controlfiles
with the same db_name cannot be mounted. In order to achieve this the auxiliary
instance will have the parameter db_unique_name set to a unique value. Rman
takes care of this sets the db_uniqiue_name to the database name specified for
the auxiliary database.
++
After the above operation,controlfile is restored from the backup piece to the
location provided for the parameter control_files.
++
Now Rman restores the datafiles to the locations specified by the parameter
log_file_name_convert.
++
Recovery of the datafiles are performed.
++
Once the recovery is completed, rman shuts down the database to reset the value
of db_name to the value provided for the auxiliary database.
++
Once this is done, the database is taken to no mount phase and the controlfile
is recreated to change the database name and the id.This is followed by the
database getting opened with resetlogs.
The
steps involved in creating the duplicate database are as follows
1)
Take a backup of the spfile, controlfile, database, and archivelogs as follows:
RMAN>
backup spfile ;
RMAN>
backup database include current controlfile plus archivelog ;
2)
Making the backup pieces available for duplicate operation.
++
If the duplicate is going to happen on different server, move the backup pieces
to a new server using commands like ftp,scp etc.
++
If the duplicate is going to happen on the same server as target, then you can
either retain them in the same location where the backup was done or copy it to
a required location.
3)
Create a password file for the auxiliary instance.
For
unix copy the password file from the target database to $ORACLE_HOME/dbs and
rename it.
For
windows copy the password file from the target database to
%ORACLE_HOME/database and rename it.
4)
Create a initialization parameter for the auxiliary instance with only one
parameter DB_NAME.
DB_NAME=dup11r2
5)
Now start the auxiliary instance to no mount mode.
Unix
Example
============
Just
set the environment variables and start the instance.
%
export ORACLE_SID=dup11r2
%
export ORACLE_HOME=/home/oracle/ora11g
%
export PATH=$ORACLE_HOME/bin:$PATH
%
sqlplus "/as sysdba"
SQL
> startup nomount
Windows
Example
===============
Create
a service and then set the necessary environment variables and start the
instance.
%
oradim -new -sid dup11r2
set
ORACLE_SID=dup11r2
set
ORACLE_HOME=D:\Orahome\Ora11gr2
set
PATH=D:\Orahome\Ora11gr2\bin;%PATH%
%
sqlplus "/as sysdba"
SQL
> startup nomount
6)
Connect to the auxiliary instance from RMAN and perform the rman duplicate as
follows:
EXAMPLE
=======
%
rman auxiliary /
RMAN
> DUPLICATE DATABASE TO dup11r2
UNTIL
TIME "TO_DATE('29-MAY-2010 14:16:42','DD-MON-YYYY HH24:MI:SS')"
SPFILE
set
control_files='D:\dup11r2\c1.ctl'
set
db_file_name_convert='D:\Database\Ora11g2\ora11g2','d:\dup11r2'
set
log_file_name_convert='D:\Database\Ora11g2\ora11g2','d:\dup11r2'
BACKUP
LOCATION 'D:\dup11r2'
;
This comment has been removed by a blog administrator.
ReplyDelete