Professional Documents
Culture Documents
In this Document Goal Solution Duplicate database from server A to server B (Non ASM) 1. Backup of the primary database. 2. Determine how much disk space will be required. 3. Ensuring you have enough space on your target server. 4. Making the backup available for the duplicate process. 5. Creating the init.ora & administration directories for the duplicate database. 6. Ensuring SQL*NET connections to primary database and RMAN catalog are working. 7. Prepare RMAN duplicate script. 8. Execute the RMAN script. References
Applies to:
Oracle Server - Enterprise Edition - Version: 9.0.1.4 to 11.2.0.0 - Release: 9.0.1 to 11.2 Information in this document applies to any platform. ***Checked for relevance on 06-Aug-2009*** ***Checked for relevance on 01-Feb-2011***
Goal
The following note will guide a user in creating a duplicate database on a new host (non ASM). The scenario refers to a recovery catalog however a catalog is not mandatory. The following example has been completed on a Linux operating system. The note is applicable for 9i, 10g and 11g. However 11g has new features related to the DUPLICATE.
Solution
Duplicate database from server A to server B (Non ASM)
Assumed database names:
Primary Database SID: PROD Duplicate Database SID: AUX RMAN Catalog SID: RMAN ===================================================================== =============== Steps 1. Backup the primary database. 2. Determine how much disk space will be required. 3. Ensuring you have enough space on your target server. 4. Making the backup available for the duplicate process. 5. Creating the init.ora & administration directories for the duplicate database. 6. Ensuring SQL*NET connections to primary database and RMAN catalog are working. 7. Prepare RMAN duplicate script. 8. Execute the RMAN script. ===================================================================== ================
Figure 1a - This command will perform a full database backup including archivelogs and the current controlfile.
[oracle@linux] export ORACLE_SID=PROD [oracle@linux] rman target=/ catalog=rman/rman@RMAN RMAN> run { allocate channel d1 type disk; backup format '/backups/PROD/df_t%t_s%s_p%p' tablespace SYSTEM, SYSAUX, UNDO, USERS; sql 'alter system archive log current'; backup format '/backups/PROD/al_t%t_s%s_p%p' archivelog all; release channel d1; }
Figure 1b- This command will perform a tablespace backup ( SYSTEM, SYSAUX, UNDO & USERS) including archive logs and the current controlfile.
(select sum(b.bytes) TOTAL from v$log b) LOG, (select sum((cffsz+1)*cfbsz) TOTAL from x$kcccf c) CONTROL;
Figure 3a - Sample output showing the space available on your filesystem. Compare the results received from this query with the output from 2a or 2b and ensure you have enough diskspace for your duplicate database.
BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20060516T111203 Piece Name: /backups/PROD/df_t590584323_s23_p1 List of Datafiles in backup set 22 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- ------------------- ---1 Full 1393845 2006/05/16 11:12:03 /oradata/PROD/system01.dbf 2 Full 1393845 2006/05/16 11:12:03 /oradata/PROD/undotbs01.dbf 3 Full 1393845 2006/05/16 11:12:03 /oradata/PROD/sysaux01.dbf 4 Full 1393845 2006/05/16 11:12:03 /oradata/PROD/users01.dbf BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ ------------------24 48M DISK 00:00:06 2006/05/16 11:13:07 BP Key: 24 Status: AVAILABLE Compressed: NO Tag: TAG20060516T111301 Piece Name: /backups/PROD/al_t590584381_s25_p1 List Thrd ---1 78 1 79 1 80 1 81 1 82 1 83 1 84 1 85 of Archived Logs in backup set 24 Seq Low SCN Low Time Next SCN Next Time ------- ---------- ------------------- ---------- --------1344750 2006/05/15 04:55:34 1353208 2006/05/15 10:00:19 1353208 2006/05/15 10:00:19 1353213 2006/05/15 10:00:20 1353213 2006/05/15 10:00:20 1371564 2006/05/15 22:00:11 1371564 2006/05/15 22:00:11 1373291 2006/05/15 22:00:59 1373291 2006/05/15 22:00:59 1381066 2006/05/16 03:00:05 1381066 2006/05/16 03:00:05 1390685 2006/05/16 09:03:00 1390685 2006/05/16 09:03:00 1393870 2006/05/16 11:13:00 1393870 2006/05/16 11:13:00 1393929 2006/05/16 11:13:00
Figure 4a - A list backup showing the backup pieces that need to be copied across Host B
5. Creating the init.ora & administration directories for the duplicate database.
Host B(AUX) Create the pfile [initAUX.ora] parameter file in the $ORACLE_HOME/dbs directory for the auxiliary database. An example is shown below (figure 5a) with bare minimum settings. Note you may require to set parameters which are the same as your production database (refer to you primary init.ora)
# # # # # # +----------------------------------------+ | FILE : initAUX.ora | | DATABASE NAME : AUX | +----------------------------------------+ Set the below to location of the clone Duplicate database / name of clone database.
audit_file_dest =/oradata/AUX/adump background_dump_dest =/oradata/AUX/bdump core_dump_dest =/oradata/AUX/cdump user_dump_dest =/oradata/AUX/udump db_name ="AUX" instance_name =AUX
# Set the below to the location of the duplicate clone control file. control_files =('/oradata/AUX/control01.ctl','/oradata/AUX/control02.ctl','/oradata/AUX/con trol03.ctl')
# Set the below for the from and to location for all data files / redo # logs to be cloned. db_file_name_convert =("/oradata/PROD/", "/oradata/AUX/") log_file_name_convert =("/oradata/PROD/", "/oradata/AUX/") #Set the below to the same as the production target undo_management =AUTO undo_retention =10800 undo_tablespace =UNDOTBS1 db_block_size = 8192 compatible = 10.2.0.1.0
Figure 5a - Sample initAUX.ora with minimal settings Following the creation of the initAUX.ora startup nomount the auxiliary instance.
[oracle@linux]export ORACLE_SID=AUX [oracle@linux] sqlplus '/as sysdba' SQLPLUS> startup nomount;
6. Ensuring SQL*NET connections to primary database and RMAN catalog are working.
Host B(AUX) Ensure the production target database is open or at least mounted. If using a catalog database this must also be open. Test your SQL*NET connections: From Host B you must be able to connect to the primary DB as sysdba and make an rman connection to RMAN. Perform a basic test using sqlplus. When you have successfully connected exit sqlplus and move onto the next step.
[oracle@linux]% sqlplus sys/oracle@PROD as sysdba [oracle@linux]% sqlplus rman/rman@RMAN (not mandatory)