Wednesday, September 29, 2021

Apply R12.2 patch using ADOP

Adop downtime mode does not start an online patching cycle. It applies a patch to RUN file system and completes more quickly than in online mode, but at the cost of increased system downtime. There is no option to abort a failed patch and return to the existing RUN filesystem in downtime mode.

"hotpatch=yes" means while applying the patches, applications services are up and running. Same like hotpatch in R12.1 adpatch. It applies patch to RUN filesystem directly as well. Next time, when Online Patching mode is used, first run the "adop phase=prepare" command. At that time, adop config change detector will find that the RUN filesystem has had patches applied in hotpatch mode and will sync the PATCH filesystem as part of the prepare phase (Doc ID 1928798.1). Oracle support engineer says never try with hotpatch mode unless it is specified in the patch readme or any document. For example applying 33600809 (R12.AD.C.Delta.14) in hotpatch mode will fail and cause problem.

1. Pre steps

To make sure ADOP works on a multi-node instance, run "adop -validate" first, which includes execution of below line:
$ perl $AD_TOP/patch/115/bin/txkRunSSHSetup.pl verifyssh -contextfile=$CONTEXT_FILE -hosts=2nd_node

$ vi /etc/oraInst.loc
$ adop -validate
... ...
========================================
ADOP (C.Delta.12)
Node: master_node
Command: validate
Log: $NE_BASE/EBSapps/log/adop/16/.../validate/adopConsole.log
========================================
Checking for existing patching cycle.
    No existing patching cycle exists

Verifying SSH connection to all nodes.
    Log: $LOG_HOME/appl/rgf/TXK/verifyssh.log
    Output: $LOG_HOME/appl/rgf/TXK/out.xml
    Remote execution is operational.

Running adop validations on Admin node: [master_node].
    Log: master_node:$NE_BASE/EBSapps/log/adop/.../validate/master_node
    Output: $NE_BASE/EBSapps/log/adop/.../validate/remote_execution_result_level1.xml
        txkADOPEvalSrvStatus.pl returned SUCCESS
Running adop validations on node(s): [2nd_node and ].
    Output: $NE_BASE/EBSapps/log/adop/.../validate/remote_execution_result_level2.xml
        txkADOPEvalSrvStatus.pl returned SUCCESS
adop exiting with status = 0 (Success)

NOTES: it will starts WLS Admin server

$ adop -status

Enter the APPS password:
Connected.
=======================================================
ADOP (C.Delta.12)
Session Id: 16
Command: status
Output: $NE_BASE/EBSapps/log/adop/.../adzdshowstatus.out
=======================================================
Node Name       Node Type  Phase           Status          Started              Finished             Elapsed
--------------- ---------- --------------- --------------- -------------------- -------------------- ------------
Master_node    master   APPLY           ACTIVE         2021/0X/02 17:53:08  2021/0X/09 15:04:17  65:11:09
                                      CLEANUP     NOT STARTED
2nd_node         slave     APPLY           ACTIVE         2021/0X/02 18:22:12  2021/0X/09 15:22:16  65:00:04
                                      CLEANUP     NOT STARTED

File System Synchronization Type: None
adop exiting with status = 0 (Success)

2. Apply patch to multiple nodes in one command line

Below line on Master node shall apply AP patch 32385168, for example, to all nodes even $APPL_TOP file structure is not shared:

$ echo $FILE_EDITION
run
$ cd $PATCH_TOP
$ unzip p32385168_R12.AP.C_R12_GENERIC.zip
NOTES: Copy and run "unzip p32385168_R12.AP.C_R12_GENERIC.zip" on each node to avoid ADOP failure on the node.
     
$ adop phase=apply apply_mode=downtime patches=32385168 patchtop=/path/to/$PATCH_TOP
... ...
===========================================================
ADOP (C.Delta.12)
Session ID: 16
Node: master_node
Phase: apply
Log: $NE_BASE/EBSapps/log/adop/16/2021xxxx_142226/adop.log
============================================================
Verifying existence of context files in database.
Checking for failed nodes in the configuration.

Checking if adop can continue with available nodes in the configuration.
    Log: $NE_BASE/EBSapps/log/adop/16/.../apply/master_node
        txkADOPEvalSrvStatus.pl returned SUCCESS

Applying <32385168> patch(es) on admin node: [master_node].
    Output: $NE_BASE/EBSapps/log/adop/16/.../apply/remote_execution_result_level1.xml
    Log: $NE_BASE/EBSapps/log/adop/16/.../apply/master_node
        txkADOPEvalSrvStatus.pl returned SUCCESS

Applying <32385168> patch(es) on node(s): [2nd_node].
Running in Serial
    Output: $NE_BASE/EBSapps/log/adop/16/.../apply/remote_execution_result_level2.xml
    Log: $NE_BASE/EBSapps/log/adop/16/.../apply/master_node
        txkADOPEvalSrvStatus.pl returned SUCCESS
Summary report for current adop session:
     Node 2nd_node: Completed successfully
          - Apply status: Completed successfully
     Node master_node: Completed successfully
          - Apply status: Completed successfully
     For more details, run the command: adop -status -detail

Use SQL statement to confirm the patch was just applied to ALL nodes:
SQL> select ADOP_SESSION_ID, BUG_NUMBER, STATUS, APPLIED_FILE_SYSTEM_BASE, ADPATCH_OPTIONS, round((end_date-start_date)*24*60, 1) EXEC_TIME, AUTOCONFIG_STATUS,  DRIVER_FILE_NAME, NODE_NAME, END_DATE, CLONE_STATUS
from ad_adop_session_patches
order by end_date desc;

Seems specifying "patchtop=" is important. Otherwise, ADOP may fail on applying the patch to remote node. 

If patch's folder (from .zip file) did not exist in $PATCH_TOP of 2nd node or the patch was applied already, ADOP may give misleading error:
    [ERROR]     adop phase=apply failed on Node: "2nd_node"
    Log: $NE_BASE/EBSapps/log/adop/.../apply/2nd_node
        --------------------------------
        Summary of unavailable services:
        --------------------------------
        Group Name:
                Batch Processing Services
        Individual Services enabled in the group:
                OracleTNSListenerAPPS_EBSDEV_2nd_node
                OracleConcMgrEBSDEV_2nd_node
                Oracle Fulfillment Server EBSDEV_2nd_node

After this failure, SQL statement shows the patch was applied to just one node. After made a fix, I applied it to 2nd node only (with allnodes=no action=nodb options). 

In a situation, the patch failed on one of three nodes (but, the SQL may show it was not applied to any node).
    Summary report for current adop session:
          Node node1Name: Completed successfully
                - Apply status:      Completed successfully
          Node node2Name: Completed successfully
               - Apply status:      Completed successfully
          Node node3Name: Failed
               - Apply status:      Failed
         For more details, run the command: adop -status -detail
I ran "adop phase=apply apply_mode=downtime patches=33xxxxxx patchtop=$NE_BASE/EBSapps/patch restart=yes" on Master node to re-apply it.  adop will figure out and only apply the patch to Failed node node3Name.

Because patch can be applied to multiple nodes by one command line, I believe "passwordless ssh" setups are good between nodes in my multi-node instance. But somehow when I tried to set ssh up by running Oracle script, I always got errors (which I ignored):

$ perl $AD_TOP/patch/115/bin/txkRunSSHSetup.pl enablessh -contextfile=$CONTEXT_FILE -hosts=master_node,2nd_node
Enter SSH User password for the OS user applmgr:
Log: $LOG_HOME/appl/rgf/TXK/enablessh.log

Error in setting up ssh equivalence
FAILED: enableSSH

