{"id":126,"date":"2009-10-07T14:09:42","date_gmt":"2009-10-07T18:09:42","guid":{"rendered":"http:\/\/www.dev-notes.com\/blog\/2009\/10\/07\/using-oracle-rman-to-duplicate-a-database\/"},"modified":"2009-10-07T14:09:42","modified_gmt":"2009-10-07T18:09:42","slug":"using-oracle-rman-to-duplicate-a-database","status":"publish","type":"post","link":"https:\/\/www.dev-notes.com\/blog\/2009\/10\/07\/using-oracle-rman-to-duplicate-a-database\/","title":{"rendered":"Using Oracle RMAN to duplicate a database"},"content":{"rendered":"<p>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&#8217;s Recovery Manager, &#8220;RMAN&#8221;, 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 &#8220;prodDb&#8221; residing on server &#8220;prodServer&#8221;, the database I was creating is &#8220;devDb&#8221; residing on &#8220;devServer&#8221;.<\/p>\n<p>First, I needed to create some directories on devServer.<\/p>\n<pre class=\"code\">\nmkdir -p \/u01\/app\/oracle\/admin\/devDb\/adump\nmkdir -p \/u01\/app\/oracle\/flash_recovery_area\/devDb\nmkdir -p \/u01\/oradata\/devDb\n<\/pre>\n<p>Then, on devServer, I used the scp command to copy the prodServer password file to devServer.<\/p>\n<pre class=\"code\">\nscp prodServer:\/u01\/app\/oracle\/product\/ver_no\/db_1\/dbs\/orapwproddb $ORACLE_HOME\/dbs\/.\n<\/pre>\n<p>Next, I created a dummy init file so we can mount this empty devDb database.<\/p>\n<pre class=\"code\">\necho 'DB_NAME=devDb' > $ORACLE_HOME\/dbs\/initdevDb.ora\necho 'control_files=(\/u01\/oradata\/devDb\/control01.ctl,\/u01\/oradata\/devDb\/control02.ctl,\/u01\/oradata\/devDb\/control03.ctl)' >> $ORACLE_HOME\/dbs\/initdevDb.ora\n<\/pre>\n<p>I mounted devDb, then restarted the listener.<\/p>\n<pre class=\"code\">\n(From terminal prompt, log in to SQL*Plus as sysdba)\nsqlplus \/nolog\nconn \/ as sysdba\n\n(SQL*Plus command to mount database)\nstartup nomount pfile=$ORACLE_HOME\/dbs\/initdevDb.ora;\nexit;\n\n(Back in terminal prompt, restart the listener)\nlsnrctl stop\nlsnrctl start\n<\/pre>\n<p>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.<\/p>\n<pre class=\"code\">\n(From terminal prompt, run \"rman\")\nrman\n\n(In RMAN prompt, connect to prodDb as target, and to devDb as the auxiliary)\nconnect target sys@prodDb\nconnect auxiliary sys@devDb\n\n(In RMAN, run the following script; you may wish to modify to suit your needs, of course)\nrun {\n   duplicate target database to devDb from active database\n   spfile\n           parameter_value_convert 'prodDb','devDb'\n           set db_unique_name='devDb'\n           set service_names='devDb.mydomain.com'\n           set log_file_name_convert='prodDb','devDb'\n           set log_archive_config=''\n           set fal_client=''\n           set fal_server=''\n           set log_archive_dest_1=''\n           set memory_max_target='1200m'\n           set memory_target='1200m'\n           set sga_max_size='800m'\n           set sga_target='800m'\n           set db_recovery_file_dest_size = '20G'\n           db_file_name_convert 'prodDb','devDb'\n        ;\n     }\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This note illustrates how to use Oracle 11g&#8217;s RMAN utility to duplicate a database.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-126","post","type-post","status-publish","format-standard","hentry","category-oracle"],"_links":{"self":[{"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/posts\/126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/comments?post=126"}],"version-history":[{"count":0,"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/posts\/126\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/media?parent=126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/categories?post=126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-notes.com\/blog\/wp-json\/wp\/v2\/tags?post=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}