|
Summary
RMAN can be used to duplicate, or clone, a database from a previous 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, RMAN 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.
4. Add a new listener.ora on the remote server.
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
In the example the production database is ANDR, DUP will be the clone and RMAN is the rman database
ANDR =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = crmcc)(PORT = 1521))
(CONNECT_DATA =
(SID = ANDR)))
DUP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rp1dev)(PORT = 1551))
(CONNECT_DATA =
(SID = DUP)))
RMAN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bserver)(PORT = 1521))
(CONNECT_DATA =
(SID = RMAN)))
the new listener.ora file on the remote server is
# LISTENER.ORA Network Configuration File: /ora1/androm/9.2.0/network/admin/listener.ora
# Generated by Oracle configuration tools.
DUP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rp1dev)(PORT = 1551)))
SID_LIST_DUP =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DUP)
(ORACLE_HOME = /orandr/ANDR/9.2.0)
(SID_NAME = DUP)))
Start the new listener!
$lsnrctl start DUP
Now you have to create the initDUP.ora, at $ORACLE_HOME/dbs - here is the example
db_name = "DUP"
instance_name = DUP
control_files = (/orandr/ANDR/controlfiles/control01.ctl, /orandr/ANDR/controlfiles/control02.ctl,
/orandr/ANDR/controlfiles/control03.ctl)
db_file_name_convert=(/orandr/ANDR/datafiles/,/orandr/ANDR/datafiles_new/)
log_file_name_convert=(/orandr/ANDR/redologs/,/orandr/ANDR/redologs_new/)
db_block_size = 8192
compatible = 9.2.0.0.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
After setting new $ORACLE_HOME, $ORACLE_SID, $PATH for the new clone execute on the remote server the following:
export NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI'
sqlplus /nolog
CONNECT / AS SYSDBA
STARTUP nomount PFILE=$ORACLE_HOME/dbs/initDUP.ora
exit sqlplus and run from the shell
rman TARGET sys/t3mpl8@ANDR CATALOG rman/atromhtos@RMAN AUXILIARY /
from the RMAN command line execute (line by line )
RUN {
allocate auxiliary channel ch01 TYPE 'SBT_TAPE';
allocate auxiliary channel ch02 TYPE 'SBT_TAPE';
allocate auxiliary channel ch03 TYPE 'SBT_TAPE';
send 'NB_ORA_CLIENT=crmcc';
SET UNTIL TIME 'SYSDATE-7';
DUPLICATE TARGET DATABASE TO DUP;
}
*** NB_ORA_CLIENT=crmcc is the production server!
if you get errors like this
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ==========================================================
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
then execute:
ln -s /usr/openv/netbackup/bin/libobk.sl64 libobk.sl
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
|