並發管理的並發請求表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;