Friday, May 27, 2016

Running Oracle EBS in Google Chrome

Just to make everyone aware, Google Chrome is not not yet certified for running EBS forms. There are few specific versions for chrome which are only certified to run web based content with EBS but not java based forms.

The certification from Oracle covers(OA Framework/HTML). But there are always a workaround for every case(Mind it if any issue occurs you cannot log any request with Oracle).

There is an extension available within Chrome 48+(https://chrome.google.com/webstore/detail/thinforms-plugin-for-orac/nmjefghbgfcpoobigfbalocpncklkjhk?hl=en). This extension can be used to run java based content from EBS.

As per Steven Chan's blog https://blogs.oracle.com/stevenChan/entry/jre_ebs_directions
next EBS version is expected to use Oracle FORMS 12c, which will utilize java web start technology, which means it will be browser independent to use to launch the application.




Wednesday, May 25, 2016

Punchout issue in EBS 12.1.3

Today we encountered an issue where some users were not able to do a punchout to the supplier. When supplier was contacted they confirmed that they have renewed their certificates few days back.
Thus we figured it out that ssl handhake between EBS and supplier site is not happening and we have to import the renewed certificate to our Apache certificate.


When a punchout is attempted to a supplier, using https, in order to create a Secure connection between the Oracle E-Business Suite Middle Tier Server and the Punchout Destination, the certificate must be present in the certificate file that is used by the E-Business Suite Middle Tier - Apache Web Server.

Below are the steps.

1. Get the punchout url. Login into EBS>iprocurement responsibility>home page>stores>current stores>identify the supplier >and click on update>punchout definition>copy punchout url.

2. Open the url in IE, choose the certificate and export it in X-509 Certificate with chain (PEM)

3.  Save it in desktop

4. Now go to System Administrator - and move to  Profile/System - to query on the Profile - POR: CA      Certificate Filename. We will get value as $ORACLE_HOME/sysman/config/b64InternetCertificate.txt

5. Take a back up of this file and add the content of saved certificate to this file.

6. Bounced Apache and verified that the ebs is able to do a handshake now.

Transparent Data Encryption related docs

http://www.oracle.com/technetwork/database/security/tde-faq-093689.html#A13018

http://docs.oracle.com/cd/B19306_01/network.102/b14268/asotrans.htm#CHDCCICE

http://docs.oracle.com/cd/B19306_01/network.102/b14268/asotrans.htm#BABEBFBA

Sunday, May 22, 2016

Oracle E-Business Suite Applications DBA and Technology Stack Release Notes for R12.AD.C.Delta.7 and R12.TXK.C.Delta.7

I was under the impression that dualfs option during cloning of EBS is available only from EBS 12.2.5. After discussing with one of the Oracle Community member, i come to know that it is available from latest AD/TXK Release 7. So even if i use EBS 12.2.4 and then apply the latest AD/TXK patches, i can get the dualfs option.


The features which are new in AD/TXK release 7 are:

1.1 Enhanced adop Console Messages

The adop utility has been significantly enhanced, to display more selective information on the console. Messages, prompts and other UI elements have also been extensively refined to increase ease of use of patching commands.

1.2 New adop Monitoring Tool

Progress of an online patching cycle can be followed by running the new Online Patching Monitoring utility (adopmon). This utility can be used to follow the overall progress of a patching cycle, as well as identifying the various individual adop actions being taken.

1.3 New adop 'validate' Option

Before you start a new patching cycle by running the prepare phase, you can optionally check your system's readiness by running adop with the 'validate' option. If you do this while a patching cycle is in progress, validation will take place for the cutover phase.

1.4 Support for Middle Tier EBS Technology Checker

The new middle tier checker (MT-ETCC) technology script complements the original ETCC database checker script (now called DB-ETCC). The scripts report respectively on any missing middle tier and database tier bugfixes and patches that are required for Release 12.2.

1.5 Support for EBS Installation Central Inventory

Support for an instance-specific EBS Installation Central Inventory has been introduced as an option for the application tier on UNIX platforms. The inventory is identified by <s_base>/oraInventory/oraInst.loc. This feature is useful where multiple Oracle E-Business Suite installations exist on the same host, helping to avoid issues when fs_clone is run simultaneously on different instances.

To use the EBS Installation Central Inventory, all application tier Oracle Homes registered in the global inventory for the instance must be migrated to the new inventory. This is done by running the following steps on the primary application tier node:

Source the run edition file system.
Edit the context file and set the value of the context variable s_ebs_central_inventory to 'true'.
Run AutoConfig.
Run the following command:
$ perl <FND_TOP>/patch/115/bin/txkMigrateInventory.pl -contextfile=<CONTEXT_FILE>
Ensure that all application tier Oracle Homes have been migrated to the EBS Installation Central Inventory.

Repeat all the above steps on any non-shared nodes and shared master nodes (for example, in a hybrid setup). For all shared slave nodes, perform Steps 1 to 3 (only) on each node.

Once the inventory is migrated, any subsequently added nodes will be automatically configured to use the EBS Installation Central Inventory, and any new target instance cloned from this instance will automatically be configured to use it.

1.6 Script to Automate Changing Oracle WebLogic Server Administration User Password

The procedure used to change the Oracle WebLogic Server Administration User Password has been simplified and largely automated by the introduction of a new utility that performs what were previously manual steps.

You can set the Oracle WebLogic Server Administration User password to a non-default value during Oracle E-Business Suite installation. if you need to change the password at a later time, you can do so on the run file system by shutting down all application tier services except the Admin Server, then running the new $FND_TOP/patch/115/bin/txkUpdateEBSDomain.pl script with the -action=updateAdminPassword option.

1.7 Oracle WebLogic Server Performance Enhancements

Several related enhancements have been made to Oracle WebLogic Server:
A new -DserverType=wlx start argument for managed servers reduces their memory footprint, by preventing startup of the Enterprise JavaBeans (EJB), Java EE Connector Architecture (JCA), and Java Message Service (JMS) services.
The default value of s_forms-c1wsstatus is now set to 'Disabled'.Thus, the formsc1-ws servers are no longer started during a 'start all' operation.
To reduce oacore startup time, the Portlet Producer libraries are no longer deployed to the EBS domain. A new context variable, s_deploy_portlet, has been introduced to cater for cases where portlet-related configuration is required, such as in instances needing Webcenter integration.

1.8 Simplified Procedure for Changing WLS Data Source

Changing the APPS schema password in the WLS Data Source with FNDCPASS or AFPASSWD has now been simplified and partially automated. The required sequence of actions on the run file system of the primary node includes shutting down the application tier services; starting AdminServer with the adadminsrvctl.sh script; running the txkManageDBConnectionPool.pl script and choosing the 'updateDSPassword' option; and finally restarting the application tier services. Reference: Chapter 6, Basic DBA Tasks, Oracle E-Business Suite Maintenance Guide.

1.9 New 'dualfs' Option in Standard Cloning

A new 'dualfs' option is available when performing a standard clone, as well as while adding a new node. With the 'dualfs' option, both the run and patch file systems are cloned and configured in a single operation.

1.10 Improved Delete Node and Delete Managed Server APIs

The improvements include addition of more validations.


1.11 Mandatory Definitions of Context Variables

Definition of the following is mandatory in the pairs file used for standard clone and for addition of nodes:
s_webentryurlprotocol
s_webentryhost
s_webentrydomain
s_active_webport

1.12 Various Fixes for Oracle Database 12c

These include cleanup of existing integrations following run of Rapid Clone.

1.13 Automatic Execution of ETCC on Database Tier After Cloning

This now takes place automatically, instead of as a manual step after database tier cloning.

References: metalink note:2033780.1


Friday, May 20, 2016

New feature in EBS 12.2.6

Through one of the discussions in MOS, it seems that Oracle is coming up with a new feature in EBS 12.2.6.



The new feature should have:

1.Auto Refresh
2.Rerun Selected Request
3.Copy Request
4.Submit a New Request and Submit a New Request Set Buttons

Sunday, May 15, 2016

Tracing the Concurrent Managers

We all are aware of tracing the concurrent requests in EBS. I want to share my knowledge on how to trace the Concurrent managers and the internal mechanism of its working

I have installed EBS 12.1.1 and by default it has 3 standard managers defined. Lets get the SID and other details for this Standard manager processes.

SQL> select sid,serial# from v$session where module like '%STANDARD%';

       SID    SERIAL#
---------- ----------
       334         30
       354         35
       360        318

Now for the 3 respective SIDs, i'll start the trace by executing the below commands.

SQL> exec dbms_monitor.session_trace_enable(334,30);

PL/SQL procedure successfully completed.

SQL>  exec dbms_monitor.session_trace_enable(354,35);

PL/SQL procedure successfully completed.

SQL>  exec dbms_monitor.session_trace_enable(360,318);

PL/SQL procedure successfully completed.


Trace is now enabled and whatever action the Concurrent manager performs, it will be captured.
We submit a concurrent program and see how it behaves. Disable the trace once conc request completes.

SQL> exec dbms_monitor.session_trace_disable(334,30);

PL/SQL procedure successfully completed.

SQL>  exec dbms_monitor.session_trace_disable(354,35);

PL/SQL procedure successfully completed.

SQL>  exec dbms_monitor.session_trace_disable(360,318);

PL/SQL procedure successfully completed.


The flow will be like the below one.

a. ICM will request the FNDSM(service manager) to start up the CM Processes(FNDLIBR in this case).
b.The manager process connects to the database and reads the settings (e.g profile options, sleep seconds, cache size).
c.The process saves information about itself in FND_CONCURRENT_PROCESSES table (os process id, database name, instance name, DB session identifiers, logfile path and name, and others). It also updates FND_CONCURRENT_QUEUES by increasing the value of RUNNING_PROCESSES.
d.The concurrent manager will read the database to build the sql after reading the FND_CONCURRENT_REQUESTS table. This is the time when manager processes reads the specialization rule.
************************

PARSING IN CURSOR #11 len=1037 dep=0 uid=173 oct=3 lid=173 tim=1463234236389265 hv=776369707 ad='8fbcd350' sqlid='3sc6gm8r4cxjb'
Select R.Rowid From Fnd_Concurrent_Requests R  Where R.Hold_Flag = 'N'  And R.Status_Code = 'I'  And R.Requested_Start_Date <= Sysdate  And (R.Node_Name1 is null or      (R.Node_Name1 is not null and       FND_DCP.target_node_mgr_chk(R.request_id) = 1))  AND EXISTS  ( Select Null  From Fnd_Concurrent_Programs P  Where P.Enabled_Flag = 'Y'  And R.Program_Application_Id = P.Application_Id  And R.Concurrent_Program_Id  = P.Concurrent_Program_Id  AND EXISTS ( Select Null From Fnd_Oracle_Userid O Where R.Oracle_Id = O.Oracle_Id AND EXISTS ( Select Null From Fnd_Conflicts_Domain C Where P.Run_Alone_Flag = C.RunAlone_Flag And R.CD_Id = C.CD_Id ) ) And (P.Execution_Method_Code != 'S' OR (R.PROGRAM_APPLICATION_ID,R.CONCURRENT_PROGRAM_ID) IN ((0,98),(0,100),(0,31721),(0,31722),(0,31757))) AND ((R.PROGRAM_APPLICATION_ID,R.CONCURRENT_PROGRAM_ID) NOT IN ((510,40112),(510,40113),(510,41497),(510,41498),(530,41859),(530,41860),(535,41492),(535,41493),(535,41494)))) ORDER BY NVL(R.priority, 999999999), R.Priority_Request_ID, R.Request_ID
END OF STMT

***************************
The SQL will be executed each time for checking the pending requests in the table FND_CONCURRENT_REQUESTS table.

e.Manager processes sleeps if there are no pending requests. The Sleep seconds settings used to determine the time the CM processes will sleep before checking for any pending requests in FND_CONCURRENT_REQUESTS.

Example-In my case sleep second is 30 and there are 3 standard manager processes.

In second 1, manager process 1 will check the fnd_concurrent_requests table.--sleep for 30 seconds
In second 2, manager process 2 will check the fnd_concurrent_requests table.--sleep for 30 seconds.
In second 3, manager process 3 will check the fnd_concurrent_requests table.--sleep for 30 seconds
In second 4-no manager processes
--------
idle time
--------
In second 31, manager process 1 will check the fnd_concurrent_requests table.--sleep for 30 seconds
In second 32, manager process 2 will check the fnd_concurrent_requests table.--sleep for 30 seconds

Idle time is unnecessary and it also proves that we can reduce the sleep seconds or increase the concurrent manager processes.(This comes as part of tuning concurrent managers. I'll take this in a separate post)

f. If it finds that there are any pending requests then the CM process will cache the rowid from FND_CONCURRENT_REQUESTS table. This setting is controlled by Cache Size

For example-
In my case cache size is set to-5
Manager process 1 caches 5 requests (1-5) and start executing request 1.
manager process 2 caches 5 requests(2-6) and start executing request 2
manager process 3 caches 5 requests(3-7) and start executing request 3

In the meantime request 1 is completed and manager process checks for next request in its cache
Manager process checks request 2 and see it is locked by manager process 2.
----------------------------------------------
idle time
----------------------------------------------------------
Manager process checks request 3 and see it is locked by manager process 3
Manager process checks request 4 and and start processing it.

To avoid idle time, we have to adjust the cache size.(Will be covered in the upcoming posts)


g. The cached list of rowids is checked to verify if there are any unprocessed concurrent requests (rows in FND_CONCURRENT_REQUESTS table) left. If none are left – the processing returns to step 5 and the FND_CONCURRENT_REQUESTS table is queried again.

h. From the table FND_CONCURRENT_REQUESTS, the next unprocessed rowid is processed again.

As we know that there can be multiple processes for one Concurrent Manager. Thus how a particular request gets assigned to a given Concurrent manager Processes?

The answer is below.

 In our case, there are 3 Standard manager processes and thus internally each manager tries to acquire the resources to process the concurrent program.

 One of the manager will pickup the requests and lock the status_code in  FND_CONCURRENT_PROCESSES. This is to ensure that one program is executed only once and by only one manager.
*****************************
FOR UPDATE OF R.status_code NoWait
***************************
f. In the mean time other managers will not be able to acquire the resource.There always remains a contention among managers to pick up the requests. If they try to acquire then ORA-00054: resource busy and acquire with NOWAIT specified will be displayed..



References: https://me-dba.com/2016/04/12/internals-of-querying-the-concurrent-requests-queue-revisited-for-r122/
https://www.pythian.com/blog/the-internal-workflow-of-e-business-suite-concurrent-manager-process/
http://ermanarslan.blogspot.in/2016/04/ebs-r12-concurrent-manager-facts-cache.html

*********
Concurrent requests cycle.

Concurrent Request/Program can be under one of four Phases . Each phase has different Status .

Phase : Pending, Running , Completed, Inactive


Status :

Pending – Normal, Standby, Schedules, Waiting
Running – Normal, Paused, Resuming, Terminating
Completed – Normal, Error, Warning, Cancelled, Terminated, Disabled
Inactive – Disabled , On Hold, No Manager


A. Pending Standby  – Phase Pending and Status Standby means Program to run request is incompatible with other program(s) currently running.

How to check Incompatible Program/Request for any Program/Request ?

Login with Application Developer responsibility
Click on Concurrent > Program
Query Program
Click on Incompatibilities button



B. Inactive – No Manager

i) No manager is defined to run the request
or
ii) All managers are locked by run-alone requests
or
iii) Concurrent Manager Service is down
or
iv) No concurrent manager process because of workshift

