2021年10月22日 星期五

Oracle EBS: 實測跨concurrent manager之程式互斥執行

問題: 跨concurrent manager之程式設定互斥是否有效? 是否仍會依priority順序執行?

先說結論:

1.互斥仍有效

2.不一定會依priority執行

 

測試案例:

CM1: concurrent manager 1 , 可同時執行20支程式

CM2: concurrent manager 2 , 可同時執行5支程式

PA: program A , priority 5 , 執行於CM1 

PB: program B , priority 60 , 執行於CM2

PA與PB互斥

先submit PB 600支, 已開始running後, 再submit PA.

結果PB一個接一個執行, 持續running, 而PA則是一直pending .

 

2021年10月21日 星期四

Oracle EBS: 批次hold coucurrent program

問題: 當數千筆的PO Output for Communication排隊執行, 會嚴重拖慢大程式的進度, 在已切不同concurrent manager執行的狀況下, 設定互斥並無預期中的效果, 最後想到只有hold一途.

 

試過之後可行, 作法如下.

 

 hold_flag : Y/N

 

PO Output for Communication

 

concurrent_program_id : 45071

phase_code : R  (Pending)

status_code: R   (Normal)

 

--find requests

select * from fnd_concurrent_requests

 where concurrent_program_id = 45071

    and request_date> trunc(sysdate) -2

    and phase_code = 'P'    --(Pending)

    and status_code = 'I'    --(Normal)

   

--apply hold   

update fnd_concurrent_requests

   set hold_flag = 'Y'

 where concurrent_program_id = 45071

    and request_date> trunc(sysdate) -2

    and phase_code = 'P'    --(Pending)

    and status_code = 'I'    --(Normal)     

 

--remove hold   

update fnd_concurrent_requests

   set hold_flag = 'N'

 where concurrent_program_id = 45071

    and request_date> trunc(sysdate) -2

    and phase_code = 'P'    --(Pending)

    and status_code = 'I'    --(Normal)

    and hold_flag = 'Y'