fbpx

Oracle 19c RMAN Duplicate Database From Backup

To duplicate an Oracle database with backups you have taken with RMAN there are several ways to do it.

Make sure to have a full backup of the source database.

The backups are located at: /home/oracle/backup

The first method I will show you is with a minimal pfile, only the db_name.

The second method will be with more info in the pfile.

For both cases, assume that the ORACLE_SID is oradb2 and db_unique_name is oradb21, change them accordingly.

Make sure that the folders for DB_CREATE_FILE_DEST, DB_RECOVERY_FILE_DEST and AUDIT_FILE_DEST exist.

If you are using ASM, replace accordingly.

1. RMAN duplicate database with minimal pfile

You add to the pfile only the db_name.

cat $ORACLE_HOME/dbs/initoradb2.ora

*.db_name='ORADB2'

Start the database in nomount mode

sqlplus / as sysdba
startup nomount

You connect to RMAN with

rman auxiliary /

You run this command inside an RMAN block

run
{
duplicate database to oradb2
spfile
set db_unique_name 'oradb21'
set control_files '/u01/app/oracle/oradata/ORADB21/datafile/control1.ctl'
set db_create_file_dest '/u01/app/oracle/oradata'
set db_recovery_file_dest '/u01/app/oracle/fra/'
set db_recovery_file_dest_size '22g'
set audit_file_dest '/u01/app/oracle/audit'
set pga_aggregate_target '210m'
set sga_target '900m'
backup location '/home/oracle/backup';
}

2. RMAN duplicate database with more info in the pfile

The second option is with more info inside the pfile

cat $ORACLE_HOME/dbs/initoradb2.ora

*.audit_file_dest='/u01/app/oracle/audit'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORADB21/datafile/control1.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata'
*.db_domain='localdomain'
*.db_name='ORADB2'
*.db_unique_name='ORADB21'
*.db_recovery_file_dest='/u01/app/oracle/fra'
*.db_recovery_file_dest_size=22G
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oradbXDB)'
*.enable_pluggable_database=true
*.local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=srv2.localdomain)(PORT=1521))'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=200M
*.processes=500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=900M
*.undo_tablespace='UNDOTBS1'

You have to startup the database in nomount

sqlplus / as sysdba
startup nomount

Now connect to RMAN

rman auxiliary /

Then run the duplicate command.

run
{
duplicate datavase to oradb2
backup location '/home/oracle/backup';
}

I hope this was helpful.

Leave a Reply

Your email address will not be published. Required fields are marked *