To check Work Shift for any Concurrent Manager From System Administrator responsibility > Concurrent > Manager > Define > Work Shifts > Processes


Phase Status Description

PENDING Normal    Request is waiting for the next available manager.
  Standby   Program to run request is incompatible with other program(s) currently running.
  Scheduled    Request is scheduled to start at a future time or date.
  Waiting    A child request is waiting for its Parent request to mark it ready to run. For example, a request in a request set that runs sequentially must wait for a prior request to complete.

RUNNING Normal       Request is running normally.
  Paused        Parent request pauses for all its child requests to finish running. For example, a request set pauses for all requests in the set to complete.
  Resuming All requests submitted by the same parent request have completed running. The Parent request resumes running.
  Terminating Request is terminated by choosing the Cancel Request button in Requests window.

COMPLETED Normal Request completed successfully.
   Error        Request failed to complete successfully.
  Warning Request completed with warnings. For example, a request is generated successfully but fails to print.
  Cancelled Pending or Inactive request is cancelled by choosing the Cancel Request button in the Requests window.
  Terminated Request is terminated by choosing the Cancel Request button in the Requests window.

INACTIVE Disabled Program to run request is not enabled. Contact your system administrator.
  On Hold Pending request is placed on hold by choosing the Hold Request button in the Requests window.
  No Manager No manager is defined to run the request. Check with your system administrator. A status of No Manager is also given when all managers are locked by run-alone requests.