How To Ensure Load Balancing Of Concurrent Manager Processes In PCP-RAC Configuration

Goal


How to troubleshoot issues where load balancing of Concurrent manager processes does not work in a RAC with PCP configuration.

In a RAC with PCP configuration, it is noticed that the 2 instances are not sharing the load and most of the time only one node is having concurrent manager processes running. How to ensure that the concurrent manager processes are load balanced across the PCP nodes ?


Solution
There are 2 types of resources in use for PCP/RAC:

1.O/S processes for manager and requests
2.Shadow processes for database connection for managers and requests.

O/S processes for managers (e.g. FNDLIBR, etc.) and request processes (ar60run, sqlplus, etc.)
will run on primary node defined for manager.

Shadow processes for database connection use load balanced alias (s_cp_twotask) and the load is
distributed between database nodes by sqlnet. This is controlled by sqlnet and CP code is not
involved. This should mimic what happens to sqlplus connections using load balanced alias for
RAC. The following sql can be used to check how manager connections are spread:
Select inst_id, count (*) from gv$session where process in (select os_process_id from fnd_concurrent_processes where process_status_code = 'A') group by inst_id;

Now to load balance the shadow concurrent manager processes please set the below:
1.Set the profile option "Concurrent: PCP Instance Check" to "OFF"
2. Set the context variable s_cp_twotask to '<SERVICE_NAME>_806_BALANCE' (This entry can be found in the tnsnames.ora file). You have to set this in both RAC nodes.
3. Run autoconfig and after that you can check for the load balancing aspects

Ref :: Using Server side load balancing with MRP will break MRP, see
Note.279156.1