SEVERE: com.jcraft.jsch.JSchException: Algorithm negotiation fail
at com.jcraft.jsch.Session.receive_kexinit(Session.java:510)
at com.jcraft.jsch.Session.connect(Session.java:285)
at com.jcraft.jsch.Session.connect(Session.java:149)
at oracle.sysman.prov.ssh.RunCommand.runCommand(RunCommand.java:134)
at oracle.sysman.prov.ssh.SSHSetup.runCommandHelper(SSHSetup.java:2350)
at oracle.sysman.prov.ssh.SSHSetup.validateRemoteScp(SSHSetup.java:643)
at oracle.sysman.prov.ssh.SSHConnectivity.startSetup(SSHConnectivity.java:201)
at oracle.sysman.prov.ssh.SSHConnectivity.main(SSHConnectivity.java:360)
... ...
I am not sure what is the real problem or the root cause. It may be because the instance is in non-shared $APPL_TOP (s_shared_file_system => false).

3.  Apply patches on each node separately. I used below steps to apply two AP patches to two nodes.

On Master node: 

$ echo $FILE_EDITION
run
$ cd $PATCH_TOP
$ unzip p32768426_R12.AP.C_R12_GENERIC.zip
$ unzip p31211521_R12.AP.C_R12_GENERIC.zip
$ adop phase=apply apply_mode=downtime patches=32768426,31211521 allnodes=no action=db

(if it failed in somewhere, you have to fix the error and then try it again by command:
$ adop phase=apply apply_mode=downtime patches=32768426,31211521 allnodes=no action=db restart=yes)

On 2nd node:

$ cd $PATCH_TOP
$ adop phase=apply apply_mode=downtime patches=32768426,31211521 allnodes=no action=nodb
(Or, line also works: $ adop phase=apply apply_mode=downtime patches=32768426,31211521 allnodes=no action=nodb options=nocompiledb,nocompilejsp,nogenerateportion )
... ...
Applying patch 32768426.
    Log: /path/to/2nd_node/32768426/log/u32768426.log
Applying patch 31211521.
    Log: /path/to/2nd_node/31211521/log/u31211521.log

Generating post apply reports.
Generating log report.
    Output: /path/to/2nd_node/adzdshowlog.out

The apply phase completed successfully.
adop exiting with status = 0 (Success)

Then, SQL statement verifies patches were applied to both nodes.

4.  If you have to apply R12.2 patches online (or without "downtime") mode to multi-node instance and you have to run ADOP separately, more picky steps and more time are needed:

PREPARE Phase: Run this on both the servers
==================================
on Master Node:  $ adop phase=prepare allnodes=no action=db 
on 2nd Node:       $ adop phase=prepare allnodes=no action=nodb

Apply Phase: Run this on both the servers
=================================
on Master Node:  $ adop phase=apply patches=<Patch Number> allnodes=no action=db 
on 2nd Node:       $ adop phase=apply patches=<Patch Number> allnodes=no action=nodb options=nocompiledb,nocompilejsp,nogenerateportion 

Finalize:  Run only on Master node
==================================
$ adop phase=finalize allnodes=no action=db

Cutover: Run this on both the servers
==================================
on Master Node:  $ adop phase=cutover allnodes=no action=db mtrestart=no
Notes: You will see the some comments saying that it is waiting for the second node, then you need to run the adop command on the second node then only it will complete the cutover session.
on 2nd Node:       $ adop phase=cutover allnodes=no action=nodb mtrestart=no

Before running cleanup command/phase, start a new OS session or source the environment variable on the Primary server and then run the below cleanup command.

Cleanup: Run on Master node
================================
$ adop phase=cleanup cleanup_mode=full

Thursday, September 23, 2021

Start and Stop R12.2 services and their logs

EBS R12.2 scripts have more options to start and stop its services

1.  Start /stop services on all nodes by running command on Master node:

First, use below line to check if it is a Master node:
$ grep s_adminserverstatus $CONTEXT_FILE
            <oa_service_status oa_var="s_adminserverstatus">enabled</oa_service_status>

$ { echo apps ; echo appsPWD ; echo wlsPWD ; } | adstpall.sh @ -mode=allnodes -nopromptmsg
... ... 
All enabled services for this node are started.
adstrtal.sh: Exiting with status 0
adstrtal.sh: check the logfile $LOG_HOME/appl/admin/log/adstrtal.log for more information ...

or 
$ ./adstrtal.sh apps/appsPWD -mode=allnodes

You are running adstrtal.sh version 120.24.12020000.11

Enter the WebLogic Server password: 
Running command in node node_name
All enabled services for this node are started.

adstrtal.sh: Exiting with status 0
adstrtal.sh: check the logfile $LOG_HOME/appl/admin/log/adstrtal.log for more information ...

$ adstpall.sh apps/appsPWD -mode=allnodes

You are running adstpall.sh version 120.22.12020000.7

Enter the WebLogic Server password:
Running command in node node_name
Running command in node node_name
All enabled services on this node are stopped.

adstpall.sh:Exiting with status 0
adstpall.sh: check the logfile $LOG_HOME/appl/admin/log/adstpall.log for more information ...

2. Start services on any one node (Doc ID 1902776.1):

{ echo apps ; echo appsPWD ; echo wlsPWD ; } | adstpall.sh @ -nopromptmsg

You may have to start app service on Master node first to avoid errors:
ERROR: Skipping startup of oacore_server1 since the AdminServer is down. AdminServer needs to be up before starting/stopping the managed servers.
Doc ID 2053781.1 (R12.2. Adadminsrvctl.sh Failed to Start WLS Adminserver When Using -secureapps Option)

3. Quicker stop (and so, quicker start)

./adstpall.sh apps/appsPWD -skipNM -skipAdmin

For help:
$ ./adstpall.sh -help
$ ./adstrtal.sh -help

4. Start services on Secondary node (when Primary node is not fully up)

{ echo apps ; echo appsPWD ; echo wlsPWD ; } | adstrtal.sh @ -msimode -nopromptmsg

Using -msimode option to avoid error 
ERROR: Skipping startup of oacore_server2 since the AdminServer is down. AdminServer needs to be up before starting/stopping the managed servers.
Doc ID 2052792.1 (EBS 12.2 Service Startup On Secondary Node Fails When Primary Node is Down)

5. For troubleshooting, start/stop individual component

For example, if login page is not up and available,  run

$ adopmnctl.sh status

You are running adopmnctl.sh version 120.0.12020000.2
Checking status of OPMN managed processes...
Processes in Instance: EBS_web_OHS1
---------------------------------------+--------------------+---------+---------
ias-component                     | process-type       |     pid    | status
---------------------------------------+--------------------+---------+---------
EBS_web                             | OHS                    |   30358 | NONE

It reads file in $IAS_ORACLE_HOME/instances/EBS_web_OHS1/config/OHS/EBS_web

To start Apache, run 
$ ./adapcctl.sh start

Timeout specified in context file: 100 second(s)
script returned:
****************************************************
You are running adapcctl.sh version 120.0.12020000.6
Starting OPMN managed Oracle HTTP Server (OHS) instance ...
adapcctl.sh: exiting with status 0
adapcctl.sh: check the logfile $LOG_HOME/adapcctl.txt for more information ...

In R12,2, Opmn only manages the Apache server.
WLS (Weblogic server) manages the oacore, forms and oafm services. To check a component's status:

$ sh $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh status oacore_server1
You are running admanagedsrvctl.sh version 120.14.12020000.12
Enter the WebLogic Admin password:
oacore_server1 is running.
Server specific logs are located at $FMW_HOME/user_projects/domains/...

$ sh $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh status oafm_server1
You are running admanagedsrvctl.sh version 120.14.12020000.12
Enter the WebLogic Admin password:
oafm_server1 is running.

Command                                          (Component)

