正德厚生,臻于至善

All About Output Post Processor (OPP) in Oracle Applications

SELECT FCPP.CONCURRENT_REQUEST_ID REQ_ID,
FCP.NODE_NAME,
FCP.LOGFILE_NAME
FROM FND_CONC_PP_ACTIONS FCPP,
FND_CONCURRENT_PROCESSES FCP
WHERE FCPP.PROCESSOR_ID = FCP.CONCURRENT_PROCESS_ID
AND FCPP.ACTION_TYPE = 6
AND FCPP.CONCURRENT_REQUEST_ID = '&id';

Output Post Processor 输出提交处理程序
The integration of XML Publisher within Concurrent Processing is done by means of a specialized concurrent manager called the Output Post Processor (OPP). If a request is submitted which has an XML Publisher template specified as a layout for the output, then after the concurrent manager finishes running the concurrent program, it will contact the OPP to apply the XML Publisher template and create the final output.
XML Publisher在并发处理中的集成是通过一个专门的并发管理器(称为输出后处理器(OPP))来完成的。如果提交的请求中指定了一个XML Publisher模板作为输出的布局,那么在并发管理器完成运行并发程序后,它将联系OPP应用XML Publisher模板并创建最终的输出。

An overview of the actions involved:
1.An application user submits an XML Publisher based report.
2.The standard concurrent manager processes the request.
3.The XML data file is generated by the standard concurrent manager. This can be done by various methods:
· Oracle Reports – Report Definition File (RDF)
· XML Publisher Data Template – XML data template linked to the Data Definition
· Any other process that produces XML output
4.A post processing action defines that the output needs to be generated by the Output Post Processor hence it is triggered by the standard manager.
5.The Output Post Processor generates the final report and informs the standard concurrent manager whether that was successful.
6.The standard concurrent manager finalizes the concurrent request.
所涉及的动作概述如下:
1.应用用户提交一个基于XML Publisher的报表。
2.标准并发管理器处理该请求。
3.标准并发管理器生成XML数据文件。这可以通过各种方法来完成。
– Oracle报表–报表定义文件(RDF)
– XML Publisher数据模板–链接到数据定义的XML数据模板。
– 任何其他产生XML输出的进程
4.后处理动作定义了输出需要由输出后处理器生成,因此它是由标准管理器触发的。
5.输出后处理器生成最终报告,并通知标准并发管理器是否成功。
6.标准并发管理器最终完成并发请求。

Processes in OPP:
There should always be at least one OPP process active in the system. If no OPP service is available to process concurrent requests, completed requests that require OPP post-processing will complete with a status of Warning.
One service instance of the OPP service is seeded by default. This seeded OPP service instance has one workshift with one process.
A concurrent manager contacts an available OPP process when a running concurrent request needs an OPP post-processing action. Concurrent managers use a local OPP process (on the same node) by default, but will choose a remote OPP if no local OPP process is available.
OPP中的进程:
1.系统中应始终有至少一个OPP进程在活动。如果没有OPP服务可用来处理并发请求,则需要OPP后期处理的已完成请求将以Warning状态完成。
2.OPP服务的一个服务实例默认为种子服务。这个种子OPP服务实例有一个工作班,一个进程。
3.当一个正在运行的并发请求需要OPP后期处理操作时,并发管理器会联系一个可用的OPP进程。并发管理器默认使用本地 OPP 进程(在同一节点上),但如果没有本地 OPP 进程可用,则会选择远程 OPP。

Threads in OPP:
The OPP Service is multi-threaded and will start a new thread for each concurrent request it processes. You can control the number of simultaneous threads for an OPP Service Instance by adjusting the Threads per Process parameter for the instance.
If all the OPP process has reached their respective maximum number of threads, the requests waiting to be processed remain in a queue to be processed as soon as threads become available. If request throughput has become slow, you may want to increase the number of Threads per Process for the OPP.
The number of concurrent requests that the Output Post Processor can handle in parallel depends upon:
· the number of Processes
· the number of Threads Per Process
The default values are 2 Processes and 5 Threads per Process so a total of 10 reports can be processed in parallel.
OPP中的线程:
1.OPP服务是多线程的,它每处理一个并发请求,就会启动一个新的线程。您可以通过调整实例的每进程线程数参数来控制OPP服务实例的并发线程数。 2.如果所有的OPP进程都已经达到了各自的最大线程数,那么等待处理的请求就会保留在队列中,一旦有线程可用,就会立即处理。如果请求吞吐量已经变得很慢,可能需要增加OPP的每个进程的线程数。
3.输出提交处理程序可以并行处理的并发请求数量取决于以下因素。
– 进程的数量
– 每个进程的线程数
4.默认值是2个进程和每个进程5个线程,因此总共可以并行处理10个报表。

