
{"id":8024,"date":"2019-01-24T09:31:26","date_gmt":"2019-01-24T09:31:26","guid":{"rendered":"https:\/\/rax-stg-wp-aws.com\/blogs\/oracle-ebs-applications-for-disaster-recovery\/"},"modified":"2026-11-03T19:29:13","modified_gmt":"2026-11-03T19:29:13","slug":"oracle-ebs-applications-for-disaster-recovery","status":"publish","type":"blogs","link":"https:\/\/www.rackspace.com\/en-gb\/blogs\/oracle-ebs-applications-for-disaster-recovery\/","title":{"rendered":"Oracle EBS applications for disaster recovery"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p>The steps to create a DR application site are similar to the ones used to create&nbsp;a clone system. In case of a disaster, you need to make a few changes to XML&nbsp;files, such as host names, and the system will be ready to run. To keep the&nbsp;system in sync, run any synchronizing scripts, such as`<em>rsync<\/em>`, which update the DR&nbsp;site with any changes. Apply patches to the DR DB databases as well as to the&nbsp;DR site application nodes.<\/p>\n<p>In the following steps, notice that the physical standby database is already&nbsp;configured with the primary database server and that they both are in sync.<\/p>\n<p><strong>DR configuration steps<\/strong><\/p>\n<p>This article explores the following high-level steps to configure the DR system:<\/p>\n<p>1.&nbsp;&nbsp; &nbsp;Disable archiving and convert the DR system from <em>physical standby<\/em>&nbsp;mode to&nbsp;snapshot standby mode.<br \/>\n2. Copy the applications from the primary site to the DR site by running&nbsp;<em>preclone<\/em>.<br \/>\n3.&nbsp;&nbsp; &nbsp;Configure node1 with <em>dualfs<\/em>.<br \/>\n4.&nbsp;&nbsp; &nbsp;Add extra nodes to match the PROD site.<br \/>\n5. Check the services by starting &nbsp;and shutting down node1.<br \/>\n6.&nbsp;&nbsp; &nbsp;Set the DR system back to physical standby mode after the applications<br \/>\n&nbsp; &nbsp;DR is set up.<\/p>\n<p><strong>1. Set the DR system to snapshot standby mode&nbsp;<\/strong><\/p>\n<p>Run the following code to disable log apply and set the DR database to standby&nbsp;snapshot mode:<\/p>\n<p>&nbsp; <em>&nbsp; $ dgmgrl \/<br \/>\n&nbsp; &nbsp; $ edit database &#8220;TESTDR&#8221; set state=apply-off;<\/em><\/p>\n<p>Run the following code to configure the standby database to use flashback<br \/>\nlogging for flashback database operations:<\/p>\n<p><em>&nbsp;SQL&gt; alter system set db_recovery_file_dest_size=1000G scope=both;<br \/>\n&nbsp; &nbsp; SQL&gt; alter system set db_recovery_file_dest=&#8217;+FRA&#8217; scope=both;<br \/>\n&nbsp; &nbsp; SQL&gt; alter system set db_flashback_retention_target=1440 scope=both;<\/em><\/p>\n<p><em>&nbsp; &nbsp; $ Shutdown node2 DR DB<br \/>\n&nbsp; &nbsp; $ sqlplus &#8216;\/as sysdba&#8217;<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; shutdown immediate;<\/em><br \/>\n&nbsp;<\/p>\n<p>Run the following code on node1 of the DR DB:<\/p>\n<p><em>&nbsp; &nbsp; $ sqlplus &#8216;\/as sysdba&#8217;<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; shutdown immediate;<\/em><\/p>\n<p>&nbsp; <em>&nbsp; SQL&gt; startup mount;<br \/>\n&nbsp; &nbsp; SQL&gt; alter database convert to snapshot standby;<br \/>\n&nbsp; &nbsp; SQL&gt; alter database open;<br \/>\n&nbsp; &nbsp; SQL&gt; select name, DB_UNIQUE_NAME, OPEN_MODE, DATABASE_ROLE from v$database;<\/em><\/p>\n<p><em>&nbsp; &nbsp; NAME &nbsp; &nbsp; &nbsp;DB_UNIQUE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OPEN_MODE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATABASE_ROLE<br \/>\n&nbsp; &nbsp; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n&nbsp; &nbsp; TESTPRD &nbsp;TESTDR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;READ ONLY WITH APPLY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SNAPSHOT STANDBY<\/em><\/p>\n<p><strong>Run the following code to startup node2 of the DR DB in mount mode:<\/strong><\/p>\n<p><em>&nbsp; &nbsp; $ sqlplus &#8216;\/as sysdba&#8217;<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; startup &nbsp;mount;<\/em><\/p>\n<p>Run the following code to clean up the <em>`fnd_nodes`<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; exec fnd_conc_clone.setup_clean;<br \/>\n&nbsp; &nbsp; SQL&gt; exec ad_zd_fixer.clear_valid_nodes_info;:<\/em><\/p>\n<p><strong>Run the following code to startup node2 of the DR DB in mount mode:<\/strong><\/p>\n<p><em>&nbsp; $ sqlplus &#8216;\/as sysdba&#8217;<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; startup &nbsp;mount;<\/em><\/p>\n<p><strong>&nbsp;2. Run preclone and clean up fnd_nodes<\/strong><\/p>\n<p>Run the following code to clean up the <em>fnd_nodes<\/em><\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; exec fnd_conc_clone.setup_clean;<br \/>\n&nbsp; &nbsp; SQL&gt; exec ad_zd_fixer.clear_valid_nodes_info;<\/em><\/p>\n<p>Run <strong>auto-config<\/strong>&nbsp;on the DR DB nodes in the following sequence: node1, node2,&nbsp;node1.<\/p>\n<p>Run `<em>preclone<\/em>` on the PROD applications tier and copy the applications files&nbsp;from the RUN file system (FS) node1 to the corresponding DR applications tier&nbsp;node1 FS.<\/p>\n<p><strong>&nbsp;3. Run dualfs<\/strong><\/p>\n<p>On the node1 DR applications tier, browse to the FS and run the following code:<\/p>\n<p><em>&nbsp; &nbsp; $ perl adcfgclone.pl appsTier dualfs from &lt;APPL_BASE&gt;\/&lt;SID&gt;\/apps\/&lt;RUN-FS&gt;\/EBSapps\/comn\/clone\/bin<\/em><\/p>\n<p>If you see the following prompt, the `<em>adcfgclone<\/em>` completed successfully and&nbsp;you can ignore any autoconfiguration errors:<\/p>\n<p>&nbsp; &nbsp; Do you want to startup the Application Services for? (y\/n) [n] :<\/p>\n<p><strong>&nbsp;4. Add nodes to match the PROD site<\/strong><\/p>\n<p>On each applications node, copy the `<em>env<\/em>` files from PROD to the equivalent&nbsp;DR nodes. &nbsp;Run the following code, making any required directory or file name&nbsp;changes:<\/p>\n<p><em>&nbsp; &nbsp; $ scp prodnode1:\/home\/applmgr\/prodprd.env \/home\/applmgr\/proddr.env<br \/>\n&nbsp; &nbsp; $ scp prodnode1:\/home\/applmgr\/prodprd_run.env \/home\/applmgr\/proddr_run.env<br \/>\n&nbsp; &nbsp; $ scp prodnode1:\/home\/applmgr\/prodprd_patch.env \/home\/applmgr\/proddr_patch.env<\/em><\/p>\n<p>Repeat the preceding commands for all other nodes.<\/p>\n<p>Source `<em>env<\/em>` and run `<em>auto-config<\/em>` for RUN and PATCH FS. The following example<br \/>\nshows the expected results:<\/p>\n<p>\n&nbsp; &nbsp; Configuring OZF_TOP&#8230;&#8230;.COMPLETED<br \/>\n&nbsp; &nbsp; Configuring CSD_TOP&#8230;&#8230;.COMPLETED<br \/>\n&nbsp; &nbsp; Configuring IGC_TOP&#8230;&#8230;.COMPLETED<\/p>\n<p>&nbsp; &nbsp; AutoConfig completed successfully.<\/p>\n<p>&nbsp; &nbsp; Configuring OZF_TOP&#8230;&#8230;.COMPLETED<br \/>\n&nbsp; &nbsp; Configuring CSD_TOP&#8230;&#8230;.COMPLETED<br \/>\n&nbsp; &nbsp; Configuring IGC_TOP&#8230;&#8230;.COMPLETED<\/p>\n<p>&nbsp; &nbsp; AutoConfig completed with errors.<\/p>\n<p><strong>Note:<\/strong> Ignore any PATCH FS errors.<\/p>\n<p><strong>&nbsp;5. Test<\/strong><\/p>\n<p>Run the following code to test the configuration by cycling the first node:<\/p>\n<p><em>&nbsp; &nbsp; $ . .\/proddr.env<br \/>\n&nbsp; &nbsp; $ cd $ADMIN_SCRIPTS_HOME<br \/>\n&nbsp; &nbsp; $ .\/adstrtal.sh apps\/&lt;passwd&gt;<\/em><\/p>\n<p>Run the following code to check the URL, login, and shutdown applications:<\/p>\n<p><em>&nbsp; &nbsp; $ cd $ADMIN_SCRIPTS_HOME<br \/>\n&nbsp; &nbsp; $ .\/adstpall.sh apps\/&lt;passwd&gt;<\/em><br \/>\nSimilar to the normal cloning process, add additional nodes to match the&nbsp;PROD infrastructure. Run `<em>preclone<\/em>` on the target node1, RUN, and PATCH FS.<br \/>\nThen, add nodes. Start the admin server services for RUN and PATCH FS and run&nbsp;`<em>preclone<\/em>` as shown in the following code:<\/p>\n<p><em>&nbsp; $ . ~\/testdr.env<br \/>\n&nbsp; &nbsp; $ cd $ADMIN_SCRIPTS_HOME<br \/>\n&nbsp; &nbsp; $ .\/adpreclone.pl appsTier<br \/>\n&nbsp; &nbsp; $ . ~\/testdr_patch.env<br \/>\n&nbsp; &nbsp; $ cd $ADMIN_SCRIPTS_HOME<br \/>\n&nbsp; &nbsp; $ .\/adpreclone.pl appsTier<br \/>\n&nbsp; &nbsp; $ cd &nbsp;&lt;RUN_FS_TOP&gt;\/EBSapps\/comn\/clone\/bin<br \/>\n&nbsp; &nbsp; $.\/adclonectx.pl addnode contextfile=&lt;NODE1_RUNFS_CONTEXT.xml&gt; pairsfile=\/common_area\/applcsf\/testprd\/pairsfile\/mypairsfile.txt<br \/>\n&nbsp; &nbsp; dualfs=yes<\/em><\/p>\n<p>Run the following code to configure node2:<\/p>\n<p><em>$ cd &nbsp;&lt;RUN_FS_TOP&gt;\/EBSapps\/comn\/clone\/bin<br \/>\n&nbsp; &nbsp; $ .\/adclonectx.pl addnode contextfile=&lt;NODE1_RUNFS_CONTEXT.xml&gt; pairsfile=\/common_area\/applcsf\/testprd\/pairsfile\/mypairsfile.txt<br \/>\n&nbsp; &nbsp; dualfs=yes<br \/>\n&nbsp; &nbsp; $ perl $FND_TOP\/patch\/115\/bin\/txkSetAppsConf.pl \\<br \/>\n&nbsp; &nbsp; &nbsp; -contextfile=&lt;RUN-FS-CONTEXT.xml \\<br \/>\n&nbsp; &nbsp; &nbsp; -configoption=addMS \\<br \/>\n&nbsp; &nbsp; &nbsp; -oacore=testdr2.sherwin.com:&lt;port&gt; \\<br \/>\n&nbsp; &nbsp; &nbsp; -oafm=testdr2.sherwin.com:&lt;port&gt; \\<br \/>\n&nbsp; &nbsp; &nbsp; -forms=testdr2.sherwin.com:&lt;port&gt; \\<br \/>\n&nbsp; &nbsp; &nbsp; -formsc4ws=testdr2.sherwin.com:&lt;port&gt; &nbsp; &nbsp;&#8212; All ports information is available in context file.<\/em><\/p>\n<p>Similarly, add other nodes or external tiers to match the PROD system.<\/p>\n<p><strong>&nbsp;6. Convert the DR system to physical standby mode<\/strong><\/p>\n<p>After you add all the nodes, shut down all services down on the DR&nbsp;system, convert the DR DB back to physical standby mode, and set dataguard&nbsp;to `<em>ON<\/em>`.<\/p>\n<p>Run the following code to shut down services on the DR DB, startup the mount,&nbsp;and convert the DR DR to physical standby mode:<\/p>\n<p><em>&nbsp; &nbsp; SQL&gt; alter database convert to physical standby;<br \/>\n&nbsp; &nbsp; DGMGRL&gt; edit database &#8220;TESTDR&#8221; set state=apply-on;<\/em><\/p>\n<p>Validate the synchronization. &nbsp;You should expect to see results similar to the<br \/>\nfollowing example:<\/p>\n<p><strong>Monitor to see Transport Lag and Apply Lag to be:<\/strong><br \/>\n&nbsp; &nbsp; Transport Lag: &nbsp; &nbsp; &nbsp;0 seconds (computed 0 seconds ago)<br \/>\n&nbsp; &nbsp; &nbsp;Apply Lag: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 seconds (computed 0 seconds ago)<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>This blog describes how to prepare for a disaster on EBS applications with a&nbsp;validated DR site. After updating a few parameters in the context file, the&nbsp;system is up and running. You don&#8217;t need to maintain a backup of all the&nbsp;application systems and then restore the systems from the backup. You might want&nbsp;to set up <em>rsync<\/em>&nbsp;processes between the PROD and DR sites and apply DB and AD Online Patching (ADOP) patches to the DR site at the same time that you apply them to the PROD site.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle EBS applications for disaster recovery<\/p>\n","protected":false},"author":2,"featured_media":8026,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"content-type":"","nid":"26580","content_type":"blog","created_by":"10130","authored_on":"2024-02-06T09:31:26+00:00","field_article_industries":"","tag_category":"Technical","field_blog_author_text":"by Ajay Sharma, Application Database Administrator, Rackspace Technology","seo_description":"Understand the storage index feature of Oracle Exadata. Boost database performance with storage indexes.\r\n","field_featured_image":"","insights_image":"\/wp-content\/uploads\/2026\/blog_technical_images\/26580-insights_image-oracle-technical-blog-1-insights.jpg","field_partners":"","rxt_platforms":"Oracle, Oracle E-Business Suite","product":"","publisheddate":"2019-01-24T09:31:26","rxt_solutions":"Rackspace Elastic Engineering, Applications","opengraph_tag":"","x_tag":"","teaser_flag":"Technical Blog","seo_titile":"Oracle EBS applications for disaster recovery | Rackspace Technology","field_topics":"","field_slug":"Oracle-EBS-applications-disaster-recovery","footnotes":""},"categories":[178],"tags":[204],"class_list":["post-8024","blogs","type-blogs","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-technical"],"_links":{"self":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs"}],"about":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/types\/blogs"}],"author":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/comments?post=8024"}],"version-history":[{"count":1,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8024\/revisions"}],"predecessor-version":[{"id":8025,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8024\/revisions\/8025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media\/8026"}],"wp:attachment":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media?parent=8024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/categories?post=8024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/tags?post=8024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}