$ adnodemgrctl.sh start                         (Node Manager)
$ adadminsrvctl.sh start                         (Weblogic Admin Server only on Primary node)
$ adalnctl.sh start                                       (Application Listener)
$ adopmnctl.sh start                                   (Oracle Process Manager)
$ adapcctl.sh start                                       (Apache Services)
$ admanagedsrvctl.sh start oacore_server1  (Managed Server for OACORE Services)
$ admanagedsrvctl.sh start forms_server1   (Managed Server for FormsServices)
$ admanagedsrvctl.sh start oafm_server1   (Managed Server for Fusion MiddleWare Services)
$ admanagedsrvctl.sh start forms-c4ws_server1  (Managed Server for Forms web Services)
$ adcmctl.sh start apps/apps                                (Concurrent Manager Service)
$ jtffmctl.sh start                                                  (Fullfillment Serer Services)

6. Log files

./adstrtal.sh 

You are running adstrtal.sh version 120.24.12020000.11
Enter the APPS username: apps
Enter the APPS password:
Enter the WebLogic Server password:
The logfile for this session is located at $INST_TOP/logs/appl/admin/log/adstrtal.log

Executing service control script: $INST_TOP/admin/scripts/jtffmctl.sh start
Timeout specified in context file: 100 second(s)
script returned:
*************************
You are running jtffmctl.sh version 120.3.12020000.4
Validating Fulfillment patch level via $RUN_BASE/EBSapps/comn/java/classes
Fulfillment patch level validated.
Starting Fulfillment Server for $TWO_TASK on port 9341 ...
jtffmctl.sh: exiting with status 0

.end std out.
.end err out.
****************************************************

Executing service control script: $INST_TOP/admin/scripts/adopmnctl.sh start
Timeout specified in context file: 100 second(s)
script returned:
***********************
You are running adopmnctl.sh version 120.0.12020000.2
Starting Oracle Process Manager (OPMN) ...
adopmnctl.sh: exiting with status 0
adopmnctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adopmnctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $INST_TOP/admin/scripts/adapcctl.sh start
Timeout specified in context file: 100 second(s)
script returned:
************************
You are running adapcctl.sh version 120.0.12020000.6
Starting OPMN managed Oracle HTTP Server (OHS) instance ...
adapcctl.sh: exiting with status 0
adapcctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adapcctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $INST_TOP/admin/scripts/adnodemgrctl.sh start -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
***********************
You are running adnodemgrctl.sh version 120.11.12020000.12

Calling txkChkEBSDependecies.pl to perform dependency checks for ALL MANAGED SERVERS
Perl script txkChkEBSDependecies.pl got executed successfully

Starting the Node Manager...
Refer $INST_TOP/logs/appl/admin/log/adnodemgrctl.txt for details
NodeManager log is located at $FMW_HOME/wlserver_10.3/common/nodemanager/nmHome1
adnodemgrctl.sh: exiting with status 0
adnodemgrctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adnodemgrctl.txt for more information ...

.end std out.
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = $INST_TOP/logs/appl/rgf/TXK/txkChkEBSDependecies_Tue_Feb_16_21_51_31_2021/txkChkEBSDependecies_Tue_Feb_16_21_51_31_2021.log
.end err out.
****************************************************

Executing service control script: $INST_TOP/admin/scripts/adalnctl.sh start
Timeout specified in context file: 100 second(s)
script returned:
**********************
adalnctl.sh version 120.3.12020000.4
Checking for FNDFS executable.
Starting listener process APPS_${TWO_TASK}.
adalnctl.sh: exiting with status 0

adalnctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adalnctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $INST_TOP/admin/scripts/adcmctl.sh start
Timeout specified in context file: 1000 second(s)
script returned:
**********************
You are running adcmctl.sh {TWO_TASK} version 120.19.12020000.7
Starting concurrent manager for {TWO_TASK}...
Starting ${TWO_TASK}_0413@${TWO_TASK} Internal Concurrent Manager
Default printer is noprint
adcmctl.sh: exiting with status 0

adcmctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adcmctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Then, it may stay here for a while from running "adadminsrvctl.sh start -nopromptmsg":

Executing service control script: $INST_TOP/admin/scripts/adadminsrvctl.sh start -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
************************
You are running adadminsrvctl.sh version 120.10.12020000.11
Starting WLS Admin Server...
Refer $INST_TOP/logs/appl/admin/log/adadminsrvctl.txt for details
AdminServer logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/AdminServer/logs
adadminsrvctl.sh: exiting with status 0
adadminsrvctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adadminsrvctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script:
$INST_TOP/admin/scripts/admanagedsrvctl.sh start forms_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
***********************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Starting forms_server1...
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/forms_server1/logs
admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adformsctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script:
$INST_TOP/admin/scripts/admanagedsrvctl.sh start oafm_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
*********************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Starting oafm_server1...
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/oafm_server1/logs
admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adoafmctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script:
$INST_TOP/admin/scripts/admanagedsrvctl.sh start oacore_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
***********************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Starting oacore_server1...
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/oacore_server1/logs

admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adoacorectl.txt for more information ...

.end std out.
.end err out.
****************************************************

All enabled services for this node are started.
adstrtal.sh: Exiting with status 0
adstrtal.sh: check the logfile $INST_TOP/logs/appl/admin/log/adstrtal.log for more information ...


$ ./adstpall.sh apps/apps_PWD

You are running adstpall.sh version 120.22.12020000.7
Enter the WebLogic Server password:
The logfile for this session is located at $LOG_HOME/appl/admin/log/adstpall.log

Executing service control script: $ADMIN_SCRIPTS_HOME/adapcctl.sh stop
Timeout specified in context file: 100 second(s)
script returned:
****************************************************
You are running adapcctl.sh version 120.0.12020000.6
Stopping OPMN managed Oracle HTTP Server (OHS) instance ...
adapcctl.sh: exiting with status 0
adapcctl.sh: check the $LOG_HOME/appl/admin/log/adapcctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/adcmctl.sh stop
Timeout specified in context file: 1000 second(s)
script returned:
****************************************************
You are running adcmctl.sh version 120.19.12020000.7
Shutting down concurrent managers for EBSDEV ...
ORACLE Password:
Submitted request 43081823 for CONCURRENT FND SHUTDOWN

adcmctl.sh: exiting with status 0

adcmctl.sh: check the logfile $LOG_HOME/appl/admin/log/adcmctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/jtffmctl.sh stop
Timeout specified in context file: 100 second(s)
script returned:
****************************************************
You are running jtffmctl.sh version 120.3.12020000.4
Shutting down Fulfillment Server for EBSDEV on port 9331 ...
jtffmctl.sh: exiting with status 0

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/adopmnctl.sh stop
Timeout specified in context file: 100 second(s)
script returned:
****************************************************
You are running adopmnctl.sh version 120.0.12020000.2
Stopping Oracle Process Manager (OPMN)  and the managed processes ...
opmnctl stopall: stopping opmn and all managed processes...
adopmnctl.sh: exiting with status 0
adopmnctl.sh: check the logfile $LOG_HOME/appl/admin/log/adopmnctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh abort forms_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
****************************************************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Stopping forms_server1...
Refer $LOG_HOME/appl/admin/log/adformsctl.txt for details
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/forms_server1/logs
admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $LOG_HOME/appl/admin/log/adformsctl.txt for more information ...

.end std out.
WARNING - Unable to create log file <$FMW_HOME/modules/../logs/wlst_20210416093507.log>.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh abort oacore_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
****************************************************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Stopping oacore_server1...
Refer $LOG_HOME/appl/admin/log/adoacorectl.txt for details
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/oacore_server1/logs
admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $LOG_HOME/appl/admin/log/adoacorectl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh abort oafm_server1 -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
****************************************************
You are running admanagedsrvctl.sh version 120.14.12020000.12
Stopping oafm_server1...
Refer $LOG_HOME/appl/admin/log/adoafmctl.txt for details
Server specific logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/oafm_server1/logs
admanagedsrvctl.sh: exiting with status 0
admanagedsrvctl.sh: check the logfile $LOG_HOME/appl/admin/log/adoafmctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/adalnctl.sh stop
Timeout specified in context file: 100 second(s)
script returned:
****************************************************
adalnctl.sh version 120.3.12020000.4
Shutting down listener process APPS_EBSDEV.
adalnctl.sh: exiting with status 0

