Saturday, December 22, 2018

 

Adding a New Application Tier Node to Oracle E-Business Suite R12.2

In Oracle E-Business Suite (EBS) environments, scaling out or implementing high availability often requires adding an additional application tier node. In this guide, we walk through the steps to add a new node to an existing EBS R12.2 instance, leveraging Rapid Clone and Dual File System architecture.

 Prerequisites

Before adding the node:

  • Ensure shared storage (for DB & apps) is accessible on the new host.

  • Ensure correct user (applprod) and environment setup exists.

  • Both RUN and PATCH file systems must be healthy on the primary node (omapps01).

  • Ensure WebLogic Admin Server is up and accessible.

Step 1: Run the add_filter_rule.sh Script

The add_filter_rule.sh script sets up required filter rules in the WebLogic layer before adding a node. You'll be prompted to enter the WebLogic Admin password.

applprod @ omapps01.domainname.com/home/applprod >sh add_filter_rule.sh

For details please refer log file /home/applprod/RegisterNodePreReq.log

Enter the WebLogic Server Admin Password:

add-filter-rule option executed successfully.

Step 2: Start the Admin Server on Patch File System

Before running Rapid Clone, ensure that the WebLogic Admin Server is up on the PATCH file system
This command ensures all necessary services are running and accessible from the new node for registration and cloning purposes.
applprod @ omapps01.domainname.com/omu01/app/oracle/fs1/inst/apps/OMPROD_omapps01/admin/scripts >./adadminsrvctl.sh start forcepatchfs

You are running adadminsrvctl.sh version 120.10.12020000.11

Enter the WebLogic Admin password:
Enter the APPS Schema password:
Starting WLS Admin Server...

Step 3: Run adnode.sh to Add the New Node

During execution, you’ll be prompted for:

  • APPS password

  • WebLogic AdminServer password

This initiates the Rapid Clone add-node process.  The script does the following:

  • Validates context files

  • Verifies AdminServer on RUN and PATCH FS

  • Generates new APPL_TOP context files

  • Adds node configuration for both RUN and PATCH file systems


applprod @ omapps02.domainname.com/omu01/app/oracle/fs2/EBSapps/comn/clone/bin >sh adnode.sh

                     Copyright (c) 2011, 2015 Oracle Corporation
                        Redwood Shores, California, USA

                        Oracle E-Business Suite Rapid Clone

                                 Version 12.2

                      adclonectx Version 120.30.12020000.22


Enter the APPS passwd :

Enter the Weblogic AdminServer password :

 Executing command: /omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jre/bin/java -Xmx600M -Doracle.jdbc.autoCommitSpecCompliant=false -classpath /omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/ojdbc6.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/xmlparserv2.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/java::/omu01/app/oracle/fs2/FMW_Home/wlserver_10.3/server/lib/weblogic.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/wlfullclient.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/wlclient.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/wljmxclient.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/ojmisc.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/obfuscatepassword.jar:/omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../jlib/emCfg.jar oracle.apps.ad.clone.RCloneSFSAddNode -contextfile /omu01/app/oracle/fs2/inst/apps/OMPROD_omapps01/appl/admin/OMPROD_omapps01.xml -configfile /omu01/app/oracle/pairsfiles/run/OMPROD_omapps02.txt -machinelistenaddress omapps02.domainname.com -logdir /omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../FMW/logs/sfslog -promptmsg hide
Verifying: Apps schema password
Verifying:
        pairsfile /omu01/app/oracle/pairsfiles/run/OMPROD_omapps02.txt
        Run file system AdminServer is running
        Patch file system AdminServer is running
        Run file system domain
        Patch file system domain
Executing: run clone context...

Log file located at /omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../FMW/logs/sfslog/run/RCloneSFSAddNode_12122204.log

Target System Base Directory set to /omu01/app/oracle

Target System Current File System Base set to /omu01/app/oracle/fs2

Target System Other File System Base set to /omu01/app/oracle/fs1

Target System Fusion Middleware Home set to /omu01/app/oracle/fs2/FMW_Home
Target System Other File System Fusion Middleware Home set to /omu01/app/oracle/fs1/FMW_Home

Target System Web Oracle Home set to /omu01/app/oracle/fs2/FMW_Home/webtier
Target System Other File System Web Oracle Home set to /omu01/app/oracle/fs1/FMW_Home/webtier