In general “Administer Concurrent Manager Screen” shows pending and running requests against each manager, but it does not show pending requests against OPP manager. The OPP uses ‘Advanced Queue’ to find the pending requests that it needs to process, hence it becomes difficult to configure (or) do sizing of OPP without knowing the workload. For example, “Administrator Screen” shows how many requests are pending (or) running against “Standard Managers” using this information, we can size (Increase Process) Standard Manager accordingly.(Doc ID 1399454.1)
一般来说,”管理并发管理器屏幕”会显示每个管理器的待处理和正在运行的请求,但不会显示OPP管理器的待处理请求。OPP使用 “高级队列”来查找需要处理的待处理请求,因此在不知道工作量的情况下,很难配置(或)进行OPP的大小调整。例如,”管理员屏幕”显示了 “标准管理器”有多少待处理(或)运行的请求,利用这些信息,我们可以相应地调整(增加进程)标准管理器的大小。

An OPP service is multi-threaded and will start a new thread for each concurrent request it processes. You can control the number of simultaneous threads for an OPP service instance by adjusting the number of Threads per Process parameter for the instance. For example, say you have set your Output Post Process service to one process and have set the number of threads to 1, then one request will run at a time per process, allowing it to use all the heap memory for that process that was set for the java heap memory FND_CP_SERVICES.DEVELOPER_PARAMETERS. If you set the number of threads to two, then the two reports will share processing space in the java heap. Three threads, then three reports will be processed in the java heap space of the single OPP process. If you have the number of threads set to, for example 5 threads and you have set the java heap to Xmx2048m, then the 5 processes will have 2048 Mb of heap and 5 reports will be processed in the 2048 Mb of heap space. So for reports that are very large, it may necessary that the number of threads be reduced in order for there to be enough heap to process the report.(Doc ID 1577487.1)
OPP服务是多线程的,它会为其处理的每个并发请求启动一个新的线程。您可以通过调整实例的每进程线程数参数来控制OPP服务实例的并发线程数。例如,假设你将输出提交处理程序设置为一个进程,并将线程数设置为1,那么每个进程每次将运行一个请求,允许它使用该进程的所有堆内存,该堆内存是为java堆内存FND_CP_SERVICES.Developer_PARAMETERS设置的。如果你把线程数设置为两个,那么两个报表将共享java堆的处理空间。三个线程,那么三个报表将在单个OPP进程的java堆空间中进行处理。 如果将线程数设置为,比如5个线程,并且将java堆设置为Xmx2048m,那么5个进程将拥有2048Mb的堆,5个报表将在2048Mb的堆空间中进行处理。所以对于非常大的报表,可能需要减少线程数,以便有足够的堆来处理报表。
If on the latest JDK which should 1.6 64-bit, then one can use up to 3GB of memory before writing temp files to disk. With older version you will only be able to use 1.25GB of memory before task swapping to disk. Again The largest effective value with the 32-bit JVM used by EBS is -Xmx2048m (2GB).(Doc ID 1577487.1)