adalnctl.sh: check the logfile $LOG_HOME/appl/admin/log/adalnctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/adadminsrvctl.sh stop -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
****************************************************
You are running adadminsrvctl.sh version 120.10.12020000.11
Stopping WLS Admin Server...
Refer $LOG_HOME/appl/admin/log/adadminsrvctl.txt for details
AdminServer logs are located at $FMW_HOME/user_projects/domains/EBS_domain_${TWO_TASK}/servers/AdminServer/logs
adadminsrvctl.sh: exiting with status 0
adadminsrvctl.sh: check the logfile $LOG_HOME/appl/admin/log/adadminsrvctl.txt for more information ...

.end std out.
.end err out.
****************************************************

Executing service control script: $ADMIN_SCRIPTS_HOME/adnodemgrctl.sh stop -nopromptmsg
Timeout specified in context file: -1 second(s)
script returned:
****************************************************
You are running adnodemgrctl.sh version 120.11.12020000.12

NodeManager log is located at $FMW_HOME/wlserver_10.3/common/nodemanager/nmHome1
adnodemgrctl.sh: exiting with status 0
adnodemgrctl.sh: check the logfile $LOG_HOME/appl/admin/log/adnodemgrctl.txt for more information ...

.end std out.
.end err out.
****************************************************

All enabled services on this node are stopped.
adstpall.sh:Exiting with status 0
adstpall.sh: check the logfile $LOG_HOME/appl/admin/log/adstpall.log for more information ...

7. All options

$ ./adstrtal.sh -help
USAGE:  adstrtal.sh <appsusername/appspassword> [-nothreading]
        adstrtal.sh <applications_username/applications_password> -secureapps
        adstrtal.sh -nodbchk
        adstrtal.sh -mode=allnodes
        adstrtal.sh -msimode

$ ./adstpall.sh -help
USAGE:  adstpall.sh <appsusername/appspassword> [-skipNM] [-skipAdmin] [-nothreading]
        adstpall.sh <applications_username/applications_password> -secureapps [-skipNM] [-skipAdmin]
        adstpall.sh -nodbchk [-skipNM] [-skipAdmin]
        adstpall.sh -mode=allnodes


Tuesday, May 25, 2021

Add/clone an apps-tier node to R12.2.10

Key steps for adding a node to R12.2 instance are in Oracle Doc ID 1383621.1 (Cloning Oracle E-Business Suite Release 12.2 with Rapid Clone, Section 5.3).  From the Oracle document, seems the Source system has to be the primary node of the same existing system.

I used below steps to add node(s) in R12.2.10 as part of R12.2 upgrade (from R12.1.3). To save time, node may not be added to the system until post-upgrade steps, such as enabling TLS1.2, Enabling JWS, business & hot-fix patches, CPU patches and 3rd party tool installation, have been all completed.

1. Prepare the Source node

Make sure ADOP is in good status on Source/Master node:
$ adop -status
Enter the APPS password:
Connected.
====================================================
ADOP (C.Delta.12)
Session Id: 5
Command: status
Output: $NE_BASE/EBSapps/log/adop/5/.../adzdshowstatus.out
====================================================
Node Name  Node Type  Phase              Status                  Started                         Finished                       Elapsed
--------------- ------------- --------------- ------------------- -------------------------- -------------------- ------------
node_name   master        FS_CLONE   COMPLETED    2021/0X/14 13:15:26  2021/0X/14 14:53:11  1:37:45

Or, ADOP patch cycle never started:

$ adop -status
Enter the APPS password:
Connected.
================================================
ADOP (C.Delta.12)
Session Id: 3
Command: status
Output: $NE_BASE/EBSapps/log/adop/3/.../adzdshowstatus.out
================================================
File System Synchronization Type: Full
adop exiting with status = 0 (Success)

a) Run pre-clone script on RUN file system
First, check WLS Admin Server shall be up and be accessible from browser or a remote location 
$ echo $FILE_EDITION
run
$ echo $APPL_TOP         <= write down /fs2/ or /fs1/
$ cd $ADMIN_SCRIPTS_HOME
$ ./adadminsrvctl.sh status
You are running adadminsrvctl.sh version 120.10.12020000.11
Enter the WebLogic Admin password:
Enter the APPS Schema password:
 The AdminServer is running

$ grep s_wls_adminport $CONTEXT_FILE
         <wls_adminport oa_var="s_wls_adminport" oa_type="PORT" base="7001" step="1" range="-1" label="WLS Admin Server Port">7033</wls_adminport>

$ wget http://node_name.domain.com:7033/console
… … etc
HTTP request sent, awaiting response... 200 OK
Length: 3162 (3.1K) [text/html]
Saving to: ‘console’
100%[======================>] 3,162       --.-K/s   in 0s
2021-0X-19 11:06:29 (343 MB/s) - ‘console’ saved [3162/3162]

$ perl adpreclone.pl appsTier
                     Copyright (c) 2011, 2014 Oracle Corporation
                        Redwood Shores, California, USA
                        Oracle E-Business Suite Rapid Clone
                                 Version 12.2
                      adpreclone Version 120.31.12020000.25
Enter the APPS User Password:
Enter the Weblogic AdminServer password :
 Checking the status of the Oracle WebLogic Administration Server....
 Running perl $AD_TOP/patch/115/bin/adProvisionEBS.pl ebs-get-serverstatus -contextfile=$CONTEXT_FILE -servername=AdminServer -promptmsg=hide
The Oracle WebLogic Administration Server is up.
wlsDomainName: EBS_domain_${TWO_TASK}
WLS Domain Name is VALID.
Running:
perl $AD_TOP/bin/adclone.pl java=$COMMON_TOP/util/jdk64 mode=stage stage=$COMMON_TOP/clone component=appsTier method= appctx=$CONTEXT_FILE showProgress
 Setting the wls environment
Beginning application tier Stage - Sun Feb 28 19:12:36 2021
$COMMON_TOP/util/jdk64/bin/java -Xmx600M -Doracle.jdbc.autoCommitSpecCompliant=false -DCONTEXT_VALIDATED=false -Doracle.installer.oui_loc=/oui -classpath $FMW_HOME/webtier/lib/xmlparserv2.jar:$FMW_HOME/webtier/jdbc/lib/ojdbc6.jar:$COMMON_TOP/java/classes:$FMW_HOME/webtier/oui/jlib/OraInstaller.jar:$FMW_HOME/webtier/oui/jlib/ewt3.jar:$FMW_HOME/webtier/oui/jlib/share.jar:$FMW_HOME/webtier/../Oracle_EBS-app1/oui/jlib/srvm.jar:$FMW_HOME/webtier/jlib/ojmisc.jar:$FMW_HOME/wlserver_10.3/server/lib/weblogic.jar:$FMW_HOME/oracle_common/jlib/obfuscatepassword.jar  oracle.apps.ad.clone.StageAppsTier -e $CONTEXT_FILE -stage $COMMON_TOP/clone -tmp /tmp -method CUSTOM   -showProgress -nopromptmsg
Log file located at $INST_TOP/admin/log/clone/StageAppsTier_02281912.log
  |     20% completed
Completed Stage...
 Mon Xxx 29 19:19:28 2021

$ ls -altr $COMMON_TOP/clone
                                <= show 6 folders are newly created.

b) Run adpreclone.pl on PATCH file system as well. Start Admin Server first.

$ . $HOME/$TWO_TASK/EBSapps.env PATCH
$ echo $TWO_TASK
EBSDEV_patch

