今天遇到Concurrent Program無法運行,經檢查後,發現是Internal Manager掛掉了。
Internal Manager是管理所有Concurrent Manager的管理程序,不會影響到EBS的Forms,所以它掛掉並不會影響EBS的操作,有時候會沒有發現掛掉了。
進入System Adminisrator,查看Concurent -> Manager -> Administer,檢查Internal Manager的Autual是否>=1 ,如果為0則表示沒有正常運行。
我的作法是先登入到EBS的作業系統,例如我的是Solaris,先執行下列的指令後再手動把這些process刪掉。
$ ps -ef |grep FNDLIBR
$ kill -9 <Process ID>
或是執行adcmctl.sh把相關的service停下來並手動把無法停用的process刪掉
$ adcmctl.sh stop apps/XXXXX
$ ps -ef |grep FNDLIBR
$ kill -9 <Process ID>
接著重啟Concurrent Manager:
$ adcmctl.sh start apps/XXXXX
經過上述的步驟,我的ICM終於恢復了,也不用重開整個EBS,接下來要查詢log,以便找出問題。
有三個方式可以找到ICM的log:
1、以apps User登入到系統,並執行下列指令如下,例如找到log file:TEST_0826.mgr
$ cd $APPLCSF/$APPLLOG
$ ls -lrt *$TWO_TASK*.mgr
-rw-r--r-- 1 testmgr dba 5900612 Sep 12 10:40 TEST_0826.mgr
2、執行下列的SQL,以找出log file
SELECT fp.logfile_name as "ICM_LOG_NAME"
FROM fnd_concurrent_processes fp, fnd_concurrent_queues fq
WHERE fp.concurrent_queue_id = fq.concurrent_queue_id
AND fp.queue_application_id = fq.application_id
AND fq.manager_type = '0'
AND fp.process_status_code = 'S';
3、在EBS內登入到Sysadmin Administor Responsibility
Go to ->Concurrent -> Manager -> Administer -Processes -> Click button Internal Manager Log.如下圖
找到log後,查到的問題是ORA-04030: out of process memory,是一支concurrent request造成的。