Target System Appl TOP set to /omu01/app/oracle/fs2/EBSapps/appl
Target System Other File System Appl TOP set to /omu01/app/oracle/fs1/EBSapps/appl

Target System COMMON TOP set to /omu01/app/oracle/fs2/EBSapps/comn
Target System Other File System COMMON TOP set to /omu01/app/oracle/fs1/EBSapps/comn

Target System Current File System Instance Top set to /omu01/app/oracle/fs2/inst/apps/OMPROD_omapps02
Report file located at /omu01/app/oracle/fs2/inst/apps/OMPROD_omapps02/admin/out/portpool.lst
The new APPL_TOP context file has been created :
  /omu01/app/oracle/fs2/inst/apps/OMPROD_omapps02/appl/admin/OMPROD_omapps02.xml
contextfile=/omu01/app/oracle/fs2/inst/apps/OMPROD_omapps02/appl/admin/OMPROD_omapps02.xml
Configuring: run fs add node...

Executing: patch clone context...

Log file located at /omu01/app/oracle/fs2/EBSapps/comn/clone/bin/../FMW/logs/sfslog/patch/RCloneSFSAddNode_12122218.log

Target System Other File System Instance Top set to /omu01/app/oracle/fs1/inst/apps/OMPROD_omapps02
Report file located at /omu01/app/oracle/fs1/inst/apps/OMPROD_omapps02/admin/out/portpool.lst
The new APPL_TOP context file has been created :
  /omu01/app/oracle/fs1/inst/apps/OMPROD_omapps02/appl/admin/OMPROD_omapps02.xml
contextfile=/omu01/app/oracle/fs1/inst/apps/OMPROD_omapps02/appl/admin/OMPROD_omapps02.xml
Configuring: patch fs add node...
-- Add node operation completed --

Node omapps02.domainname.com has been added successfully

Final Confirmation

Once the operation completes:

  • The new application tier node is registered.

  • Required configuration files are generated.

  • Both file systems (RUN and PATCH) are ready for service startup.

Conclusion

Adding a new node to your EBS 12.2 environment is a straightforward process with the adnode.sh utility. This ensures seamless integration into the dual file system setup, preparing the node for future patching and online patching activities.

By following these steps:

  • You prepare WebLogic for a new node.

  • Register and clone the environment correctly.

  • Scale your application tier for performance or HA needs.




Monday, November 12, 2018


Configuring a Standby Database Using RMAN Active Duplication

Setting up a physical standby database is critical for disaster recovery and high availability in Oracle environments. In this guide, we’ll walk through creating a standby database using RMAN Active Duplication, streaming data directly from the primary database over the network without the need for backup files.

In this exercise we  use Oracle Database, with the following configuration:

  • Primary DB: OMTSTCCB

  • Standby DB: OMDRCCB


Step 1: Enable Force Logging on the Primary

Force Logging ensures that all changes, including direct path loads, are logged in the redo logs and can be propagated to the standby database.

Enable the database with the Force logging mode.

SQL> ALTER DATABASE FORCE LOGGING;

Database altered.

Step 2: Verify Archive Log Mode


SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

Step 3: Check and Add Redo Log Groups

We need to add the standby redo logs (SRLs), which are required for the standby database to receive redo data from the primary:

Check the Log and logfile details 

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------- ----------
         1          1          4   52428800        512          1 NO  CURRENT               13738981 30-AUG-17   2.8147E+14                    0
         2          1          2   52428800        512          1 YES ACTIVE                13738966 30-AUG-17     13738976 30-AUG-17          0
         3          1          3   52428800        512          1 YES ACTIVE                13738976 30-AUG-17     13738981 30-AUG-17          0

SQL>

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                             IS_     CON_ID
---------- ------- ------- -------------------------------------------------- --- ----------
         3         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo03.log        NO           0
         2         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo02.log        NO           0
         1         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo01.log        NO           0


Add the Stand by redo log in the Primary 

SQL> alter database add standby logfile '/u03/app/oracle/oradata/OMTSTCCB/redost01.log' size 512M;

Database altered.

SQL> alter database add standby logfile '/u03/app/oracle/oradata/OMTSTCCB/redost02.log' size 512M;

Database altered.

SQL> alter database add standby logfile '/u03/app/oracle/oradata/OMTSTCCB/redost03.log' size 512M;

