Skip to content

Output Post Processor (OPP) related issues in 11i/R12

Concurrent processing uses the Output Post Processor (OPP) to enforce post-processing actions for concurrent requests. Post-processing actions are actions taken on concurrent request output. An example of a post-processing action is that used in publishing concurrent requests with XML Publisher.

Apps DBAs have to sometimes troubleshoot issues related to OPP. Many a times issues are related to java memory with error messages like below:

Exception in thread "OPPAQMON:1400684" java.lang.OutOfMemoryError: Java heap space
[7/27/15 8:59:37 AM] [UNEXPECTED] [1400684:RT35975778] java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Some basic steps which do helps in dealing OPP related memory issues are mentioned below:
 

1) Increase OPP Heap size
a) Check the OPP heap size using the below query:
SQL> select DEVELOPER_PARAMETERS from FND_CP_SERVICES where SERVICE_ID = 
(select MANAGER_TYPE from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');
b) If less than 1024M, you should update as below
Backup table FND_CP_SERVICES first before update.
SQL> update FND_CP_SERVICES set DEVELOPER_PARAMETERS =
'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2560m'
where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES
where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

SQL> commit;
c) Check again:
SQL> select DEVELOPER_PARAMETERS from FND_CP_SERVICES where SERVICE_ID = 
(select MANAGER_TYPE from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');
 

2) Increase run time program memory 
For the specific concurrent program which is showing OPP relate outofmemory issue, you can think of increasing run time memory
Go to “System Administrator” responsibility.
Navigate to Concurrent – > Program – > Define.
Search for the concurrent program
Set the Options field to -Xmx1024M (can be set to 2048M if program still fails)
Save.
Bounce the Concurrent Manager for the effects to take place.

 

3) Increase Application server JVM heap size
This parameter is not as such related to OPP but do help.
Check OACORE memory on application server. It should be minimum 1 GB for R12.1.3. The changes will be done in CONTEXT_FILE and autoconfig tun
$ grep -i s_oacore_jvm_stop_options $CONTEXT_FILE
$ grep -i s_oacore_jvm_start_options $CONTEXT_FILE
$ grep -i  s_oacore_nprocs $CONTEXT_FILE

 

4) Configure the XML Publisher Administrator Configuration settings.
Go to XML Publisher Administrator responsibility
Navigate to Home – Administration – Configuration
Under Temporary Directory pick a temporary file location on your concurrent processing node. This should be at least 5GB or 20x larger than largest XML data file you generate
Under FO Processing, set:
Use XML Publisher’s XSLT processor set to True
Enable scalable feature of XSLT processor set to False
Enable XSLT runtime optimization set to True

 

5) Number of OPP processes
Please check number of OPP processes and increase it to higher value depending on the system load and number of OPP depending concurrent requests
* Logon to Applications with “System Administrator” responsibility
* Navigate to Concurrent -> Manager -> Define
* Query for “Output Post Processor”
* Click on “Work Shifts” and Increase the number of processes.
     (example if you have 2 processes then make them 4).
* make sure that you have
              oracle.apps.fnd.cp.opp.OPPServiceThread:2:0:max_threads=5
 under Parameters.
The max_threads parameter controls the maximum number of request threads. This number may be increased depending on the workload.
It is suggested to increase the number of “threads” as much as possible, then start adding “Processes”, if needed.The limiting factor with increasing “threads” is memory, if one sets the max heap size of a JVM to 2GB, then all “threads” will share this memory.
To get optimum performance, it is suggested to keep “Processes” to a minimum. It is recommended to have 2 OPP “Processes” with more “threads”.

 

6) Tweak OPP profiles if required
In our instance we have seen that changing the below key profiles have helped in avoiding some kind of OPP errors.
a) Concurrent:OPP Process Timeout
–Set the value to 10800 sec (3 hours) [ Default  300 seconds (5 min.) ]
b) Concurrent:OPP Response Timeout
–increase it to 240 [Default 120 seconds (2 min.)]

 

Brijesh Gogia
Leave a Reply