You are on page 1of 15

How to clone a Windows database

Oracle Tips by Burleson Consulting


May 3, 2008

Question: How can I copy my Oracle database from one Windows machine to another? Is copying the same as
cloning?

Answer: Yes, copying and cloning are synonymous, and there are several ways to copy a database:

• RMAN restore to new server


• DataPump (export. import)
• File cloning (the fastest method)

Common reasons for copying a Windows database include creating a testing and development instance and
copying a production Windows database for ease by reporting. Here is a generic clone procedure that works on
all OS environments, and is a fast way to copy a Windows Oracle database from one machine to another:

• Cloning a Windows database


• Cloning a RAC Windows database

For HA systems, there is a minimum downtime approach to copying a Windows instance:

• Super-fast cloning of a Windows database

See these related notes on copying Windows databases:

• Clone 9.0.1.3.1 to 10.2.0.1


• Database Cloning
• RMAN clone database functionality
• Clone Database
• RMAN to duplicate a Windows database
• Migration from SQL Server 2000 to Oracle 10g

Super fast Database Copying/Cloning


Oracle Tips by Burleson Consulting

A database cloning procedure is especially useful for the DBA who wants to give his developers a full-sized
TEST and DEV instance by cloning the PROD instance into the development server areas.

This Oracle clone procedure can be use to quickly migrate a system from one UNIX server to another. It clones
the Oracle database and this Oracle cloning procedures is often the fastest way to copy a Oracle database.

STEP 1: On the old system, go into SQL*Plus, sign on as SYSDBA and issue: “alter database backup
controlfile to trace”. This will put the create database syntax in the trace file directory. The trace keyword tells
oracle to generate a script containing a create controlfile command and store it in the trace directory identified
in the user_dump_dest parameter of the init.ora file. It will look something like this:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "OLDLSQ" NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 240
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 ('/u03/oradata/oldlsq/log1a.dbf',
'/u03/oradata/olslsq/log1b.dbf') SIZE 30M,
GROUP 2 ('/u04/oradata/oldlsq/log2a.dbf',
'/u04/oradata/oldlsq/log2b.dbf') SIZE 30M
DATAFILE
'/u01/oradata/oldlsq/system01.dbf',
'/u01/oradata/oldlsq/mydatabase.dbf'
;
# Recovery is required if any of the datafiles are restored
# backups, or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;

STEP 2: Shutdown the old database