$ sqlplus /nolog
SQL> conn apps/appsPWD@EBSDEV_patch
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: E-Business Suite Patch Edition does not exist.
ORA-06512: at line 29

SQL> conn apps/appsPWD@EBSDEV
Connected.
SQL> select count(*) from fnd_nodes;
  COUNT(*)
----------
         3
(Return info for database node and Master node)

$ echo $FILE_EDITION
patch

$ cd $FMW_HOME/user_projects/domains/EBS_domain/config
$ grep deny config.xml
if it has "deny", you shall replace it with "allow" before starting Admin Server.

$ cd $ADMIN_SCRIPTS_HOME
Start WebLogic Server Administration Console on the patch file system
$ sh 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...
… … etc
adadminsrvctl.sh: exiting with status 0
adadminsrvctl.sh: check the logfile $INST_TOP/logs/appl/admin/log/adadminsrvctl.txt for more information ...

$ grep s_wls_adminport $CONTEXT_FILE
         <wls_adminport oa_var="s_wls_adminport" oa_type="PORT" base="7001" step="1" range="-1" label="WLS Admin Server Port">7032</wls_adminport>
$ wget http://node_name.domain.com:7032/console
… … etc
HTTP request sent, awaiting response... 200 OK
Length: 3162 (3.1K) [text/html]
Saving to: ‘console’
100%[===================>] 3,162       --.-K/s   in 0s
2021-0X-19 11:24:00 (354 MB/s) - ‘console’ saved [3162/3162]

$ perl adpreclone.pl appsTier
                     Copyright (c) 2011, 2014 Oracle Corporation
                        Redwood Shores, California, USA
                        Oracle E-Business Suite Rapid Clone
                                 Version 12.2
                      adpreclone Version 120.31.12020000.25
Enter the APPS User Password:
Enter the Weblogic AdminServer password :
 Checking the status of the Oracle WebLogic Administration Server....
 … … etc
  |     20% completed
Completed Stage...
Mon Xxx 29 20:40:00 2021


$ ls -altr $COMMON_TOP/clone      <== 9 folders have new timestamp.

c) Write down database info and other info
 $ tnsping ebsdev

   Database Server Node= ebsdb1d.domain.com
   database SID = EBSDEV
   PORT= 1562   (1562 - 1521 = 41)
   apps  apps_PWD
   weblogic  wls_PWD
   Base Directory=  /u02/app/EBSDEV

2. On TARGET node (2nd apps node. See Section 5.3.2):

a) Make sure clean env and new inventory folder 
$ env     <= to make sure NO any Oracle environment variables show up
$ vi /etc/oraInst.loc     
   make sure line "inventory_loc=/u02/app/oraInventory" is in the file 
$ hostname     <= make sure it is the right node!
$ cd /u02/app
$ rm -rf oraInventory; mkdir oraInventory

b) Create folders and copy files from Source node. Folder copay may take 1 to 2 hours.
$ cd /u02/app/EBSDEV
$ mkdir fs1
$ mkdir fs2

$ cd fs1
$ nohup rsync --progress -avze ssh applmgr@master_node:/u02/app/EBSDEV/fs1/EBSapps .

$ cd ../fs2
$ nohup rsync --progress -avze ssh applmgr@master_node:/u02/app/EBSDEV/fs2/EBSapps .

Notes: only copy EBSapps folders to avoid error:
  ERROR: Failed to configure the target system
  See Doc ID 1900583.1: RCloneApplyAppstier - Exiting cloning as FMW Home already exists

c)  Make sure below two commands works on Target node, or Admin Server webpages can be accessed from browsers. 

$ wget http://master_node.domain.com:7033/console
$ wget http://master_node.domain.com:7032/console

If you hit this error, you have to fix it on both file systems on Source node:
$ wget http://node_name.domain.com:7033/console
--2021-04-19 13:11:44--  http://node_name.domain.com:7033/console
wget: /u02/app/.netrc:4: unknown token "GROUP/APPLMGR"
Resolving node_name.domain.com (node_name.domain.com)... 367.69.67.89
Connecting to node_name.domain.com (node_name.domain.com)|367.69.67.89|:7033... connected.
HTTP request sent, awaiting response... 403 Forbidden
2021-04-19 13:11:44 ERROR 403: Forbidden.

d) Run the clone script 
Assume this is to add a node only for concurrent jobs and database listens to port 1562
$ cd /u02/app/EBSDEV/fs1/EBSapps/comn/clone/bin
                                          <= make sure $RUN_BASE on Source node is also on fs1 !
$ perl adcfgclone.pl appsTier dualfs
                     Copyright (c) 2002, 2015 Oracle Corporation      <= it takes 30 to 60 minutes
                        Redwood Shores, California, USA
                        Oracle E-Business Suite Rapid Clone
                                 Version 12.2
                      adcfgclone Version 120.63.12020000.65
Enter the APPS password :
Enter the Weblogic AdminServer password :
Do you want to add a node (yes/no) [no] : yes

Verifying: Run file system AdminServer is running
Verifying: Patch file system AdminServer is running
Running: Context clone...
Log file located at $COMMON_TOP/clone/bin/CloneContext_0301100358.log
Target System Hostname (virtual or normal) [node_name] :
Target System Base Directory set to /u02/app/EBSDEV
Target System Current File System Base set to /u02/app/EBSDEV/fs1
Target System Other File System Base set to /u02/app/EBSDEV/fs2
Target System Fusion Middleware Home set to /u02/app/EBSDEV/fs1/FMW_Home
Target System Other File System Fusion Middleware Home set to /u02/app/EBSDEV/fs2/FMW_Home
Target System Web Oracle Home set to /u02/app/EBSDEV/fs1/FMW_Home/webtier
Target System Other File System Web Oracle Home set to /u02/app/ESBDEV/fs2/FMW_Home/webtier
Target System Appl TOP set to /u02/app/EBSDEV/fs1/EBSapps/appl
Target System Other File System Appl TOP set to /u02/app/EBSDEV/fs2/EBSapps/appl
Target System COMMON TOP set to /u02/app/EBSDEV/fs1/EBSapps/comn
Target System Other File System COMMON TOP set to /u02/app/EBSDEV/fs2/EBSapps/comn
Target System Instance Home Directory [/u02/app/EBSDEV] :
Target System Current File System Instance Top set to /u02/app/EBSDEV/fs1/inst/apps/$CONTEXT_NAME
Do you want to preserve the Display [master_node:0.0] (y/n)  : n
Target System Display [xxx_name:0.0] : node_name.domian.com:41.0
Target System Root Service [enabled] : disabled
Target System Web Entry Point Services [enabled] : disabled
Target System Web Application Services [enabled] : disabled
Target System Batch Processing Services [enabled] :
Target System Other Services [disabled] : disabled
Do you want the target system to have the same port values as the source system (y/n) [y] ? : y
Validating if the source port numbers are available on the target system..
Complete port information available at /u02/app/EBSDEV/fs1/EBSapps/comn/clone/bin/out/$CONTEXT_NAME/portpool.lst
Target System proxy port [80] :
UTL_FILE_DIR on database tier consists of the following directories.
1. /path/to/utl_dir
Choose a value which will be set as APPLPTMP value on the target node [1] :
The new APPL_TOP context file has been created :
  /u02/app/EBSDEV/fs1/inst/apps/$CONTEXT_NAME/appl/admin/$CONTEXT_NAME.xml
Check Clone Context logfile $COMMON_TOP/clone/bin/CloneContext_0301100358.log for details.
Creating Patch file system context file.....
Log file located at $COMMON_TOP/clone/bin/CloneContextPatch_0301100504.log
Target System Other File System Instance Top set to /u02/app/EBSDEV/fs2/inst/apps/$CONTEXT_NAME
Validating if the source port numbers are available on the target system..
Complete port information available at $COMMON_TOP/clone/bin/out/$CONTEXT_NAME/portpool.lst
Target System proxy port [80] :
The new APPL_TOP context file has been created :
  /u02/app/EBSDEV/fs2/inst/apps/$CONTEXT_NAME/appl/admin/$CONTEXT_NAME.xml
