Concurrent Managers 是ORACLE ERP用來控制使用者請求的管理器,通過他可以做定時處理,產生report和批處理。
Concurrent Manager有很多種,比如:
Internal Manager
Standard Manager
Receiving Transaction Manager
Receivables Tax Manager
SFM Controller Service
Inventory Manager
負責不同種類的REQUESTS, 最基本的有以下3個:
- Internal Concurrent Manager (ICM) - The Internal concurrent manager or the ICM is the 'master' concurrent manager. 主要用來管理其他的MANAGER,所以這個必須先起來。
- (os process sample) FNDLIBR FND CPMGR FNDCPMBR sysmgr="" logfile=...
- Standard Concurrent Manager - This the core manger and the most hard working of the three. 這個是最通用的Manager,通常的JOB,PROCESS都是由它來控制。除非,REQUEST有指定特殊的其他MANAGER。
- (os process sample) FNDLIBR FND Concurrent_Processor MANAGE OLOGIN="APPS/94
- Conflict Resolution Manager (CRM) - The conflict resolution manager of the CRM is responsible of handling any conflicts that might occur within the concurrent programmes. 主要是為了避免REQUESTS間的衝突,比如,有些批處理,不能同時跑,等等。
- (os process sample) FNDCRM APPS/889F9884A29D997F7676
查詢Manager SQL:SELECT user_concurrent_queue_name manager, node_name node,
running_processes actual, max_processes target, cache_size buf,
diagnostic_level, enabled_flag
FROM fnd_concurrent_queues_vl
------------------------------
Standard Manager 3 3 6 N Y
PO Document Approval Manager 3 3 N Y
查詢Manager Process SQL:
SELECT DISTINCT concurrent_process_id cpid, pid opid, os_process_id osid,
q.user_concurrent_queue_name manager, p.node_name node,
TO_CHAR (p.process_start_date,
'YY-MM-DD HH24:MI:SS'
) started_at,
p.logfile_name, p.process_status_code
FROM fnd_concurrent_processes p,
fnd_concurrent_queues_vl q,
fnd_v$process
WHERE q.application_id = queue_application_id
AND (q.concurrent_queue_id = p.concurrent_queue_id)
AND (spid = os_process_id)
AND process_status_code NOT IN ('K', 'S')
ORDER BY os_process_id,
concurrent_process_id,
q.user_concurrent_queue_name
---------------------------------------------------------------------
251606 10 8560 Internal Manager TestServer 08-01-21 14:07:25 ../TESTT.mgr A
251607 31 9527 Conflict Resolution Manager TestServer 08-01-21 14:07:29 ../c251607.mgr A
251609 32 9528 Scheduler/Prereleaser Manager TestServer 08-01-21 14:07:29 ../s251609.mgr A
查詢Process Status Code SQL:SELECT *
FROM fnd_lookups
WHERE lookup_type LIKE 'CP_PROCESS_STATUS_CODE'
-----------------------------------------------------------------
CP_PROCESS_STATUS_CODE A Active
CP_PROCESS_STATUS_CODE C Connecting
CP_PROCESS_STATUS_CODE D Deactiviating
CP_PROCESS_STATUS_CODE K Terminated
CP_PROCESS_STATUS_CODE M Migrating
CP_PROCESS_STATUS_CODE P Suspended
CP_PROCESS_STATUS_CODE R Running
CP_PROCESS_STATUS_CODE S Deactivated
CP_PROCESS_STATUS_CODE T Terminating
CP_PROCESS_STATUS_CODE Z Initializing
關於Cache Size:
如果concurrent requests很少區分優先順序,而且都是小的requests,可以設定cache size至少等於兩倍的Target processs.
這會加快處理量,減少sleep時間。其實就是來自FND_CONCURRENT_REQUESTS的資訊被cache了。
簡單來說,加大CACHE SIZE時,concurrent manager會預Crowdsourced Security Testing道還有幾個requests需要處理,就會避免進入sleep status.這樣就可以連續處理。當然需要在資源允許的條件下,也不是所有的都可以設定的。