Note: The OPP service has 2 different types of threads. One is the Service thread, of which there are 2 by default. These are ‘permanent’ threads, i.e. they exist for the entire lifetime of the process.
The other type is Request threads. A new request thread is spawned each time a request is processed. Once processing is complete, the thread exits. Request threads are configured to have a maximum number, i.e. if you configure max_threads=5, the service will not spawn more than 5 request threads at any one time. If more than 5 requests need to be processed they will wait in a queue until a thread completes.
The OPP service parameters look like this by default: oracle.apps.fnd.cp.opp.OPPServiceThread:2:0:max_threads=5
The ‘2’ is the number of service threads, it is not recommended to change this number. The max_threads parameter controls the maximum number of request threads. This number may be increased depending on your system load.(Doc ID 2389976.1)
注意:OPP服务有2种不同类型的线程。一种是服务线程,默认有2个。这些线程是 “永久 “线程,即它们在进程的整个生命周期内都存在。
另一种类型是请求线程。每次处理一个请求时,都会产生一个新的请求线程。一旦处理完成,该线程就会退出。请求线程的配置有一个最大数量,即如果配置max_threads=5,服务在任何时候都不会产生超过5个请求线程。如果需要处理超过5个请求,它们将在队列中等待,直到一个线程完成。
OPP服务参数默认是这样的:oracle.app.fnd.cp.op.OPPServiceThread:2:0:max_threads=5。
‘2’是服务线程的数量,不建议更改这个数字。max_threads参数控制请求线程的最大数量。这个数字可能会根据系统负载情况而增加。