Check Clone Context logfile $COMMON_TOP/clone/bin/CloneContextPatch_0301100504.log for details.
FMW Pre-requisite check log file location : $COMMON_TOP/clone/FMW/logs/prereqcheck.log
Running: FMW pre-req check...
Configuring: Run file system....
LogFile located at $INST_TOP/admin/log/clone/run/RCloneApplyAppstier_03011005.log
Configuring: Patch file system....
LogFile located at $INST_TOP/admin/log/clone/patch/RCloneApplyAppstier_03011020.log

Do you want to startup the Application Services for EBSDEV? (y/n) [n] : n
Services not started

Notes: if it is to add a web/forms node, use below choices:
Target System Root Service [enabled] : enabled
Target System Web Entry Point Services [enabled] : enabled
Target System Web Application Services [enabled] : enabled
Target System Batch Processing Services [enabled] : disabled
Target System Other Services [disabled] : disabled

Now, verify database and diskspace:

By now, file EBSapps.env is created in /u02/app/EBSDEV. 
$ . /u02/app/EBSDEV/EBSapps.env RUN     (or, add it to .profile on Linux)
$ echo $APPL_TOP
/u02/app/EBSDEV/fs1/EBSapps/appl

SQL> select * from fnd_nodes;
SQL> select * from ADOP_VALID_NODES;
SQL> select * from fnd_oam_context_files;

$ cd /u02/app/EBSDEV
$ du -sh fs*
41G     fs1         <= depending on how many patches were applied on master node
42G     fs2
80K     fs_ne

e) Edit $CONTEXT_FILE on Target node
$ vi $CONTEXT_FILE
R12.2 generates context file from source node and does not need to edit much. Verify below variables:
s_local_url_protocol, s_webentryurlprotocol, s_active_webport, s_https_listen_parameter,  s_login_page, s_external_url, s_webentryhost
Edit variables:
applcsf, applptmp, s_forms_tmpdir, sitename, s_smtphost, s_javamailer_reply_to, s_sesstimeout
s_forms_catchterm, s_concstatus  => disabled (to prevent concurrent manager from start on web node? Doc ID 417437.1. But seems this does nothing.)

f) On the newly added node, TLS 1.2 is not enabled by clone script. It is necessary to enable it manually. See Enable TLS1.2 in R12.2
Also, need to copy two files from old R12.1 to $NE_BASE/EBSapps/appl/ad/admin/ for Java signing:
adkeystore.dat  
adsign.txt

g) Stop apps services on Source/Master node. Do not do this yet if you have more nodes to add.

In the RUN session, stop all services first. NOTE: if R12.2 services are running, do not edit $CONTEXT_FILE before that because adstpall.sh reads it to decide what will be stopped
cd $ADMIN_SCRIPTS_HOME
$ sh adstpall.sh apps/appsPWD
Notes: if FND processes are not stopped by above line, use "./adcmctl.sh stop" to stop them

If all service groups were enabled on the Source node, edit $CONTEXT_FILE to disable two groups (because the newly added node is for concurrent jobs).
$ vi $CONTEXT_FILE
For web/forms node:
Root Service Group : s_root_status                                  => enabled
Web Entry Point Services : s_web_entry_status              => enabled
Web Application Services : s_web_applications_status   => enabled
Batch Processing Services : s_batch_status                  => disabled 
Other Service Group : s_other_service_group_status   => disabled 

In a new OS session, stop Admin Server on PATCH file system
$ . /u02/app/EBSDEV//EBSapps.env patch
$ echo $FILE_EDITION
patch
$ cd $ADMIN_SCRIPTS_HOME
$ adadminsrvctl.sh stop forcepatchfs=yes
$ adnodemgrctl.sh stop
$ ps -ef | grep $LOGNAME | grep fs2
$ exit

h) Run autoconfig on database server (if Master node was newly cloned from other instance, this step seems optional)
$ cd $AD_TOP/bin
$ ls -al ad*mk*

$ perl admkappsutil.pl
Starting the generation of appsutil.zip
Log file located at $INST_TOP/admin/log/MakeAppsUtil_04151607.log
output located at $INST_TOP/admin/out/appsutil.zip
MakeAppsUtil completed successfully.

Send file appsutil.zip to DBA for running adconfig.sh.

i) Run autoconfig on all app-tier nodes
In sequence: database node => 2nd web/forms => CM node => Master

$ cd $ADMIN_SCRIPTS_HOME
$ ps -ef | grep $LOGNAME
$ ./adautocfg.sh

j) Start apps services on all nodes
$ ps -ef | grep $LOGNAME
$ sh adstrtal.sh apps/appsPWD

Optional:
$ lsnrctl reload APPS_${TWO_TASK}
Connecting to (ADDRESS=(PROTOCOL=TCP)(Host=$EBS_HOSTNAME)(Port=1562))
The command completed successfully

Now, test R12.2 works on all nodes.

k) Steps to make SCP works in Master node without asking a password. This is required for ADOP in multi-nodes instance to avoid error
    [UNEXPECTED]ssh is not enabled.

I did try txkRunSSHSetup.pl for this and could not resolve some errors. More in Doc ID 2461229.1 (ERROR During Perl $AD_TOP/patch/115/bin/txkRunSSHSetup.pl Enablessh).

m) Validate ADOP. After ssh can connect to remote nodes with entering a password, ADOP validation worked:

$ adop -status
Notes: It may show only the Master node (with FS_CLONE completed).  But after adop is used to apply patch to both nodes, "adop -status" will show two nodes.

$ adop -validate
... ...
Checking for existing patching cycle.
    No existing patching cycle exists

Verifying SSH connection to all nodes.
    Log: $LOG_HOME/appl/rgf/TXK/verifyssh.log
    Output: $LOG_HOME/appl/rgf/TXK/out.xml
    Remote execution is operational.

Running adop validations on Admin node: [node1].
    Log: node1:$NE_BASE/EBSapps/log/adop/5/.../validate/node1
    Output: $NE_BASE/EBSapps/log/adop/5/.../validate/remote_execution_result_level1.xml
        txkADOPEvalSrvStatus.pl returned SUCCESS

Running adop validations on node(s): [node2,node3 and ].
    Output: $NE_BASE/EBSapps/log/adop/5/.../validate/remote_execution_result_level2.xml
        txkADOPEvalSrvStatus.pl returned SUCCESS
adop exiting with status = 0 (Success)

If it gets error on Public synonym, it is safe to drop it because R12.2 does not use Public synonym.

3. More notes.

a) If concurrent processes do not start or concurrent manager log gives below error, most likely it can be fixed by running autoconfig again.

Unable to contact Applications TNS Listener for FNDSM_<CONTEXT_NAME> on $NODE.  The Listener may be down or the TNS address is not properly configured for this name. (NODE=node_name)
An error occured in client-side routine afpsmckp for Service Manager FNDSM_<CONTEXT_FILE>.  The routine returned code 144.


b) You have to start apps services on Master node first to avoid errors from adstrtal.sh:
ERROR: Skipping startup of oacore_server1 since the AdminServer is down. AdminServer needs to be up before starting/stopping the managed servers.
... ...

c) Start apps services on web/forms node (non-Master node) with option"adstrtal.sh -msimode"  (see Doc ID 2052792.1) to avoid errors:
ERROR: Skipping startup of oacore_server2 since the AdminServer is down. AdminServer needs to be up before starting/stopping the managed servers.

d) Below line tells it is the Master node: 

