Today, I was working with a code base still in development, but really wanted to use it against the latest production data. To achieve this, I used Oracle 11g’s Recovery Manager, “RMAN”, to duplicate the latest content of my production database onto a development Oracle server that I have set up to work with my development code. Let us assume that my production database name was “prodDb” residing on server “prodServer”, the database I was creating is “devDb” residing on “devServer”.
First, I needed to create some directories on devServer.
mkdir -p /u01/app/oracle/admin/devDb/adump mkdir -p /u01/app/oracle/flash_recovery_area/devDb mkdir -p /u01/oradata/devDb
Then, on devServer, I used the scp command to copy the prodServer password file to devServer.
scp prodServer:/u01/app/oracle/product/ver_no/db_1/dbs/orapwproddb $ORACLE_HOME/dbs/.
Next, I created a dummy init file so we can mount this empty devDb database.
echo 'DB_NAME=devDb' > $ORACLE_HOME/dbs/initdevDb.ora echo 'control_files=(/u01/oradata/devDb/control01.ctl,/u01/oradata/devDb/control02.ctl,/u01/oradata/devDb/control03.ctl)' >> $ORACLE_HOME/dbs/initdevDb.ora
I mounted devDb, then restarted the listener.
(From terminal prompt, log in to SQL*Plus as sysdba) sqlplus /nolog conn / as sysdba (SQL*Plus command to mount database) startup nomount pfile=$ORACLE_HOME/dbs/initdevDb.ora; exit; (Back in terminal prompt, restart the listener) lsnrctl stop lsnrctl start
My work on the devServer was then done. I moved on to the prodServer machine; from the terminal prompt of the prodServer, I started RMAN.
(From terminal prompt, run "rman")
rman
(In RMAN prompt, connect to prodDb as target, and to devDb as the auxiliary)
connect target sys@prodDb
connect auxiliary sys@devDb
(In RMAN, run the following script; you may wish to modify to suit your needs, of course)
run {
duplicate target database to devDb from active database
spfile
parameter_value_convert 'prodDb','devDb'
set db_unique_name='devDb'
set service_names='devDb.mydomain.com'
set log_file_name_convert='prodDb','devDb'
set log_archive_config=''
set fal_client=''
set fal_server=''
set log_archive_dest_1=''
set memory_max_target='1200m'
set memory_target='1200m'
set sga_max_size='800m'
set sga_target='800m'
set db_recovery_file_dest_size = '20G'
db_file_name_convert 'prodDb','devDb'
;
}
