今天碰到乙個這個問題,由於乙個job執行的時間過長,所以打算將其分為幾塊去執行,這個job又是每天按時執行的。
下面來看怎麼實現:
第一步:檢視正在執行的jobs
sql>select*
fromdba_jobs_running;
然後確定你要停止的job,這個資料字典對應的job就是下面要執行的過程的第乙個引數。
第二步:確定要停掉的job的
sid,
serial#和系統程序id
selectb.sid,b.serial#,c.spid
fromdba_jobs_running a,v$session b,v$process c
wherea.sid = b.sid
andb.paddr = c.addr
第三步:呼叫dbms_job的broken函式將要停止的job乾掉
sql> exec dbms_job.broken(18,true);
pl/sql procedure successfully completed
sql>commit;
此時這個job還是執行的,可以通過
dba_jobs_running檢視
第四步:使用alter system kill session '
sid,
serial#;殺掉會話。
如果要殺很久,直接使用作業系統命令
kill -9 spid
第五步:調整這個job
第六步:將這個job置為正常狀態
sql> exec dbms_job.broken(18,false);
commit;
此時如果直接提交了的話,可能就會馬上執行這個job,如果不想讓其今天再執行了,可以這樣處理,先將這個job remove然後在建立乙個新的job 例如
sql> exec dbms_job.remove(18)
pl/sql procedure successfully completed
sql> commit;
再建立乙個新的
sql> declare v_job number;
2 begin
3 dbms_job.submit(v_job,'pro_bak_job;',to_date('2012-11-17 02:00:00','yyyy-mm-dd hh24-mi-ss'),'trunc(sysdate+1)+2/24',false);
4 commit;
5 end;
6 /
python判斷乙個程序是否正在執行
import os,sys import win32com def proc exist process name is exist false wmi win32com.client.getobject winmgmts processcodecov wmi.execquery select fr...
如何判斷乙個執行緒是否正在執行
建立執行緒時 thread1 new mythread false thread1 freeonterminate false 不自動釋放執行緒 thread1 resume 開始執行執行緒 在execute方法中迴圈檢查terminated是否為true,如果為true,則退出迴圈.在主線程中結束...
如何判斷乙個執行緒是否正在執行
建立執行緒時 thread1 new mythread false thread1 freeonterminate false 不自動釋放執行緒 thread1 resume 開始執行執行緒 在execute方法中迴圈檢查terminated是否為true,如果為true,則退出迴圈.在主線程中結束...