并发管理的并发请求表fnd_concurrent_requests,这个表存在三个时间:
requested_start_date
The date and time when users want the request to start running(用户希望请求开始运行的日期和时间)
request_date
Concurrent request submission date(并发请求提交日期)
ACTUAL_START_DATE
The actual time and date when the request started running(请求开始运行的实际时间和日期)
问题:请求启动时间与请求时间相比,有时候启动时间小于请求时间,有时候启动时间大于请求时间
解决:查看请求状态,请求状态的对应关系是--
- PENDING(待定) Normal(正常) Request is waiting for the next available manager.(请求正在等待下一个可用的管理器。)
- PENDING(待定) Standby(正在等待准备) Program to run request is incompatible with other program(s) currently running.(运行请求的程序与当前运行的其他程序不兼容。)
- PENDING(待定) Scheduled(调度) Request is scheduled to start at a future time or date.(请求计划在将来的时间或日期开始。)
- PENDING(待定) Waiting(等待中) A child request is waiting for its Parent request to mark it ready to run. For example, a report in a report set that runs sequentially must wait for a prior report to complete.(子请求正在等待其父请求将其标记为准备运行。 例如,按顺序运行的报表集中的报表必须等待先前的报表完成。)
- 当为待定正常时候,启动时间大于请求时间,说明计划请求已经到了提交时间,但是要等待管理器空闲才能开始。ACTUAL_START_DATE无值
- 当为待定正在等待时候,启动时间小于请求时间,说明计划请求请求已经开始时间已经到了,但是需要等待其他请求完成才能提交。ACTUAL_START_DATE无值
- 当为运行正常的时候,启动时间等于请求时间。ACTUAL_START_DATE有值。
-----------------------------------------------------------------------------------------------------------------------------
对于请求为 : 阶段:[待定] ,状态:[ 正常]
Oracle的诊断信息是:[下一个可用的并发管理器将处理此请求。 并发管理器在完成其当前处理的请求和早于此请求的其它请求后,才会处理此请求。用户 ***** 在 02-*月 -*** 09:30:07 提交此请求。 未请求活动。这是正常状态。您可以通过降低该请求的优先级值来提前此请求的处理开始时间。只有系统管理员职责才可以更新请求的优先级值。]
对于请求为 : 阶段:[待定] ,状态:[正在等待]
Oracle的诊断信息是:[此请求正在等待冲突解决管理器的处理。 由于其它请求与此请求相冲突,因此尚未开始处理此请求。冲突解决管理器将确定此请求的开始处理时间。 用户 ***** 在 02-*月 -*** 09:30:07 提交此请求。 未请求活动。这是正常状态。]
----------------------------------
诊断信息是用包FND_CONC.DIAGNOSE获得。FND_CONC.GET_PHASE ,FND_CONC.GET_STATUS
----------------------------------20190904
最近发现单独调用FND_CONC.DIAGNOSE不全面,原来后面还要拼接fnd_message.get,fnd_message不熟继续研究,然后发现可以拼接如下表获得和form里诊断文本框完全相同的结果:
if (name_in('help.user_status_code') in ('Q', 'A', 'W')) then
fnd_message.set_name('FND', 'CONC-DG-WAITING REQS');
help_text := help_text || chr(10) || chr(10) || fnd_message.get || chr(10);
for rec in (select wreqid, why
from fnd_conc_waiting_requests
where reqid = request_id) loop
exit when loopcnt > 10;
help_text := help_text || rec.wreqid || ' - ' || rec.why || chr(10);
loopcnt := loopcnt + 1;
end loop;
end if;