Oracle Database Clone Using RMAN

Notes:
NOFILENAMECHECK: If you want the duplicate filenames to be the same as the target filenames, and if the databases are in different hosts, then you must specify NOFILENAMECHECK

  • db_file_name_convert: This parameter specifies from where to where the datafiles should be cloned.
  • log_file_name_convert:This parameter specifies from where to where the redo logfiles should be cloned

Database Clone Via RMAN Backup Sets:

step 1: take backup on source db

RMAN>
run
{
backup format '/u01/backup/%d_D_%T_%u_%s_p%p'
incremental level 0 database
current controlfile format '/u01/backup/%d_C_%T_%u'
spfile format '/u01/backup/%d_S_%T_%u'
plus archivelog format '/u01/backup/%d_A_%T_%u_%s_p%p';
}

step 2: copy backup from source to target

scp /u01/backup/* oracle@192.168.31.202:/u01/backup/

step 3: Create pfile from SOURCE database and send to TARGET database

SQL> create pfile from spfile;
scp initapple.ora oracle@202:$ORACLE_HOME/dbs/initorange.ora

step 4: Create adump,datafiles and logfiles location

Like:
mkdir -p /u02/oradata/ORANGE
mkdir -p /u02/oradata/ORANGE/adump

step 5: edit target pfile, change the dbname and locations

*.audit_file_dest=' /u02/oradata/ORANGE/adump'
*.db_file_name_convert=' /u02/oradata/APPLE',' /u02/oradata/ORANGE'
*.log_file_name_convert=' /u02/oradata/APPLE',' /u02/oradata/ORANGE'
*.control_files=' /u02/oradata/ORANGE/control01.ctl',' /u02/oradata/ORANGE/control02.ctl'
*.db_name='orange'

step 6: run bash_profile and start the target server

. .bash_profile
startup pfile nomount='$ORACLE_HOME/dbs/initoran
ge.ora'

step 7: Connect as auxiliary database to create a new database in TARGET location

rman auxiliary /
duplicate database to orange backup location '/u01/backup/' nofilenamecheck;

step 8:Verify the status of TARGET database status

SQL> select name,open_mode from v$database;

Database Clone Via RMAN Active Database:

step 1: Verify the Environment variable in both sides

step 2: create password file in source and send to target and send to target:

orapwd file=$ORACLE_HOME/dbs/orapwprod password="abc123" format=12 force=y
scp orapwapple oracle@192.168.31.202:$ORACLE_HOME/dbs/orapworange

step 3: Create pfile from SOURCE database and send to TARGET database

SQL> create pfile from spfile;
scp initapple.ora oracle@202:$ORACLE_HOME/dbs/initorange.ora

step 4: Create adump,datafiles and logfiles location

Like:
mkdir -p /u02/oradata/ORANGE
mkdir -p /u02/oradata/ORANGE/adump

step 5: edit target pfile, change the dbname and locations

*.audit_file_dest=' /u02/oradata/ORANGE/adump'
*.db_file_name_convert=' /u02/oradata/APPLE',' /u02/oradata/ORANGE'
*.log_file_name_convert=' /u02/oradata/APPLE',' /u02/oradata/ORANGE'
*.control_files=' /u02/oradata/ORANGE/control01.ctl',' /u02/oradata/ORANGE/control02.ctl'
*.db_name='orange'

step 6: run bash_profile and start the target server

. .bash_profile
startup pfile nomount='$ORACLE_HOME/dbs/initorange.ora'

step 7: configure the listener and tnsnames entry in Both Servers

step 8: Connect as auxiliary database to create a new database in TARGET location

[oracle@clone:admin clone] rman target sys/oracle@prod auxiliary sys/oracle
RMAN> duplicate database to orange from active database nofilenamecheck;

step 9: Verify the status of TARGET database status

SQL> select name,open_mode from v$database;

Comments