——————————notes
NOTE:69565.1 – A Holistic Approach to Performance Tuning Oracle Applications Systems
NOTE:134007.1 – CMCLEAN.SQL Non-Destructive Script to Clean Concurrent Manager Tables
NOTE:134007.1 – Concurrent Processing – Command-Line Utility OR Recovery Wizard
NOTE:179661.1 – E-Business Suite Diagnostics 11i Test Catalog
NOTE:291792.1 – Concurrent Processing – Using the Concurrent Request Output Post Processor (OPP) in Oracle Applications
NOTE:421245.1 – E-Business Suite Diagnostics References for R12
NOTE:352518.1 – Concurrent Requests Fail Due To Output Post Processing (OPP) Timeout
NOTE:364547.1 – Troubleshooting Oracle XML Publisher For The Oracle E-Business Suite
NOTE:390968.1 – XML Publisher Data Template Request XDODTEXE Fails with Java.Lang.OutOfMemoryError
NOTE:406558.1 – Configuring Applications Node Services in Oracle E-Business Suite Release 12.1
NOTE:428536.1 – Concurrent Manager Has Timed Out Waiting For The Output Post-Processor
NOTE:563233.1 – Concurrent Processing – Potential Output Post Processor – OPP Failures Due to a Multi-Node Setup
NOTE:737311.1 – How to Configure the Account Analysis Report in Release 12 for Large Reports
NOTE:747750.1 – R12 Format Payment Instruction Failed With the Error Java Exception in Thread “Main” java.lang.OutOfMemoryError: Java heap space
NOTE:751835.1 – XML Error in Subledger Period Close Report
Note 753395.1 Java.Net.Connectexception:Connection Timed Out Error For XML/BI Publisher Reports
NOTE:788935.1 – Out of Memory Error When Running XML Publisher Template Re-Generator Concurrent Program
NOTE:847844.1 – How to Troubleshoot FNDFS and FNDWRR (Problems Viewing Concurrent Request Output)
NOTE:876227.1 – Investigating BI Publisher Errors such as Acct Analysis Report Ends in Java Heap Error
NOTE:986228.1 – What is the Recommended “Cache” Size For a Standard Manager
NOTE:986272.1 – Concurrent Processing – How To Performance Tune The Concurrent Processing Server
NOTE:987670.1 – Report Manager FRM_TO_GENERATOR module:FO Generator – Failed With JAVA HEAP Space Error. Exception in thread…
NOTE:1057802.1 – Concurrent Processing – Best Practices for Performance for Concurrent Managers in E-Business Suite
NOTE:1062578.1 – CSTCRACC: Create Accounting – Cost Management – You Cannot Print the Report/Output
NOTE:1069240.1 – IRP5 and IT3A – NO OUTPUT FILES BEING GENERATED DURING PROCESSING
NOTE:1082672.1 – How to Configure the Account Analysis Report in Release 12 for Large Reports
NOTE:1083162.1 – Java.Lang.Out Of Memory Error Received When Running A Java Concurrent Program
NOTE:1093453.1 – How to find the Output Post Processor (OPP) logfile?
NOTE:1138602.1 – Overview of Available Patches for Oracle XML Publisher embedded in the Oracle E-Business Suite
NOTE:1142073.1 – Serial Number Detail (XML) Errors Out With Concurrent Manager Has Timed Out Waiting For the Output
NOTE:1156523.1 – How To Purge FND_AQ Tables
NOTE:1178457.1 – Problem With OPP Where Getting XML Output Instead of PDF
NOTE:1199353.1 – OPP Processes Wrong Output
NOTE:1224684.1 – AP Trail Balance Complete with Warning the Output Post Processor is Running but Has Not Picked Up this Request
NOTE:1226233.1 – Output Post Processor (OPP) Request Log Contains Warning “The concurrent manager has timed out waiting for the Output Post-processor to finish this request.”
NOTE:1268217.1 – Output Post Processor (OPP) Log Contains Error “java.lang.OutOfMemoryError: Java heap space”
NOTE:1266368.1 – Output Post Processor (OPP) Log Contains Error “java.lang.OutOfMemoryError”
NOTE:1304305.1 – Concurrent Processing – Product Information Center (PIC)
NOTE:1338762.1 – Information Center: Oracle BI Publisher (BIP)
NOTE:1348102.1 – R12: AP/IBY/XDO: Master Troubleshooting Guide for Oracle Payment Formats & XML Publisher Templates
NOTE:1399454.1 – Tuning Output Post Processor (OPP) to Improve Performance
NOTE:1410160.1 – R12: Troubleshooting Known XML Publisher and E-Business Suite (EBS) Integration Issues
NOTE:1411723.1 – For best maintenance and monitoring run the script: Concurrent Processing – CP Analyzer for E-Business Suite
NOTE:1546377.1 – BI Publisher Consolidated Reference
NOTE:1577487.1 – How Is The Number Of OPP Threads Relates To Java Heap And Processing Reports?
NOTE:1610143.1 – EBS Reports & Printing Analyzer
NOTE:1630732.1 – Sizing Business Intelligence Publisher Components To Handle Large Volumes of Data with E-Business Suite XML Publisher / BI Publisher
NOTE:1636540.1 – RTI FPS Run Reconciliation Report & FPS Output – Warnings On The Log File (OPP Service Log “Connection timed out”)
NOTE:1600688.1 – Large BI Publisher reports fails with … manager has timed out waiting for the Output Post-processor to finish this request
NOTE:2028617.1 – Output Post Processor (OPP) Hangs With High CPU Utilization (100%)
NOTE:2074181.1 – Optimal OPP Process / Response Timeout Profile Setting
NOTE:2092293.1 – Concurent Processing R12 : Output Post Processor (FNDCPOPP) Manager Processes The XML Data Twice For The Same Request And Hence Fails To Generate Output
NOTE:2130545.1 – Concurrent Manager Recovery Wizard – Oracle Applications Manager Troubleshooting and Diagnostics
NOTE:2224189.1 – OPP Manager Takes Long Time To Start
NOTE:2235833.1 – 12.2 E-Business Suite Business Intelligence Report Created With A BIP Excel Template Fails With Errors Xdo.template.excel.util.ExcelUtil.safeClose And oracle.apps.fnd.cp.opp.PostProcessorException: oracle.apps.xdo.XDOException
NOTE:2276367.1 – Account Analysis – Contra Account Completed With Warning For Large Data : REP-0004: Warning: Unable to open user preference file – Caused by: java.lang.ThreadDeath
NOTE:2320421.1 – Concurrent Processing R12 : Steps To Configure The Output Post Processor (OPP) To Handle Larger Data Volume And Generate Output
NOTE:2389976.1 – Output Post Processor (OPP) Creates Many Process for the Output Post Process
NOTE:2440363.1 – How To Restart Output Post Processor (OPP) Via Linux Command?
NOTE:2573449.1 – CONC-POST-PROCESSING RESULTS into error “GC Overhead Limit Exceeded”

—————————— OPP & JDK
Overview of Using Java with Oracle E-Business Suite Release 12.x (Doc ID 418664.1)
12.2
Document 1459546.1, Using JDK 6.0 Latest Update with Oracle E-Business Suite Release 12.2
Document 1530033.1, Using JDK 7.0 Latest Update with Oracle E-Business Suite Release 12.2
Document 393931.1, Deploying JRE (Native Plug-in) for Windows Clients in Oracle E-Business Suite Release 12
12.1 & 12.0
Document 1467892.1, Using JDK 7.0 Latest Update with Oracle E-Business Suite Release 12.0 and 12.1
Document 455492.1, Using Latest Update of Java 6.0 with Oracle E-Business Suite Release 12
Document 384249.1, Using Latest Update of JDK 5.0 with Oracle E-Business Suite Release 12
Document 393931.1, Deploying JRE (Native Plug-in) for Windows Clients in Oracle E-Business Suite Release 12

