有時候安裝在windows下的Oracle的JOB定時任務在調用存儲過程時會因爲ORACLE.EXE (J000)或ORACLE.EXE (J001)進程出現,導致JOB卡死無法執行。
進程代碼和相關代碼的含義見我的另外一篇博客:
https://blog.csdn.net/dante_feng/article/details/90232763
ORACLE.EXE (J000)
job 具體執行進程,接受 CJQ0 分發的 job 任務,可能存在J00n的情況如J001。
下面說一下JOB因爲J000進程導致卡死無法執行的解決方法:
通過sql查詢是否存在導致JOB卡死的進程的spid:
select spid from v$session s,v$process p where s.paddr=p.addr and s.PROGRAM like 'ORACLE.EXE%' and s.ACTION = '(JOB名)' and s.BLOCKING_SESSION_STATUS = 'UNKNOWN';
例如查詢到的SPID爲 1234,我們需要通過這個SPID來殺掉卡死的進程。
一般情況下可能存在使用Oracle層面的kill語句殺不掉進程的情況,我們可以通過查詢到的spid使用操作系統命令行來kill掉進程:
我們可以調出windows的cmd命令行,使用如下命令殺掉卡死的進程:
orakill orcl (SPID)
例如:orakill orcl 1234
其中orcl爲數據庫的實例名,可按需進行修改。
殺掉進程後JOB定時任務即可恢復正常。