STEP 3: Copy all data files into the new directories on the new server. You may change the file names if you
want, but you must edit the controlfile to reflect the new data files names on the new server.
rcp /u01/oradata/oldlsq/* newhost:/u01/oradata/newlsq
rcp /u01/oradata/oldlsq/* newhost:/u01/oradata/newlsq
rcp /u03/oradata/oldlsq/* newhost:/u03/oradata/newlsq
rcp /u04/oradata/oldlsq/* newhost:/u04/oradata/newlsq

STEP 4: Copy and Edit the Control file – Using the output syntax from STEP 1, modify the controlfile creation
script by changing the following:

Old:

CREATE CONTROLFILE REUSE DATABASE "OLDLSQ" NORESETLOGS

New:

CREATE CONTROLFILE SET DATABASE "NEWLSQ" RESETLOGS

STEP 5: Remove the “recover database” and “alter database open” syntax
# Recovery is required if any of the datafiles are restored
# backups, or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;

STEP 6: Re-names of the data files names that have changed.

Save as db_create_controlfile.sql.

Old:
DATAFILE
'/u01/oradata/oldlsq/system01.dbf',
'/u01/oradata/oldlsq/mydatabase.dbf'

New:

DATAFILE
'/u01/oradata/newlsq/system01.dbf',
'/u01/oradata/newlsq/mydatabase.dbf'

STEP 7: Create the bdump, udump and cdump directories

cd $DBA/admin
mkdir newlsq
cd newlsq
mkdir bdump
mkdir udump
mkdir cdump
mkdir pfile

STEP 8: Copy-over the old init.ora file

rcp $DBA/admin/olslsq/pfile/*.ora newhost:/u01/oracle/admin/newlsq/pfile

STEP 9: Start the new database

@db_create_controlfile.sql

STEP 10: Place the new database in archivelog mode

Cloning a large RAC database

Oracle Tips by Steve Karam

See related notes: Fast cloning of Oracle databases

Question: We have a specific need to clone a RAC database that is in archivelog mode and is up and running
and is about 2 terabytes. We’ve been able to clone the smaller databases in archivelog mode with little impact
on the database being cloned and would like to use this option for the multi terabyte RAC clusters database.
How do you clone a large multi terabyte RAC database?

Answer: Oracle's Grid Control uses the RMAN DUPLICATE feature in order to do its RAC cloning. This
RMAN feature uses a database backup as the basis for the cloning procedure. The backup is transferred and
restored on another server and put into action.

Unfortunately, the only real way to customize a large RAC clone with RMAN this is to allocate more channels.
You can run the DUPLICATE command on your own in RMAN, without using RAC Grid Control. When you
do so, just specify multiple AUXILIARY channels of device type DISK. The more you specify, the faster your
duplicate will take place. You can find a better description of RMAN terminology (including how channels
work) here.
You may be able to allocate more AUXILIARY channels in RAC Grid Control as well, but I'm somewhat sure
you cannot. I don't have a Grid Control server to look at at the moment, but if you see options to allocate more
channels when cloning that's what you want in order to speed up the cloning process.

With a multi terabyte RAC cluster database, you may want to consider a combination of RMAN or
Transportable Tablespaces and some sort of hardware cloning/snapshot if possible. If you are using NetApp or
EMC for data storage, there may be snapshot capabilities you can take advantage of in order to clone the
datafiles quickly.

If you have no option to use a snapshot technology, another approach to RAC cloning is to mount the target
system's drives locally on the primary system. This way you can use RMAN to backup the datafiles as datafile
copies straight to the target disk instead of having the files go over the network (like the DUPLICATE
command does). Once you're done with the RAC database clone, dismount the target's disks from the primary
and mount them to the target server.

Transportable Tablespaces are also well liked for large databases, but they cause tablespaces to be in READ
ONLY mode while copying...meaning you will not have 100% uptime on the target.

Clone an Oracle database using RMAN duplicate (same server)


tnsManager - Distribute tnsnames the easy way and for free!

This procedure will clone a database onto the same server using RMAN duplicate.

• 1. Backup the source database.


To use RMAN duplicate an RMAN backup of the source database is required. If there is already one available, skip to
step 2. If not, here is a quick example of how to produce an RMAN backup. This example assumes that there is no
recovery catalog available:
• rman target sys@<source database> nocatalog

• backup database plus archivelog format '/u01/ora_backup/rman/%d_%u_%s';

This will backup the database and archive logs. The format string defines the location of the backup files. Alter it to a
suitable location.

• 2. Produce a pfile for the new database


This step assumes that the source database is using a spfile. If that is not the case, simply make a copy the existing pfile.

Connect to the source database as sysdba and run the following:


• create pfile='init<new database sid>.ora' from spfile;

This will create a new pfile in the $ORACLE_HOME/dbs directory.

The new pfile will need to be edited immediately. If the cloned database is to have a different name to the source, this will
need to be changed, as will any paths. Review the contents of the file and make alterations as necessary.

Because in this example the cloned database will reside on the same machine as the source, Oracle must be told how
convert the filenames during the RMAN duplicate operation. This is achieved by adding the following lines to the newly
created pfile:

db_file_name_convert=(<source_db_path>,<target_db_path>)
log_file_name_convert=(<source_db_path>,<target_db_path>)

Here is an example where the source database scr9 is being cloned to dg9a. Note the trailing slashes and lack of quotes:
db_file_name_convert=(/u01/oradata/scr9/,/u03/oradata/dg9a/)
log_file_name_convert=(/u01/oradata/scr9/,/u03/oradata/dg9a/)

• 3. Create bdump, udump & cdump directories


Create bdump, udump & cdump directories as specified in the pfile from the previous step.

• 4. Add a new entry to oratab, and source the environment


Edit the /etc/oratab (or /opt/oracle/oratab) and add an entry for the new database.

Source the new environment with '. oraenv' and verify that it has worked by issuing the following command:
• echo $ORACLE_SID

If this doesn't output the new database sid go back and investigate why not.

• 5. Create a password file


Use the following command to create a password file (add an appropriate password to the end of it):
• orapwd file=${ORACLE_HOME}/dbs/orapw${ORACLE_SID} password=<your password>
• 6. Duplicate the database
From sqlplus, start the instance up in nomount mode:
• startup nomount

Exit sqlplus, start RMAN and duplicate the database. As in step 1, it is assumed that no recovery catalog is available. If
one is available, simply amend the RMAN command to include it.

rman target sys@<source_database> nocatalog auxiliary /

duplicate target database to <clone database name>;

This will restore the database and apply some archive logs. It can appear to hang at the end sometimes. Just give it time
- I think it is because RMAN does a 'shutdown normal'.

If you see the following error, it is probably due to the file_name_convert settings being wrong. Return to step 2 and
double check the settings.

RMAN-05001: auxiliary filename '%s' conflicts with a file used by the target database

Once the duplicate has finished RMAN will display a message similar to this:

database opened
Finished Duplicate Db at 26-FEB-05

RMAN>

Exit RMAN.

• 7. Create an spfile
From sqlplus:
• create spfile from pfile;

• shutdown immediate
• startup
Now that the clone is built, we no longer need the file_name_convert settings:

alter system reset db_file_name_convert scope=spfile sid='*'


/

alter system reset log_file_name_convert scope=spfile sid='*'


/

• 8. Optionally take the clone database out of archive log mode


RMAN will leave the cloned database in archive log mode. If archive log mode isn't required, run the following commands
from sqlplus:
• shutdown immediate
• startup mount
• alter database noarchivelog;
• alter database open;
• 9. Configure TNS
Add entries for new database in the listener.ora and tnsnames.ora as necessary.
Clone an Oracle Database Using Rman Duplicate Command
Alejandro Vargas
Oracle Israel
19/03/07

Summary of Steps.............................................................................................................................................1
1. The Rman Backup Script:..............................................................................................................................2
2. Create password file on the remote node for the instance you plan to build.................................................4
3. Create a new init.ora for the database..........................................................................................................4
4. Configure SQL Net on source and target nodes...........................................................................................6
5. Create directories for the database on the remote node..............................................................................8
6. Startup nomount the auxiliary instance on target node................................................................................9
7. Check that source database is mounted or open.........................................................................................9
8. Copy all backup files to target node, the path MUST be the same as in the source..................................10
9. Start Rman and allocate auxiliary channels to the new database, execute the Duplicate command.........11
10. Check the new database..........................................................................................................................18
End of the Procedure......................................................................................................................................19
Summary of Steps

1. Prepare an Rman backup script

2. Create an Oracle Password File for the Auxiliary Instance

3. Create a new init.ora for the database

4. Configure SQL Net for the new database on remote node

5. Create the required directories for the new database on the remote node

6. Startup nomount the auxiliary instance on target node

7. Check that source database is mounted or open

8. Copy all backup files to target node

9. Start Rman, allocate auxiliary channels to the new database, execute Duplicate command

10. Check the new database

1. The Rman Backup Script:


{oracle} /crmdbtst/app01/oracle/scripts/av/scripts [crmdbtst1] > cat rman_backup
#!/bin/ksh
set -x
# Script : backup_to_fs
# Alejandro Vargas
# March 6, 2007
# This script backup a database and the archived logs required to recover it on File System
# This version is for a single instance database.
# Environment Variables
# ---------------------
export ORACLE_SID=r2tape
export ORACLE_BASE=/crmdbtst/app01/oracle
export ORACLE_HOME=/crmdbtst/app01/oracle/product/10gDB
# Path Variables
# --------------
export
BASE_PATH=/crmdbtst/app01/oracle/scripts/general:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bi
n:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/crmdbtst/app01/oracle/scripts:/usr/local/maint/oracle:/crmdb/
app01/oracle/product/db_scripts/RAC:/crmdb/app01/oracle/product/db_scripts
export PATH=${ORACLE_HOME}/bin:${BASE_PATH}
# Script Variables
# ----------------
# v_logvw = set the name of dynamic view v$log to variable v_logvw to be used inside a command.
# v_scni1 = initial scn thread1
# v_scnf1 = final scn thread1
# v_bdest = backup destination
v_logvw=gv\$log
v_scni1=`echo "select 'xX '||min(sequence#) from $v_logvw where thread#=1;" | sqlplus -s '/as sysdba' | grep "xX" |
awk '{print $2}'`
v_bdest=/crmdbtst/oa01/rman/r2tape
# Backup database
# ---------------
rman target / nocatalog <<EOF
run {
sql "alter system archive log current";
allocate channel backup_disk1 type disk format '$v_bdest/%U';
allocate channel backup_disk2 type disk format '$v_bdest/%U';
allocate channel backup_disk3 type disk format '$v_bdest/%U';
allocate channel backup_disk4 type disk format '$v_bdest/%U';
backup database include current controlfile;
release channel backup_disk1;
release channel backup_disk2;
release channel backup_disk3;
release channel backup_disk4;
sql "alter system archive log current";
}
exit
EOF
v_scnf1=`echo "select 'xX '||max(sequence#) from $v_logvw where thread#=1;" | sqlplus -s '/as sysdba' | grep "xX" |
awk '{print $2}'`
rman target / nocatalog <<EOF
run {
allocate channel backup_disk1 type disk format '$v_bdest/%U';
backup archivelog
sequence between $v_scni1 and $v_scnf1 thread 1 delete input;
release channel backup_disk1 ;
}
exit
EOF
rman target / nocatalog log=$v_bdest/backuset_info.log <<EOF
list backupset;
exit
EOF
# EOF backup_to_fs

2. Create password file on the remote node for the instance you plan to build
[dbtst2] > orapwd file=orapwr2dupl password=oracle entries=10
[dbtst2] > ls -ltr orapwr2dupl
-rw-r----- 1 oracle dba 2560 Mar 19 10:52 orapwr2dupl

3. Create a new init.ora for the database


Create a copy of source database spfile and edit it.
SQL> create pfile='/dbtst/app01/oracle/product/10gDB/dbs/initr2dupl.ora' from
pfile='/dbtst/app01/oracle/product/10gDB/dbs/spfiler2tape.ora'
/
File created.
r2dupl.__shared_pool_size=146800640
*.audit_file_dest='/dbtst/app01/oracle/admin/r2dupl/adump'
*.background_dump_dest='/dbtst/app01/oracle/admin/r2dupl/bdump'
*.compatible='10.2.0.3.0'
*.control_files='/dbtst/oa01/r2dupl/files1/R2TAPE/controlfile/o1_mf_2kqh1rj1_.ctl',
'/dbtst/oa01/r2dupl/files2/R2TAPE/controlfile/o1_mf_2kqh1rly_.ctl'
*.core_dump_dest='/dbtst/app01/oracle/admin/r2dupl/cdump'
*.db_block_size=8192
*.db_cache_size=114572800
*.db_create_file_dest='/dbtst/oa01/r2dupl'
*.db_create_online_log_dest_1='/dbtst/oa01/r2dupl/files1'
*.db_create_online_log_dest_2='/dbtst/oa01/r2dupl/files2'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='r2dupl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=r2duplXDB)'
*.java_pool_size=25165824
*.job_queue_processes=10
*.large_pool_size=0
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=1624244224
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=838860800
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/dbtst/app01/oracle/admin/r2dupl/udump'

4. Configure SQL Net on source and target nodes


On Source Node add to tnsnames.ora an entry to get to the database
r2dupl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (COMMUNITY = tcp.world)(PROTOCOL = TCP)(Host = crmdbtst2)(Port = 1521))
)
(CONNECT_DATA =
(SID = r2dupl)
)
)
On Target Node add to tnsnames.ora and listener.ora respective entries.
On Tnsnames.ora add:
r2dupl =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world)(PROTOCOL = TCP)(Host = crmdbtst2)(Port =
1521))
)
(CONNECT_DATA =
(SID = r2dupl)
)
)
On Listener.ora add:
(SID_DESC =
(GLOBAL_DBNAME = r2dupl)
(ORACLE_HOME = /crmdbtst/app01/oracle/product/10gDB)
(SID_NAME = r2dupl)
)
Check Connectivity from source and target nodes
SOURCE:
[dbtst1] > tnsping r2dupl
TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 19-MAR-2007 11:50:13
Copyright (c) 1997, 2006, Oracle. All rights reserved.
Used parameter files:
/dbtst/app01/oracle/product/10gDB/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY =
tcp.world)(PROTOCOL = TCP)(Host = crmdbtst2)(Port = 1521))) (CONNECT_DATA = (SID = r2dupl)))
OK (10 msec)
TARGET:
[dbtst2] > tnsping r2dupl
TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 19-MAR-2007 11:48:25
Copyright (c) 1997, 2006, Oracle. All rights reserved.
Used parameter files:
/dbtst/app01/oracle/product/10gDB/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY =
tcp.world)(PROTOCOL = TCP)(Host = dbtst2)(Port = 1521))) (CONNECT_DATA = (SID = r2dupl)))
OK (0 msec)
5. Create directories for the database on the remote node
[dbtst2] > mkdir -p /dbtst/app01/oracle/admin/r2dupl/udump
[dbtst2] > mkdir -p /dbtst/app01/oracle/admin/r2dupl/cdump
[dbtst2] > mkdir -p /dbtst/app01/oracle/admin/r2dupl/bdump
[dbtst2] > mkdir -p /dbtst/app01/oracle/admin/r2dupl/adump
[dbtst2] > mkdir -p /dbtst/oa01/r2dupl/files1/R2TAPE/controlfile/
[dbtst2] > mkdir -p /dbtst/oa01/r2dupl/files2/R2TAPE/controlfile/

6. Startup nomount the auxiliary instance on target node


[dbtst2] > setenv ORACLE_SID r2dupl
[dbtst2] > sql
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Mar 19 11:52:50 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 989855744 bytes
Fixed Size 2077552 bytes
Variable Size 864029840 bytes
Database Buffers 117440512 bytes
Redo Buffers 6307840 bytes
7. Check that source database is mounted or open
[dbtst1] > sts r2tape
[dbtst1] > sql
SQL*Plus: Release 10.2.0.3.0 - Production on Mon Mar 19 11:56:43 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select status from v$instance;
STATUS
------------------------------------
OPEN
SQL>

8. Copy all backup files to target node, the path MUST be the same as in the source.
[dbtst1] > ls -ltr
total 1799072
-rw-r----- 1 oracle dba 16400384 Mar 22 10:40 1cid8b5e_1_1
-rw-r----- 1 oracle dba 242335744 Mar 22 10:41 1bid8b5e_1_1
-rw-r----- 1 oracle dba 393609216 Mar 22 10:41 1aid8b5e_1_1
-rw-r----- 1 oracle dba 1138081792 Mar 22 10:41 19id8b5e_1_1
-rw-r----- 1 oracle dba 207360 Mar 22 10:42 1fid8b7t_1_1
-rw-r----- 1 oracle dba 7192576 Mar 22 10:42 snapcf_r2tape.f
-rw-r----- 1 oracle dba 7274496 Mar 22 10:42 c-2373435176-20070322-02
-rw-r--r-- 1 oracle dba 7938 Mar 22 10:42 backuset_info.log
[dbtst1] > scp * dbtst2:/dbtst/oa01/rman/r2tape
[dbtst1] > scp * dbtst2:/dbtst/oa01/rman/r2tape
19id8b5e_1_1 100% 1085MB 8.0MB/s 02:15
1aid8b5e_1_1 100% 375MB 8.2MB/s 00:46
1bid8b5e_1_1 100% 231MB 7.5MB/s 00:31
1cid8b5e_1_1 100% 16MB 7.8MB/s 00:02
1fid8b7t_1_1 100% 203KB 202.5KB/s 00:00
backuset_info.log 100% 7938 7.8KB/s 00:00
c-2373435176-20070322-02 100% 7104KB 6.9MB/s 00:01
snapcf_r2tape.f 100% 7024KB 6.9MB/s 00:01

9. Start Rman and allocate auxiliary channels to the new database, execute the
Duplicate command
Highlighted all the input required to execute the duplicate:
[dbtst1] > rman target / nocatalog auxiliary sys/oracle@r2dupl <<<<<< invoke RMAN
Recovery Manager: Release 10.2.0.3.0 - Production on Thu Mar 22 10:59:18 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: R2TAPE (DBID=2373435176)
using target database control file instead of recovery catalog
connected to auxiliary database: R2DUPL (not mounted)
RMAN> run {ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK; <<<<<< execute the
Duplicate Command
DUPLICATE TARGET DATABASE TO r2dupl;
}
allocated channel: aux1
channel aux1: sid=153 devtype=DISK
Starting Duplicate Db at 22/03/2007 11:00:05
contents of Memory Script:
{
set until scn 3739135100301;
set newname for clone datafile 1 to new;
set newname for clone datafile 2 to new;
set newname for clone datafile 3 to new;
set newname for clone datafile 4 to new;
restore
check readonly
clone database
;
}
executing Memory Script
executing command: SET until clause
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 22/03/2007 11:00:05
channel aux1: starting datafile backupset restore
channel aux1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to
/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_%u_.dbf
channel aux1: reading from backup piece /crmdbtst/oa01/rman/r2tape/1cid8b5e_1_1
channel aux1: restored backup piece 1
piece handle=/crmdbtst/oa01/rman/r2tape/1cid8b5e_1_1 tag=TAG20070322T104045
channel aux1: restore complete, elapsed time: 00:00:03
channel aux1: starting datafile backupset restore
channel aux1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to
/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_%u_.dbf
channel aux1: reading from backup piece /crmdbtst/oa01/rman/r2tape/1bid8b5e_1_1
channel aux1: restored backup piece 1
piece handle=/crmdbtst/oa01/rman/r2tape/1bid8b5e_1_1 tag=TAG20070322T104045
channel aux1: restore complete, elapsed time: 00:00:25
channel aux1: starting datafile backupset restore
channel aux1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to
/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_system_%u_.dbf
channel aux1: reading from backup piece /crmdbtst/oa01/rman/r2tape/1aid8b5e_1_1
channel aux1: restored backup piece 1
piece handle=/crmdbtst/oa01/rman/r2tape/1aid8b5e_1_1 tag=TAG20070322T104045
channel aux1: restore complete, elapsed time: 00:00:45
channel aux1: starting datafile backupset restore
channel aux1: specifying datafile(s) to restore from backup set
restoring datafile 00004 to
/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_%u_.dbf
channel aux1: reading from backup piece /crmdbtst/oa01/rman/r2tape/19id8b5e_1_1
channel aux1: restored backup piece 1
piece handle=/crmdbtst/oa01/rman/r2tape/19id8b5e_1_1 tag=TAG20070322T104045
channel aux1: restore complete, elapsed time: 00:01:25
Finished restore at 22/03/2007 11:02:43
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "R2DUPL" RESETLOGS
ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 SIZE 50 M ,
GROUP 2 SIZE 50 M ,
GROUP 3 SIZE 50 M
DATAFILE
'/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_system_304kfl61_.dbf'
CHARACTER SET WE8ISO8859P1
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=617886165
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_304kdoxf_.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=617886165
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_304kdrwx_.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=617886165
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_304kgyyt_.dbf
contents of Memory Script:
{
set until scn 3739135100301;
recover
clone database
delete archivelog
;
}
executing Memory Script
executing command: SET until clause
Starting recover at 22/03/2007 11:02:45
starting media recovery
channel aux1: starting archive log restore to default destination
channel aux1: restoring archive log
archive log thread=1 sequence=139
channel aux1: reading from backup piece /crmdbtst/oa01/rman/r2tape/1fid8b7t_1_1
channel aux1: restored backup piece 1
piece handle=/crmdbtst/oa01/rman/r2tape/1fid8b7t_1_1 tag=TAG20070322T104205
channel aux1: restore complete, elapsed time: 00:00:02
archive log
filename=/crmdbtst/app01/oracle/product/10gDB/dbs/arch1_139_602349163.dbf
thread=1 sequence=139
channel clone_default: deleting archive log(s)
archive log
filename=/crmdbtst/app01/oracle/product/10gDB/dbs/arch1_139_602349163.dbf recid=1
stamp=617886167
media recovery complete, elapsed time: 00:00:01
Finished recover at 22/03/2007 11:02:49
contents of Memory Script:
{
shutdown clone;
startup clone nomount ;
}
executing Memory Script
database dismounted
Oracle instance shut down
connected to auxiliary database (not started)
Oracle instance started
Total System Global Area 989855744 bytes
Fixed Size 2077552 bytes
Variable Size 864029840 bytes
Database Buffers 117440512 bytes
Redo Buffers 6307840 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "R2DUPL" RESETLOGS
ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 SIZE 50 M ,
GROUP 2 SIZE 50 M ,
GROUP 3 SIZE 50 M
DATAFILE
'/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_system_304kfl61_.dbf'
CHARACTER SET WE8ISO8859P1
contents of Memory Script:
{
set newname for clone tempfile 1 to new;
switch clone tempfile all;
catalog clone datafilecopy
"/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_304kdoxf_.dbf";
catalog clone datafilecopy
"/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_304kdrwx_.dbf";
catalog clone datafilecopy
"/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_304kgyyt_.dbf";
switch clone datafile all;
}
executing Memory Script
executing command: SET NEWNAME
renamed temporary file 1 to
/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_temp_%u_.tmp in control file
cataloged datafile copy
datafile copy
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_304kdoxf_.dbf
recid=1 stamp=617886180
cataloged datafile copy
datafile copy
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_304kdrwx_.dbf recid=2
stamp=617886181
cataloged datafile copy
datafile copy
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_304kgyyt_.dbf recid=3
stamp=617886181
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=617886180
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_304kdoxf_.dbf
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=617886181
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_304kdrwx_.dbf
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=617886181
filename=/crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_304kgyyt_.dbf
contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 22/03/2007 11:03:19
RMAN>

10. Check the new database


{oracle} /crmdbtst/oa01/rman/r2tape [crmdbtst2] > sql
SQL*Plus: Release 10.2.0.3.0 - Production on Thu Mar 22 11:15:38 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select name from v$database;
NAME
---------
R2DUPL
SQL> select bytes||' '||file_name||' .-' from dba_data_files order by bytes;
BYTES||''||FILE_NAME||'.-'
--------------------------------------------------------------------------------
267386880 /crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_undotbs1_304kdoxf_.dbf .-
346030080 /crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_sysaux_304kdrwx_.dbf .-
524288000 /crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_system_304kfl61_.dbf .-
1156055040 /crmdbtst/oa01/r2dupl/R2DUPL/datafile/o1_mf_users_304kgyyt_.dbf .-
SQL>

End of Procedure

You might also like