$ grep adminserverstatus $CONTEXT_FILE
            <oa_service_status oa_var="s_adminserverstatus">enabled</oa_service_status>

e) SQL statements to check more on status: all nodes shall have record in 4 tables below

set lines 333;
col NODE_NAME for a18;
col NODENAME for a18;
SQL> select * from ADOP_VALID_NODES;
SQL> select * from AD_NODES_CONFIG_STATUS;
SQL> select * from fnd_oam_context_files;
SQL> select * from fnd_oam_context_files 
          where node_name = 'target_node_name' ;

SQL> select NODE_NAME       "Node_Name",
decode(STATUS,'Y','ACTIVE','INACTIVE') "Status",
decode(SUPPORT_CP,'Y', 'Y','')               "Conc",
decode(SUPPORT_FORMS,'Y','Y', '')      "Forms",
decode(SUPPORT_WEB,'Y','Y', '')           "Web",
decode(SUPPORT_ADMIN, 'Y','Y', '')     "Admin",
decode(SUPPORT_DB, 'Y','Y', '')        "DB",
NODE_MODE                                     "Mode",
HOST||'.'||DOMAIN                             "Server.Domain"
from fnd_nodes where node_name != 'AUTHENTICATION'
order by node_name;

If a patch status on the new added node shows NOT APPLIED, it indicates its snapshot needs a complete update.
SQL> SELECT adb.bug_number, aat.name appl_top_name, adb.creation_date, 
decode(ad_patch.is_patch_applied('R12',aat.appl_top_id,adb.bug_number,adb.language),'EXPLICIT','APPLIED','NOT_APPLIED','NOT APPLIED') status
FROM ad_bugs adb,
(select aat.name, aat.appl_top_id
from applsys.ad_appl_tops aat,
(select distinct fat.name from applsys.fnd_appl_tops fat) fat
where aat.name=fat.name ) aat
where adb.bug_number in ('30399994')
order by adb.bug_number,aat.name,adb.language;

BUB_NUMBER  APPL_TOP_NAME  CREATION_DATE  STATUS
30399994              AT_master_node           9-MAR-21              APPLIED
30399994                         new node            9-MAR-21              NOT APPLIED

- TROUBLESHOOTING:

1. If "perl adcfgclone.pl appsTier dualfs" was executed from a wrong file system (such /fs2/), it would  work successfully. But after you realize that and run the .pl clone script again, it will give errors:
ERROR: node_name entry is there in fnd_oam_context_files
ERROR: node_name entry is there in ADOP_VALID_NODES
ERROR: node_name entry is there in fnd_nodes
ERROR: node_name already registered in AutoConfig tables
ERROR: Some old configuration footprints still exists
Run ebs-delete-node before re-running add node

If adcfgclone started in the same session where previous environment (R12.1) was set, it will fail with errors:
[opmn] [ERROR:1] [] [internal] lxlinit - NLS boot file not found or invalid
 -- default linked-in boot block used
[opmn] [ERROR:1] [105] [internal] XML parser init: character set initialization failed.
... ...
ERROR: Unable to create OHS instance.
ERROR: OHS instance creation and configuration failed

In both situations, try below steps to make the clone script work from scratch:
a) ps -ef  | grep $LOGNAME
to make sure nothing is running

b) Do NOT delete any folders/files yet, and go to the RUN file system created by the clone script on Target node: 
$ . /u02/app/EBSDEV/EBSapps.env RUN
$ echo $FILE_EDITION
run

$ perl $AD_TOP/patch/115/bin/adProvisionEBS.pl ebs-delete-node \
-contextfile=$CONTEXT_FILE -hostname=target_node_name -logfile=del_node.log )
Enter the APPS Schema password:
Enter the WebLogic AdminServer password:
Node deleted successfully.

Also see How To Delete an Application Tier Node (Doc ID 2315133.1)
(You may get ERROR: An error has occurred. Refer to the log file delete_node.log for details.
The log file show a lot of Java errors. But, It does delete data from db tables FND_NODES, etc.)

SQL> select * from ADOP_VALID_NODES;
SQL> select * from AD_NODES_CONFIG_STATUS;
SQL> select * from FND_NODES;
SQL> select * from fnd_oam_context_files 
          where node_name = 'target_node_name' ;

c) Remove/rename folders fs1, fs2, fs_ne under /u02/app/EBSDEV
d) Remove and then re-create folder oraInventory defined in /etc/oraInst.loc
e) Copy two folders from master node (Source node) again.
f) Run "perl adcfgclone.pl appsTier dualfs" from the directory matching RUN file system in Source node.

2. If you get below error, install RPM libaio-devel-0.3.109-13.el7.x86_64

FMW Pre-requisite check log file location : /u02/app/EBSDEV/fs1/EBSapps/comn/clone/FMW/logs/prereqcheck.log
Running: FMW pre-req check...
ERROR: Failed to execute FMW pre-requisite check

Log file has error matching Doc ID 2502181.1 (Adcfgclone.pl Error "START: Creating FMW Home"):

3. "perl adcfgclone.pl appsTier dualfs" gives error:

PATCH Weblogic AdminServer Connection attempt failed with
Connection rejected, filter blocked Socket, weblogic.security.net.FilterException:
Please ensure ConnectionFilter Rule exist for node_name.domain.com

In this case, wget and browsers get errors from accessing WLS Admin Server page:
$ wget http://node_name.domain.com:7033/console

--2021-0X-19 13:11:44--  http://node_name.domain.com:7033/console
wget: /u02/app/.netrc:4: unknown token "GROUP/APPLMGR"
Resolving node_name.domain.com (node_name.domain.com)... 367.69.67.89
Connecting to node_name.domain.com (node_name.domain.com)|367.69.67.89|:7033... connected.
HTTP request sent, awaiting response... 403 Forbidden
2021-04-19 13:11:44 ERROR 403: Forbidden.
Socket:000445]Connection rejected, filter blocked Socket, weblogic.security.net.FilterException: [Security:090220]

You have to fix it on both file editions on Source node:
$ cd $FMW_HOME/user_projects/domains/EBS_domain_"$TWO_TASK"/config
$ diff config.xml config.xml_BK_clone
<     <connection-filter-rule>0.0.0.0/0 * * allow</connection-filter-rule>
---
>     <connection-filter-rule>0.0.0.0/0 * * deny</connection-filter-rule>

Seems the permanent fix is to modify config.xml twice by replacing "deny" and each time is followed by an autoconfig (which will re-generate config.xml file).

4. Failure due to ADOP status
First of all, R12.2 cloning has requirement on ADOP status before the instance can be cloned. Anytime after "adop phase=prepare" completed or failed, the pre-clone script will not run on Source instance: 
$ cd $ADMIN_SCRIPTS_HOME
$ perl adpreclone.pl appsTier
                     Copyright (c) 2011, 2014 Oracle Corporation
                        Redwood Shores, California, USA
                        Oracle E-Business Suite Rapid Clone
                                 Version 12.2
                      adpreclone Version 120.31.12020000.25
Enter the APPS User Password:
Enter the Weblogic AdminServer password :
 Checking the status of the Oracle WebLogic Administration Server....
 Running perl $AD_TOP/patch/115/bin/adProvisionEBS.pl ebs-get-serverstatus -contextfile=$CONTEXT_FILE -servername=AdminServer -promptmsg=hide
The Oracle WebLogic Administration Server is up.
wlsDomainName: EBS_domain_$TWO_TASK
WLS Domain Name is VALID.
There is already an ACTIVE ADOP CYCLE with session id : 5
adpreclone cannot be run with pending ADOP session

