/* 以下命令在 SQL*Plus 中運行 */ --任務不執行時檢查步驟 --1. 檢查實例會話是否受限制 select instance_name,logins from v$instance; -- 若提示 logins=RESTRICTED 則執行 alter system disable restricted session; --2. 確保 job_queue_processes > 0 show parameter job_queue_processes; --3. 檢查任務是否依然在運行 select * from dba_jobs_running;
我遇到的問題是因為之前提交的任務仍然在運行,因此重新提交相同任務時不執行。oracle設定的同時執行任務進程數有限,所以在上一次提交的任務未執行完畢時,再次提交的任務只能在隊列中等待,不會直接執行。
我寫了個視圖,可以方便的查詢當前執行的任務
--查詢正在運行的任務 /* 需要在sys登錄下授予用戶權限 grant select on dba_jobs_running to a2admin; grant select on v_$session to a2admin; */ create or replace view job_run_view as select a.job,a.sid,b.SERIAL#,a.failures,a.last_date,a.this_date,a.instance from dba_jobs_running a,v$session b where a.sid=b.sid order by 1;若需要關閉任務進程,執行以下代碼,相應替換掉sid和serial#
--關閉進程sid,serial#,替換為相應值 --alter system kill session 'sid,serial';