Assumed database names:
Primary
Database SID: PROD
Duplicate Database SID: AUX
RMAN Catalog SID: RMAN
====================================================================================
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 within your ASM instance.
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.
=====================================================================================
2 Determine how much disk space will be required.
3 Ensuring you have enough space within your ASM instance.
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.
=====================================================================================
1. Backup of the primary database.
Host A (Target)
Prior to creating a duplicate database you must have a backup of the target database. In this example we assume the backup media is disk. Find appropriate disk space on Host A and take a full backup including archive logs and current controlfile (Figure 1a). If you are planning to duplicate a subset of the database refer to (Figure 1b) this illustrates the RMAN command to backing up certain tablespaces.
[oracle@linux]
export ORACLE_SID=PROD
%rman
target=/ catalog=rman/rman@RMAN
RMAN>
run {
allocate
channel d1 type disk;
backup
format '/backups/ORA102/df_t%t_s%s_p%p' database;
sql
'alter system archive log current';
backup
format '/backups/ORA102/al_t%t_s%s_p%p' archivelog all;
release
channel d1;
}
Figure 1a - This command will perform a full database backup including
archivelogs and the current controlfile. If backup pieces are on ASM,
then a new backup to filesystem is required.
[oracle@linux] export ORACLE_SID=PROD
[oracle@linux]
rman target=/ catalog=rman/rman@RMAN
RMAN>
run {
allocate
channel d1 type disk;
backup
format '/backups/ORA102/df_t%t_s%s_p%p' tablespace SYSTEM, SYSAUX, UNDO, USERS;
sql
'alter system archive log current';
backup
format '/backups/ORA102/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.
and the current controlfile.
2 Determine how much disk space will be required.
Host A(Target)
After deciding what you will be duplicating, calculate the entire space this will require on the new Host. The full database calculation (Figure 2a) will calculate the entire space required whereas (figure 2b) allows you to enter the tablespace names in order to calculate the space required. Figure 2c provides a sample output.
After deciding what you will be duplicating, calculate the entire space this will require on the new Host. The full database calculation (Figure 2a) will calculate the entire space required whereas (figure 2b) allows you to enter the tablespace names in order to calculate the space required. Figure 2c provides a sample output.
SQL> select DF.TOTAL/1048576 "DataFile Size Mb",
LOG.TOTAL/1048576
"Redo Log Size Mb",
CONTROL.TOTAL/1048576
"Control File Size Mb",
(DF.TOTAL
+ LOG.TOTAL + CONTROL.TOTAL)/1048576 "Total Size Mb" from dual,
(select
sum(a.bytes) TOTAL from dba_data_files a) DF,
(select
sum(b.bytes) TOTAL from v$log b) LOG,
(select
sum((cffsz+1)*cfbsz) TOTAL from x$kcccf c) CONTROL;
Figure 2a -
Calculate total space for all datafiles within database.
SQL> select DF.TOTAL/1048576 "DataFile Size Mb",
LOG.TOTAL/1048576
"Redo Log Size Mb",
CONTROL.TOTAL/1048576
"Control File Size Mb",
(DF.TOTAL
+ LOG.TOTAL + CONTROL.TOTAL)/1048576 "Total Size Mb" from dual,
(select
sum(a.bytes) TOTAL from dba_data_files a where tablespace_name in
('SYSTEM','SYSAUX','UNDO','USERS')) DF,
(select
sum(b.bytes) TOTAL from v$log b) LOG,
(select
sum((cffsz+1)*cfbsz) TOTAL from x$kcccf c) CONTROL;
Figure 2b -
Calculate space for list of datafiles within primary database.
DataFile
Size Mb Redo Log Size Mb
Control File Size Mb Total Size Mb
----------------
---------------- -------------------- -------------
900
150
20.34375 1070.34375
Figure 2c - Sample output of
space calculation.
3. Ensuring you have enough space within your ASM instance.
Host B (AUX)
Prior to starting the duplicate process you must ensure you have enough disk space within ASM to hold the duplicate database.
Prior to starting the duplicate process you must ensure you have enough disk space within ASM to hold the duplicate database.
% export ORACLE_SID=+ASM
SQL>
select NAME, STATE, TOTAL_MB, FREE_MB from v$asm_diskgroup;
NAME
STATE TOTAL_MB FREE_MB
------------------------------
----------- ---------- ----------
DGROUP2
MOUNTED
976 3
DGROUP3
MOUNTED
4882 4830
Figure
3a - Sample output showing the space available with the ASM diskgroup.
Compare the result received from this query with the output from 2a or 2b and ensure you have enough disk space for your duplicate database.
If you do not have enough disk space within your ASM instance ensure you must add it prior to continuing.
Keep in mind you may also be storing archive logs and/or the recovery area within the ASM instance so ample room must be available.
If you are duplicating from ASM to a filesystem ensure you have enough disk space on the source file system.
Compare the result received from this query with the output from 2a or 2b and ensure you have enough disk space for your duplicate database.
If you do not have enough disk space within your ASM instance ensure you must add it prior to continuing.
Keep in mind you may also be storing archive logs and/or the recovery area within the ASM instance so ample room must be available.
If you are duplicating from ASM to a filesystem ensure you have enough disk space on the source file system.
4. Making the backup available for the duplicate process.
If your backup resides on disk you will need
to copy this back up from Host A to Host B. Ensure you place it in the same
directory as where it was created. In the example below (figure 4a) the backup
piece resides in ‘/backups/ORA102’ these files need to be copied into the same
directory on host B.
Furthermore also ensure than all archive log backups have also been moved and any archive logs in the archive log directory that may be require for the recovery. The archive logs required will depend on the point in time of the recovery.
Furthermore also ensure than all archive log backups have also been moved and any archive logs in the archive log directory that may be require for the recovery. The archive logs required will depend on the point in time of the recovery.
RMAN> list backup;
BS Key
Type LV Size Device Type Elapsed Time Completion Time
-------
---- -- ---------- ----------- ------------ -------------------
22 Full
529M DISK 00:00:51 2006/05/16 11:12:54
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 of
Archived Logs in backup set 24
Thrd Seq
Low SCN Low Time Next SCN Next Time
----
------- ---------- ------------------- ---------- ---------
1 78
1344750 2006/05/15 04:55:34 1353208 2006/05/15 10:00:19
1 79
1353208 2006/05/15 10:00:19 1353213 2006/05/15 10:00:20
1 80
1353213 2006/05/15 10:00:20 1371564 2006/05/15 22:00:11
1 81
1371564 2006/05/15 22:00:11 1373291 2006/05/15 22:00:59
1 82
1373291 2006/05/15 22:00:59 1381066 2006/05/16 03:00:05
1 83
1381066 2006/05/16 03:00:05 1390685 2006/05/16 09:03:00
1 84
1390685 2006/05/16 09:03:00 1393870 2006/05/16 11:13:00
1 85
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(Target)
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)
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
=/apps/oracle/admin/AUX/adump
background_dump_dest
=/apps/oracle/admin/AUX/bdump
core_dump_dest
=/apps/oracle/admin/AUX/cdump
user_dump_dest
=/apps/oracle/admin/AUX/udump
db_name
="AUX"
instance_name
=AUX
# Set the
below to the location of the duplicate clone control file.
control_files
=+DGROUP1/control01.ctl
# Set the
below for the from and to location for all data files / redo
# logs to
be cloned. As you can the the ASM disk group is specified.
db_file_name_convert
=("/u01/AUX/ORA102", "+DGROUP1")
log_file_name_convert
=("/u01/AUX/ORA102", "+DGROUP1")
#Set the
below to the same as the production target
### NOTE
IF YOU ARE DUPLICATING FROM ASM TO FILE SYSTEM YOUR CONVERT PARAMETER WOULD BE
###
REVERSED.
##
control_files =/u01/AUX/ORA102/control01.ctl
##
db_file_name_convert =("+DGROUP1","/u01/AUX/ORA102")
##
log_file_name_convert =("+DGROUP1","/u01/AUX/ORA102")
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.
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;
Figure 5b -
startup nomount the AUX instance.
6. Ensuring SQL*NET connections to primary database and RMAN catalog are working.
Host B(Target)
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.
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
7. Prepare RMAN duplicate script.
In a working directory on Host B create an
RMAN script file cr_duplicate.rcv. The example below (figure 7a) shows the
command for a partial duplicate.
RUN {
allocate
auxiliary channel C1 device type disk;
duplicate
target database to AUX;
}
Figure 7a - Sample standby creation command.
8. Execute the RMAN script.
Start RMAN, connect to the production target,
the catalog instance and also the auxiliary clone. Run the RMAN duplicate
script as shown below. Before doing this ensure that the Oracle SID environment
variable is set to the duplicate clone database.
export ORACLE_SID=AUX
%rman
target sys/sys@PROD catalog rman/rman@rman auxiliary /
RMAN> @cr_duplicate.rcv
Figure 8a - Execute the RMAN duplicate script.
No comments:
Post a Comment