Database altered.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                             IS_     CON_ID
---------- ------- ------- -------------------------------------------------- --- ----------
         3         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo03.log        NO           0
         2         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo02.log        NO           0
         1         ONLINE  /u03/app/oracle/oradata/OMTSTCCB/redo01.log        NO           0
         4         STANDBY /u03/app/oracle/oradata/OMTSTCCB/redost01.log      NO           0
         5         STANDBY /u03/app/oracle/oradata/OMTSTCCB/redost02.log      NO           0
         6         STANDBY /u03/app/oracle/oradata/OMTSTCCB/redost03.log      NO           0

6 rows selected.

SQL>

We are able to see the standby log file in the Primary that we had added 
=========

 Step 4: Duplicate the Database Using RMAN (Active Duplication)

Switch to the standby server and run RMAN with the following command:

From the stand by database after starting the instance in no mount state execute the command 

RMAN> duplicate target database for standby from active database nofilenamecheck;


Starting Duplicate Db at 03-SEP-17
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=3763 device type=DISK

contents of Memory Script:
{
   backup as copy reuse
   targetfile  '/u03/app/oracle/product/12.1.0/dbhome_1/dbs/orapwOMTSTCCB' auxiliary format
 '/u03/app/oracle/product/12.1.0/dbhome_1/dbs/orapwOMDRCCB'   ;
}
executing Memory Script

Starting backup at 03-SEP-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=381 device type=DISK
Finished backup at 03-SEP-17

contents of Memory Script:
{
   restore clone from service  'OMTSTCCB' standby controlfile;
}
executing Memory Script

Starting restore at 03-SEP-17
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/u03/app/oracle/oradata/OMDRCCB/control01.ctl
Finished restore at 03-SEP-17

contents of Memory Script:
{
   sql clone 'alter database mount standby database';
}
executing Memory Script

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u03/app/oracle/oradata/OMDRCCB/temp01.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to
 "/u03/app/oracle/oradata/OMDRCCB/system01.dbf";
   set newname for datafile  2 to
 "/u03/app/oracle/oradata/OMDRCCB/cists01.dbf";
   set newname for datafile  3 to
 "/u03/app/oracle/oradata/OMDRCCB/sysaux01.dbf";
   set newname for datafile  4 to
 "/u03/app/oracle/oradata/OMDRCCB/undotbs01.dbf";
   set newname for datafile  6 to
 "/u03/app/oracle/oradata/OMDRCCB/users01.dbf";
   restore
   from service  'OMTSTCCB'   clone database
   ;
   sql 'alter system archive log current';
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /u03/app/oracle/oradata/OMDRCCB/temp01.dbf in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 03-SEP-17
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u03/app/oracle/oradata/OMDRCCB/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00002 to /u03/app/oracle/oradata/OMDRCCB/cists01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u03/app/oracle/oradata/OMDRCCB/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:05:05
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u03/app/oracle/oradata/OMDRCCB/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service OMTSTCCB
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /u03/app/oracle/oradata/OMDRCCB/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 03-SEP-17

sql statement: alter system archive log current

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=953735223 file name=/u03/app/oracle/oradata/OMDRCCB/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=953735223 file name=/u03/app/oracle/oradata/OMDRCCB/cists01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=953735223 file name=/u03/app/oracle/oradata/OMDRCCB/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=953735223 file name=/u03/app/oracle/oradata/OMDRCCB/undotbs01.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=9 STAMP=953735223 file name=/u03/app/oracle/oradata/OMDRCCB/users01.dbf
Finished Duplicate Db at 03-SEP-17

RMAN> exit

As Rman does all the manual task like as below  
  1. Copies the password file

  2. Restores the standby control file from the primary

  3. Mounts the standby database

  4. Restores all datafiles via network from primary

  5. Switches to the restored datafile copies

  6. Archives the current log on the primary

All operations are logged with elapsed time, making it easy to monitor the progress and performance.

Final Result

After RMAN finishes the duplication, the standby database (OMDRCCB) is mounted and ready to start managed recovery. This standby is a real-time copy of the primary and can now be integrated into your Data Guard configuration for high availability and disaster recovery.

Notes

NOFILENAMECHECK is used when the primary and standby databases reside on the same storage layout

Ensure the listener and TNS are properly configured for the service names (OMTSTCCB and OMDRCCB).

The Data Guard broker or manual setup can be used to manage log shipping and role transitions after this step.


Conclusion

Using RMAN Active Duplication simplifies the creation of a physical standby by eliminating the need for manual backups or file copies. With just a few steps, a fully functional standby can be created directly from the primary database, making your DR setup faster and more reliable.