Documente Academic
Documente Profesional
Documente Cultură
11g Release 2
This article is an update of a previous Oracle 9i article.
Introduction
Backup-Based Duplication
Active Database Duplication
Related articles.
Direct NFS (DNFS) Clonedb in Oracle Database 11g Release 2 (Patchset 11.2.0.2)
Introduction
RMAN has the ability to duplicate, or clone, a database from a backup or from an active
database. It is possible to create a duplicate database on a remote server with the same file
structure, a remote server will a different file structure or the local server with a different file
structure.
The article assumes the duplicate database is being created on a separate server, using the
same SID (DB11G) and the same file structure as the source database. Explanations of several
other scenarios are available here.
Backup-Based Duplication
Create a backup of the source database, if a suitable one doesn't already exist.
$ rman target=/
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG
All subsequent actions occur on the server running the duplicate database.
Create a password file for the duplicate instance.
$ orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDB11G
password=password entries=10
Add the appropriate entries into the "tnsnames.ora" file in the "$ORACLE_HOME/network/admin"
directory to allow connections to the target database from the duplicate server.
# Added to the tnsnames.ora
DB11G-SOURCE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ol5-112-dup1)(PORT = 1521))
)
(CONNECT_DATA =
(ORACLE_SID = DB11G)
)
Create a PFILE for the duplicate database. Since we are duplicating the database onto a
separate server with the same filesystem as the original, we don't need to convert the file names.
In this case, the PFILE is called "initDB11G.ora" and is placed in the "$ORACLE_HOME/dbs"
directory.
# Minimum Requirement.
DB_NAME=DB11G
# Convert file names to allow for different directory structure if
necessary.
#DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/DB11G/','/u01/app/oracle/
oradata/NEWSID/'
#LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/DB11G/','/u02/app/oracle
/oradata/NEWSID/'
We don't need all the other parameters as the clone will copy the SPFILE from the primary
database. If you are duplicating a database on the same machine you will probably need to
create a PFFILE/SPFILE manually from the primary database SPFILE, manually change the
values and avoid the SPFILE clause in the duplicate command.
Create any directories necessary for start the duplicate database.
$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump
Make the backup files from the source database available to the destination server. That can be
done by either copying them to the matching location on the destination server, or placing them
on a shared drive. If you are copying the files, you may want to use the following type of
commands.
$ scp -r oracle@ol5-112dup1:/u01/app/oracle/fast_recovery_area/DB11G/archivelog
/u01/app/oracle/fast_recovery_area/DB11G
$ scp -r oracle@ol5-112dup1:/u01/app/oracle/fast_recovery_area/DB11G/backupset
/u01/app/oracle/fast_recovery_area/DB11G
$ scp -r oracle@ol5-112dup1:/u01/app/oracle/fast_recovery_area/DB11G/autobackup
/u01/app/oracle/fast_recovery_area/DB11G
The time it takes to complete varies depending on the size of the database and the specification
of the server. Once the process is finished RMAN produces a completion message and you have
your duplicate instance.
)
)
ADR_BASE_LISTENER = /u01/app/oracle
When connecting to RMAN, you must use a connect string for both the target and auxiliary
connections.
$ ORACLE_SID=DB11G; export ORACLE_SID
$ rman TARGET sys/password@DB11G-SOURCE AUXILIARY sys/password@DB11GDESTINATION
Include the FROM ACTIVE DATABASE clause in the DUPLICATE command.
DUPLICATE DATABASE TO DB11G
FROM ACTIVE DATABASE
SPFILE
NOFILENAMECHECK;