——————————bug & patch
BUG:6969856 – OPP FAILS WITH UNKNOWNHOSTEXCEPTION FOR XMLP CONCURRENT PROGRAMS
BUG:7449694 – UNABLE TO PUBLISH XML REP. JAVA.NET.CONNECTEXCEPTION: CONNECTION TIMED OUT
BUG:16869777 – ORA-04021: TIMEOUT OCCURRED WHILE WAITING TO LOCK OBJECT – APPS.FND_CP_OPP_IPC
BUG:17595629 – ORA-4021 FROM FNDOPP
BUG:18084625 – DEADLOCK / LIBRARY CACHE PIN ON QUEUE OBJECTS WITH AQ/STREAMS
BUG:18411938 – RTI – OPP ERRORS
PATCH:7449694
PATCH:7520057
PATCH:13903857
PATCH:15900099
PATCH:15981173
PATCH:15981176
PATCH:16735285
NOTE: See SERVICE MANAGER GOES DOWN FREQUENTLY AFTER 13903857 AND 15981176 and apply per below Note.

------------------------------重建并发管理器
1.Stop all middle tier services including the concurrent managers.
2.Stop the database.
3.Start the database.
4.Connect SQLPLUS as APPS user and run the following :
sqlplus apps/apps
EXEC FND_CONC_CLONE.SETUP_CLEAN;
COMMIT;
EXIT;
5.Run AutoConfig on all tiers, firstly on the DB tier and then the APPS tiers and webtiers to repopulate the required system tables.
ls -l $CONTEXT_FILE
cd $ORACLE_HOME/appsutil/bin
./adconfig.sh contextfile=$CONTEXT_FILE appspass=apps
ls -l $CONTEXT_FILE
cd $AD_TOP/bin
./adconfig.sh contextfile=$CONTEXT_FILE appspass=apps
6.Connect to SQLPLUS as APPS user and run the following statement :
select CONCURRENT_QUEUE_NAME from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME like 'FNDSM%';
If the above SQL does not returning any value then please do the following:
Go to $FND_TOP/patch/115/sql
Connect SQLPLUS as APPS user and run the following script :
SQL> @afdcm037.sql;
(Note :  The same "afdcm037.sql" is used for Release 12 also ).
This script will create libraries for FNDSM and create managers for preexisting nodes.
--sqlplus apps/apps @$FND_TOP/patch/115/sql/afdcm037.sql
Check again that FNDSM entries now exist:
select CONCURRENT_QUEUE_NAME from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME like 'FNDSM%';
7.Go to cd $FND_TOP/bin
$ adrelink.sh force=y "fnd FNDLIBR"
$ adrelink.sh force=y "fnd FNDSM"
$ adrelink.sh force=y "fnd FNDFS"
$ adrelink.sh force=y "fnd FNDCRM"
8.Run the CMCLEAN.SQL script from the referenced note below (don't forget to commit).
9.Start the middle tier services including your concurrent manager.
10.Retest the issue.
------------------------------standard practise
###352518.1
The timeouts can also be altered directly in the package AFCPOPRB.pls :
The package body (AFCPOPRB.pls) and spec (AFCPOPRS.pls)can be found at the following location: patch/115/sql
Example: patch/115/sql/AFCPOPRB.pls
-- Default timeout values for waiting on a response to a request (seconds)
TIMEOUT1   constant number := 120;  
TIMEOUT2   constant number := 300;
TIMEOUT1 and TIMEOUT2 corresponds to respectively OPP Response Timeout (solution A) and OPP Process Timeout (solution B).

Note: The timeout profiles are set in seconds.
CONC_PP_RESPONSE_TIMEOUT: specifies the amount of time a manager waits for OPP to respond to its request for post processing.
CONC_PP_PROCESS_TIMEOUT: specifies the amount of time the manager waits for the OPP to actually process the request.

###1226233.1
Concurrent: OPP Processing Timeout to 86400 (24 hours)
Concurrent: OPP Response Timeout to 3600 (1 hour)

###753395.1
CONC_FORCE_LOCAL_OUTPUT_FILE_MODE "Concurrent: Force Local Output File Mode" profile option - should be set to Yes

###2235833.1 & 12.2
Concurrent:OPP Response Timeout = 43200
Concurrent:OPP Process Timeout = 43200

###1156523.1
DECLARE
po dbms_aqadm.aq$_purge_options_t;
BEGIN
po.block := FALSE;
DBMS_AQADM.PURGE_QUEUE_TABLE(
queue_table => 'APPLSYS.FND_CP_GSM_OPP_AQTBL',
purge_condition => NULL,
purge_options => po);
END;
/

select count(*) from applsys.FND_CP_GSM_OPP_AQTBL ;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_S;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_T;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_H;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_I;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_G;
select count(*) from applsys.AQ$_FND_CP_GSM_OPP_AQTBL_L;

###1399454.1
select REQUEST_ID,PHASE_CODE,STATUS_CODE from fnd_concurrent_requests
where request_id in (
select concurrent_request_id
from fnd_conc_pp_actions
where action_type >= 6
and processor_id is null)
and PHASE_CODE!='C';

SELECT service_id, service_handle, developer_parameters
FROM fnd_cp_services
WHERE service_id = (SELECT manager_type
FROM fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDCPOPP');

UPDATE fnd_cp_services
SET developer_parameters =
'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-Xmx2048M -Xms2048M'
WHERE service_id = (SELECT manager_type
FROM fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDCPOPP');

echo $AFJSMARG
java -Xmx2048m -version

###1577487.1
SELECT CONCURRENT_QUEUE_ID,CONCURRENT_TIME_PERIOD_ID,MIN_PROCESSES,SERVICE_PARAMETERS,SLEEP_SECONDS
FROM FND_CONCURRENT_QUEUE_SIZE WHERE
CONCURRENT_QUEUE_ID in (select CONCURRENT_QUEUE_ID from fnd_concurrent_queues where concurrent_queue_name like '%OPP%');

select DEVELOPER_PARAMETERS from apps.FND_CP_SERVICES
where SERVICE_ID = (select MANAGER_TYPE from apps.FND_CONCURRENT_QUEUES
where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

update FND_CP_SERVICES
set DEVELOPER_PARAMETERS = 'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-Xmx2048m'
where SERVICE_ID =
(select MANAGER_TYPE
from FND_CONCURRENT_QUEUES
where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');

###1546377.1
Output Post Processing Fails Due To java.lang.ThreadDeath
- Increase the value of the Concurrent:OPP Timeout profile
- Enable the scalability feature of XML Publisher:
a.  Login as SYSADMIN
b.  Responsibility: XML Publisher Administrator
c.  Function: Administration
d.  Set the following properties:
	- set Temporary Directory
	- set Use XML Publisher's XSLT processor: True
	- set Enable scalable feature of XSLT processor: True
	- set Enable XSLT runtime optimization: True
-  Restart the Concurrent Managers so that changes take effect
------------------------------custom practise
adrelink.sh force=y ranlib=y "FND FNDSVC"

select * from fnd_concurrent_queues s where s.concurrent_queue_name like '%OPP%';
select * from fnd_concurrent_queues s where s.concurrent_queue_id=32299;
select * from fnd_concurrent_processes p where p.concurrent_queue_id=32299;
delete from fnd_concurrent_processes p where p.concurrent_queue_id=32299;

Unable to initialize state monitor.
oracle.apps.fnd.cp.gsm.GenCartCommException: ORA-01403: no data found
ORA-06512: at "APPS.FND_CP_GSM_IPC", line 539
ORA-06512: at line 1

at oracle.apps.fnd.cp.gsm.GenCartComm.initService(GenCartComm.java:233)
at oracle.apps.fnd.cp.gsm.GenCartComm.(GenCartComm.java:80)
at oracle.apps.fnd.cp.gsf.GSMStateMonitor.init(GSMStateMonitor.java:74)
at oracle.apps.fnd.cp.gsf.GSMStateMonitor.(GSMStateMonitor.java:62)
at oracle.apps.fnd.cp.gsf.GSMServiceController.init(GSMServiceController.java:117)
at oracle.apps.fnd.cp.gsf.GSMServiceController.(GSMServiceController.java:72)
at oracle.apps.fnd.cp.gsf.GSMServiceController.main(GSMServiceController.java:446)

--delete from fnd_concurrent_queues where concurrent_queue_name like '%OPP%';
--delete from fnd_concurrent_queues_tl where concurrent_queue_name like '%OPP%';
update fnd_concurrent_queues
set running_processes=0
,control_code=NULL
--,TARGET_NODE='ERPAPP01'
where concurrent_queue_id=35312;
commit;

delete fnd_concurrent_processes where concurrent_queue_id=35312;

SELECT service_id, service_handle, developer_parameters
FROM fnd_cp_services
WHERE service_id = (SELECT manager_type
FROM fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDCPOPP');

###RQ### 1080	FNDOPP	J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2048m
###RQ### oracle.apps.fnd.cp.opp.OPPServiceThread:4:0:max_threads=5

###PJ### oracle.apps.fnd.cp.opp.OPPServiceThread:2:0:max_threads=5
###PJ### FNDCPOPP
###PJ### FNDCPOPP2

select b.bug_number, to_char(b.LAST_UPDATE_DATE, 'YYYY-MM-DD HH24:MI:SS') Last_update from apps.ad_bugs b where bug_number in('16735285');

###Concurrent is behaving very badly - Queue/Pending Standby state upto 700	
You will need to verify the OPP log file.

1. To find the location of the log file of the OPP manager, Please run the following SQL statement
SELECT fcpp.concurrent_request_id req_id, fcp.node_name, fcp.logfile_name
  FROM fnd_conc_pp_actions fcpp, fnd_concurrent_processes fcp
WHERE fcpp.processor_id = fcp.concurrent_process_id
   AND fcpp.action_type = 6
   AND fcpp.concurrent_request_id = &RequestID;

2. Review the output of the below
2.1 Thread detail
select SERVICE_PARAMETERS,MAX_PROCESSES,RUNNING_PROCESSES,TARGET_PROCESSES,TARGET_NODE  FROM fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDCPOPP' ;

2.2 Check the Java heap size for the OPP.
SELECT service_id, service_handle, developer_parameters
  FROM fnd_cp_services
WHERE service_id = (SELECT manager_type
                       FROM fnd_concurrent_queues
                      WHERE concurrent_queue_name = 'FNDCPOPP');

2.3   In order to see incoming request for OPP, You can check for an unprocessed requests for the OPP using this query:
select concurrent_request_id, action_type
from fnd_conc_pp_actions
where action_type >= 6
and processor_id is null;

3. These 3 parameters impacts the performance of OPP.
Sysadmin > XML Publisher Administrator Responsiblity" > Administration  > FO Processing Properties > Review screen shot
XML Publisher's XSLT processor
Enable scalable feature of XSLT processor
Enable XSLT runtime optimization
Hope this helps to fix the issue.
------------------------------cmclean.sql
====================================================================
 
REM
REM FILENAME
REM   cmclean.sql
REM DESCRIPTION
REM   Clean out the concurrent manager tables
REM NOTES
REM   Usage: sqlplus <apps_user/apps_passwd> @cmclean 
REM   
REM
REM   $Id: cmclean.sql,v 1.4 2001/04/07 15:55:07 pferguso Exp $
REM            
REM
REM +======================================================================+


set verify off;
set head off;
set timing off
set pagesize 1000

column manager format a20 heading 'Manager short name'
column pid heading 'Process id'
column pscode format a12 heading 'Status code'
column ccode format a12 heading 'Control code'
column request heading 'Request ID'
column pcode format a6 heading 'Phase'
column scode format a6 heading 'Status'


WHENEVER SQLERROR EXIT ROLLBACK;

DOCUMENT

   WARNING : Do not run this script without explicit instructions
             from Oracle Support 


   *** Make sure that the managers are shut down     *** 
   *** before running this script                    ***
               
   *** If the concurrent managers are NOT shut down, ***
   *** exit this script now !!                       ***

#

accept answer prompt 'If you wish to continue type the word ''dual'': '

set feed off
select null from &answer;
set feed on


REM     Update process status codes to TERMINATED

prompt
prompt  ------------------------------------------------------------------------

prompt  -- Updating invalid process status codes in FND_CONCURRENT_PROCESSES
set feedback off
set head on
break on manager

SELECT  concurrent_queue_name manager, 
        concurrent_process_id pid,
        process_status_code pscode
FROM    fnd_concurrent_queues fcq, fnd_concurrent_processes fcp
WHERE   process_status_code not in ('K', 'S')
AND     fcq.concurrent_queue_id = fcp.concurrent_queue_id
AND     fcq.application_id = fcp.queue_application_id;

set head off
set feedback on
UPDATE  fnd_concurrent_processes
SET     process_status_code = 'K'
WHERE   process_status_code not in ('K', 'S');



REM     Set all managers to 0 processes 

prompt
prompt  ------------------------------------------------------------------------

prompt  -- Updating running processes in FND_CONCURRENT_QUEUES
prompt  -- Setting running_processes = 0 and max_processes = 0 for all managers

UPDATE  fnd_concurrent_queues
SET     running_processes = 0, max_processes = 0;




REM     Reset control codes

prompt
prompt  ------------------------------------------------------------------------

prompt  -- Updating invalid control_codes in FND_CONCURRENT_QUEUES
set feedback off
set head on
SELECT  concurrent_queue_name manager,
        control_code ccode
FROM    fnd_concurrent_queues
WHERE   control_code not in ('E', 'R', 'X')
AND     control_code IS NOT NULL;

set feedback on
set head off
UPDATE  fnd_concurrent_queues
SET     control_code = NULL
WHERE   control_code not in ('E', 'R', 'X')
AND     control_code IS NOT NULL;

REM     Also null out target_node for all managers
UPDATE  fnd_concurrent_queues
SET     target_node = null;


REM     Set all 'Terminating' requests to Completed/Error
REM     Also set Running requests to completed, since the managers are down

prompt
prompt  ------------------------------------------------------------------------

prompt  -- Updating any Running or Terminating requests to Completed/Error
set feedback off
set head on
SELECT  request_id request,
        phase_code pcode,
        status_code scode
FROM    fnd_concurrent_requests
WHERE   status_code = 'T' OR phase_code = 'R'
ORDER BY request_id;
        
set feedback on
set head off
UPDATE  fnd_concurrent_requests
SET     phase_code = 'C', status_code = 'E'
WHERE   status_code ='T' OR phase_code = 'R';





REM     Set all Runalone flags to 'N'
REM     This has to be done differently for Release 10

prompt
prompt  ------------------------------------------------------------------------

prompt  -- Updating any Runalone flags to 'N'
prompt
set serveroutput on
set feedback off
declare
        c         pls_integer := dbms_sql.open_cursor;
        upd_rows  pls_integer;
        vers      varchar2(50);
        tbl       varchar2(50);
        col       varchar2(50);
        statement varchar2(255);
begin

        select substr(release_name, 1, 2)
        into   vers
        from fnd_product_groups;

        if vers >= 11 then
           tbl := 'fnd_conflicts_domain';
           col := 'runalone_flag';
        else
           tbl := 'fnd_concurrent_conflict_sets';
           col := 'run_alone_flag';
        end if;


        statement := 'update ' || tbl || ' set ' || col || '=''N'' where ' || col || ' = ''Y''';
        dbms_sql.parse(c, statement, dbms_sql.native);
        upd_rows := dbms_sql.execute(c);
        dbms_sql.close_cursor(c);
        dbms_output.put_line('Updated ' || upd_rows || ' rows of ' || col || ' in ' || tbl || ' to ''N''');
end;
/



prompt 

prompt  ------------------------------------------------------------------------

prompt  Updates complete.
prompt  Type commit now to commit these updates, or rollback to cancel.
prompt  ------------------------------------------------------------------------

prompt

set feedback on

REM  <= Last REM statment -----------------------------------------------------

——————————reference
https://anandmandilwar.com/2016/01/21/output-post-processor-concurrent-manager-not-able-to-start/
https://techgoeasy.com/unable-to-start-output-post-processor-and-workflow-related-concurrent-manager/
https://docs.oracle.com/cd/E26401_01/doc.122/e22953/T174296T575591.htm#8159578
https://blog.csdn.net/x_focus/article/details/25345307

赞(0) 打赏
未经允许不得转载:徐万新之路 » All About Output Post Processor (OPP) in Oracle Applications
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