xmlp 报表运行完成后,状态为warning,其原因大概有以下3类:
1."输出提交处理程序"(Output Post Processor)未运行(状态为非active),或者请求未生成结果2."输出提交处理程序"(Output Post Processor)正在运行(状态为active),请求未生成结果3.并发管理器延时等待"输出提交处理程序"(Output Post Processor)完成该请求提示内容:1.…+————- 1) PUBLISH ————-+Unable to find an Output Post Processor service to post-process request [request_id].Check that the Output Post Processor service is running.+————————————–+…2....+————- 1) PUBLISH ————-+The Output Post-processor is running but has not picked upthis request.No further attempts will be made to post-processthis request, and the request will be marked with Warning status.Setting the profile option Concurrent: OPP Response Timeoutto a higher value may be necessary.+————————————–+3.…+————- 1) PUBLISH ————-+The concurrent manager has timed out waiting for the Output Post-processorto finish this request.Check that there are enough Output Post-processor service processes running.More information may be found in the service process logfile.+————————————–+…解决方法:*确认"输出提交处理程序"(Output Post Processor)的状态为有效(enable/active)*如果确认其有效,取得opp的log文件方法: 以拥有系统管理员的职责的帐户登陆系统,选择系统管理员职责选择"并发"-->"管理器"-->"管理"-->选择"输出提交处理程序"(Output Post Processor)-->点击"处理"按钮察看请求状态是否为有效(ACTIVE)+对于"输出提交处理程序"(Output Post Processor)从"并发管理器"处理过程中获取请求而言,一般至少需要花费120秒(默认)所以*将配置"文件并发:OPP 回应超时"(Concurrent:OPP Response Timeout)的值增大,+并发管理器运行成功后调用OPP,但OPP花费太多时间处理该job,一般而言,该延时时间一般取决于--XML 数据文件的大小--模版的负责程度--服务器的执行时间对于xmlp引擎生成输出文件,其默认的处理延时时间至少为300秒,所以如果遇到下列错误…+————- 1) PUBLISH ————-+The concurrent manager has timed out waiting for the Output Post-processorto finish this request.Check that there are enough Output Post-processor service processes running.More information may be found in the service process logfile.+————————————–+…*请增加配置文件"并发:OPP 处理超时"("Concurrent:OPP Process Timeout")的值-------------------------------------------------------------------------------------------------------------------------
再补充一些:
出现"输出提交处理程序提交失败"这样的错误,最重要的就是对opp日志文件的分析,可以使用下面的语句进行查询:CODE:
select fcpp.concurrent_request_id req_id ,fcp.node_name ,fcp.logfile_name from fnd_conc_pp_actions fcpp ,fnd_concurrent_processes fcpwhere fcpp.processor_id = fcp.concurrent_process_idand fcpp.action_type = 6and fcpp.concurrent_request_id = 351091(请求号码)
日志文件中我们最感兴趣的就是那一串串异常,类似下面
CODE:
[4/9/09 3:37:47 PM] [UNEXPECTED] [23373:RT352116] java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at oracle.apps.xdo.common.xml.XSLT10gR1.invokeProcessXSL(XSLT10gR1.java:624)at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:421)at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:233)at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:177)at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1044)at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:997)at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:212)at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1659)at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:969)at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:5926)at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3458)at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3547)at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:259)at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:172)Caused by: java.lang.OutOfMemoryError: Java heap space
拿到上面的异常后再进行分析。
CODE:
update fnd_cp_servicesset developer_parameters = 'J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2048m'where service_id = (select manager_type from fnd_concurrent_queues where concurrent_queue_name = 'FNDCPOPP');然后重启并发管理器(进程完后再启动)
使用下面语句可以确认其调整结果:
CODE:
select DEVELOPER_PARAMETERS from FND_CP_SERVICES where SERVICE_ID = (select MANAGER_TYPE from FND_CONCURRENT_QUEUES where CONCURRENT_QUEUE_NAME = 'FNDCPOPP');如下:J:oracle.apps.fnd.cp.gsf.GSMServiceController:-mx2048m