$ adop -status
Enter the APPS password:
Connected.
====================================================
ADOP (C.Delta.12)
Session Id: 5
Command: status
Output: $NE_BASE/EBSapps/log/adop/5/.../adzdshowstatus.out
====================================================
Node Name       Node Type  Phase           Status          Started              Finished             Elapsed
--------------- ---------- --------------- --------------- -------------------- -------------------- ------------
node_name       master     PREPARE        COMPLETED       2021/02/25 16:06:14  2021/02/25 19:05:25  2:59:11
                                       APPLY              NOT STARTED
                                       FINALIZE        NOT STARTED
                                       CUTOVER       NOT STARTED
                                       CLEANUP       NOT STARTED
File System Synchronization Type: Full
adop exiting with status = 0 (Success)

I had to Abort it (by "adop phase=abort" which takes hours) before I could do the clone.

$ adop -status -detail
Enter the APPS password:
Connected.
==============================================================
ADOP (C.Delta.12)
Session Id: 5
Command: status
Output: $NE_BASE/EBSapps/log/adop/5/.../adzdshowstatus.out
===============================================================
Node Name       Node Type  Phase           Status          Started              Finished             Elapsed
--------------- ---------- --------------- --------------- -------------------- -------------------- ------------
node_name       master     PREPARE        SESSION ABORTED 2021/02/25 16:06:14  2021/02/25 19:05:25  2:59:11
                                       APPLY             SESSION ABORTED
                                       FINALIZE       SESSION ABORTED 2021/02/28 10:21:12  2021/02/28 10:29:15  0:08:03
                                       CUTOVER      SESSION ABORTED
                                       CLEANUP       COMPLETED              2021/02/28 19:00:07  2021/02/28 19:03:57  0:03:50
File System Synchronization Type: Full
INFORMATION: Patching cycle aborted, so fs_clone will run automatically on node_name node in prepare phase of next patching cycle.

Generating full adop status report: $NE_BASE/EBSapps/log/adop/5/.../adzdshowstatus.out
adop exiting with status = 0 (Success)

5. After services started on 2nd node, I see the file systems are not identical. 
On the 2nd node for concurrent jobs, this folder does not have "servers" folder:
$ ls -altr $FMW_HOME/user_projects/domains/EBS_domain

drwxr-xr-x 2 user group 37 Mar  1 20:00 security
drwxr-xr-x 4 user group 55 Mar  1 20:00 bin
drwxr-xr-x 3 user group 56 Mar  1 20:03 config


But, on the 1st node (master), the same folder has more sub-folders and "servers" folder has all service names:

$ ls -altr $FMW_HOME/user_projects/domains/EBS_domain

drwxr-x---  2 user  group  24    Mar  1 19:25 autodeploy
drwxr-x---  8 user group   83    Mar  1 19:25 sysman
drwxr-x---  2 user group   24    Mar  1 19:25 lib
drwxr-x---  2 user group   24    Mar  1 19:25 console-ext
drwxr-x---  5 user group  230   Mar  1 19:25 bin
drwxr-x---  2 user group  143   Mar  1 19:25 security
-rwxr-x---  1 user group  282   Mar  1 19:25 startWebLogic.sh
-rw-r-----   1 user group  243   Mar  1 19:30 shutdown.py
drwxr-----  9 user group  174   Mar  1 19:33 servers
drwxr-x--- 2 user group    6     Mar  1 19:34 pending
drwxr-x--- 2 user group    6     Mar  1 19:34 tmp
-rw-r-----   1 user group   32    Mar  1 20:00 edit.lok
drwxr-x--- 4 user group   66    Mar  1 20:01 opmn
drwxr-x---11 user group 4096 Mar  3 09:06 config
drwxr-x--- 2 user group  211   Mar  3 09:06 init-info
-rw-r-----   1 user group  495   Mar  3 09:06 fileRealm.properties
-rw-r--r--   1 user group  808   Mar  3 09:06 startManagedWebLogic_readme.txt


$ cd $FMW_HOME/user_projects/domains/EBS_domain/servers
$ ls -altr
drwxr----- 10 user group 109  Mar  1 19:26 AdminServer
drwxr-xr-x  3 user group  22   Mar  1 19:33 forms-c4ws_server1
drwxr-xr-x  3 user group  22   Mar  1 19:33 oaea_server1
drwxr-x---  3 user group  25   Mar  1 19:34 domain_bak
drwxr-xr-x  9 user group  95  Mar  2 16:12 forms_server1
drwxr-xr-x  9 user group  95  Mar  2 16:12 oafm_server1
drwxr-xr-x  9 user group  95  Mar  2 16:12 oacore_server1
-rw-r-----    1 user group  14  Mar 10 13:47 AdminServerTag

6. MORE on Multi-node setups

Doc ID 415385.1 (On a R12 Multi-Node Install -- Why Do All Middle Tiers Run All Services?) gives details on deciding what shall run on each node:

You have 2 Application Tiers (XXX and YYY). XXX is running Admin and Concurrent Manager Services, and YYY is running Forms and Web Services.

During the Rapid Install, you select the above configuration via the "Edit Services" button as follows :
XXX : enable "Root Service Group", "Batch Processing Services"
YYY : enable "Root Service Group", "Web Entry Point Services", "Web Application Services", "Other Service Group"

The logic behind these service classification in R12.1 is as follows :

a) Root Services  Group (Runs services on AS, 10.1.3 OH) : s_root_status
Oracle Process Manager:  s_opmnstatus (adopmnctl.sh)

b) Web Entry Point Services (Runs services on AS, 10.1.3 OH) : s_web_entry_status
Oracle HTTP Server:        s_oacorestatus (adapcctl.sh)

c) Web Application Services (Runs services on AS, 10.1.3 OH) : s_web_applications_status
OACORE OC4J:  s_oacorectrl (adoacorectl.sh)
FORMS OC4J:     s_formsstatus (adformsctl.sh)
OAFM OC4J:       s_oafmstatus (adoafmctl.sh)

d) Batch Processing Services (Concurrent Managers and Apps Listener): s_batch_status
OracleTNSListenerAPPS: s_tnsstatus (adalnctl.sh)
OracleConcMgr:                s_concstatus (adcmctl.sh)
Oracle ICSM:                     s_icsmctrl (ieoicsm.sh)
Oracle Fulfillment Server: s_jtffsstatus (jtffmctl.sh)

e) Other Service Group  (Runs services for Forms on 10.1.2) : s_other_service_group_status
OracleFormsServer:     s_formsserver_status (adformsrvctl.sh)
Oracle Metrics Client:  s_metcstatus (adfmcctl.sh)
Oracle Metrics Server:  s_metsstatus (adfmsctl.sh)
Oracle MWA Service:   s_mwastatus (mwactlwrpr.sh)

De-attach (deattach) Oracle Homes

De-register the Oracle Homes on both Run Edition and Patch Edition file system:
Verify if Oracle Inventory contains the following Oracle Home entries for the Run Edition or Patch Edition file system:
<FMW_HOME>/oracle_common
<FMW_HOME>/webtier
<FMW_HOME>/Oracle_EBS-app1
If any of the above Oracle Home entries are already registered in Oracle Inventory, you can run the following command to de-register or detach that Oracle Home:
$ ./runInstaller -detachhome \
ORACLE_HOME=<Oracle Home Location> [-invPtrLoc <s_invPtrLoc>]
Here,
-invPtrLoc argument needs to be specified only if an 'EBS Installation Central' inventory is being used.
s_invPtrLoc is the context variable that stores the inventory pointer location.
For example:
$ cd /u02/app/fs1/FMW_Home/oracle_common/oui/bin
$ ./runInstaller -detachhome \
ORACLE_HOME=/s0/r122/at1/FMW_Home/oracle_common
If the FMW_HOME directory structure exists, delete it as follows:
$ rm -rf <FMW_HOME>

Related documents:
- Re-attach Oracle Homes To R12.2 Central Inventory (Doc ID 1586607.1)
- Sharing The Application Tier File System in Oracle E-Business Suite Release 12.2 ( Doc ID 1375769.1 )