RMAN can be used to duplicate, or clone
, a database from a previous full online backup. The clone can be done in the same server or on a remote server. Here I will demonstrate how to do it, with Oracle9i
and on a remote server
with different filesystems.
Prepare the environment on the remote server
In order to make the clone on the new remote server you must set up:
1. A new unix user with the same privileges like the production unix user
2. Copy the $ORACLE_HOME binaries from the production server to the new remote server.
This will be your new $ORACLE_HOME for the clone. Relink to make it valid!
3. Add alias entries in tnsnames.ora for RMAN database, Production database and new Clone on the remote server.
In the example the production database is ANDR, DUP will be the clone and RMAN is the rman database.
(ADDRESS = (PROTOCOL = TCP)(HOST = crmcc)(PORT = 1521))
(SID = ANDR)))
(ADDRESS = (PROTOCOL = TCP)(HOST = rp1dev)(PORT = 1551))
(SID = DUP)))
(ADDRESS = (PROTOCOL = TCP)(HOST = bserver)(PORT = 1521))
(SID = RMAN)))
4. Add a new listener.ora on the remote server and start the listener ($lsnrctl start DUP)
# LISTENER.ORA Network Configuration File: /ora1/androm/9.2.0/network/admin/listener.ora
# Generated by Oracle configuration tools.
(ADDRESS = (PROTOCOL = TCP)(HOST = rp1dev)(PORT = 1551)))
(GLOBAL_DBNAME = DUP)
(ORACLE_HOME = /orandr/ANDR/9.2.0)
(SID_NAME = DUP)))
5. Create directory structured for dump_dest trace files, datafiles_new, controlfiles,
redologs_new on the remote server.
6. Create a new init.ora file for the process on the remote server at $ORACLE_HOME/dbs location
Now you have to create the initDUP.ora, at $ORACLE_HOME/dbs. Follow the example:
db_name = "DUP"
instance_name = DUP
control_files = (/orandr/ANDR/controlfiles/control01.ctl, /orandr/ANDR/controlfiles/control02.ctl,
db_block_size = 8192
compatible = 220.127.116.11.0
background_dump_dest = '/orandr/ANDR/9.2.0/admin/DUP/bdump/'
user_dump_dest = '/orandr/ANDR/9.2.0/admin/DUP/udump/'
core_dump_dest = '/orandr/ANDR/9.2.0/admin/DUP/cdump/'
control_files is where the new controlfiles will be created
db_file_name_convert are the matching pairs of production database filesystems to the clone filesystems
log_file_name_convert are the matching pairs of production redologs filesystems to the clone filesystems
After setting new $ORACLE_HOME, $ORACLE_SID, $PATH
for the new clone execute on the remote server the following:
export NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI'
sqlplus "/ as sysdba"
STARTUP nomount PFILE=$ORACLE_HOME/dbs/initDUP.ora
exit sqlplus and run from the shell
rman TARGET sys/*****@ANDR CATALOG rman/****@RMAN AUXILIARY /
Recovery Manager: Release 18.104.22.168.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: ANDR (DBID=1620364522)
connected to recovery catalog database
connected to auxiliary database: DUP (not mounted)
from the RMAN command line execute (line by line
allocate auxiliary channel ch01 TYPE 'SBT_TAPE';
allocate auxiliary channel ch02 TYPE 'SBT_TAPE';
allocate auxiliary channel ch03 TYPE 'SBT_TAPE';
SET UNTIL TIME '24-MAY-2011 20:00';
DUPLICATE TARGET DATABASE TO DUP;
*** NB_ORA_CLIENT=crmcc is the production server!
if you get errors like this
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-03009: failure of allocate command on ch01 channel at 07/05/2010 15:51:45
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27211: Failed to load Media Management Library
Additional information: 2
ln -s /usr/openv/netbackup/bin/libobk.sl64 libobk.sl
: Before you run the duplicate rman script you may have to
Find which media tapes have the latest backup
so you can attach them directly to the server
The script steps executed in RMAN can be found here :
Rman output script for creating DUPLICATE database
The contents of alert log while doing the Clone can be found here:
Alert log contents while cloning with RMAN
Usually get this error after the cloning:
ORA-01552: cannot use system rollback segment for non-system tablespace