原帖地址 http://blog.csdn.net/flower_xixi/article/details/26373871
1.首先確定要停止的JOB號

創新互聯從2013年創立,是專業互聯網技術服務公司,擁有項目成都網站制作、成都網站建設、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元武勝做網站,已為上家服務,為武勝各地企業和個人服務,聯系電話:18980820575
select * from dba_jobs_running;--得到sid和job號
2.Broken你確認的JOB
可以在PL/SQL Developer中,直接選項broken;或者使用語句:
EXEC DBMS_JOB.BROKEN(job#,TRUE);--加入job號,注意commit
3.Kill 對應的Oracle Session
select * from v$session where sid='97' --根據sid號,得到SERIAL#
找到該job的對應SESSION(SID,SERIAL#),然后執行以下命令:
--ALTER SYSTEM KILL SESSION 'sid,serial#';
-- 如果使用ALTER SYSTEM KILL SESSION執行很長時間,其實可以使用OS的命令來快速KILL掉SESSION.步驟如下:
select * from v$session where sid='97'--根據sid號,得到paddr
select * from v$process where addr='6C8F14C4' -- 加入paddr的值,得到spid的值,殺命令時用
For Windows, at the DOS Prompt: orakill oraclesid spid--注意oraclesid為數據庫實例名
For UNIX at the command line> kill –9 spid
4.檢查你的JOB是否還在運行
檢查你要停止的JOB是否還在運行,其實多數情況下,應該都已經停止了。尤其執行的第三步的“殺手”命令。
如果真的還是沒有停止,而且dba_jobs_running已經查不到該job了,則執行以下步驟;
5.select name,value from v$parameter where name ='job_queue_processes';
將Job Queue Processes的數目修改為0
ALTER SYSTEM SET job_queue_processes = 0;
job_queue_processes取值范圍為0到1000,總共可創建多少個job進程由job_queue_processes參數來決定。
注:當Job Queue Processes的數目為0,所有的JOB都會停止。
6.修改你要修改的任何東西,甚至是JOB內的內容。將job執行的所有東西注掉,寫return;否則不能編譯
也可以將job里調用的所有存儲過程內容都注掉,寫return;編譯。
7.修改完成后,將job的BROKEN狀態停止。
SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE); --必須 commit
或者在PL/SQL Developer圖形界面上操作,也一樣;將job重新啟起來。
8.恢復job_queue_processes的原始值
ALTER SYSTEM SET job_queue_processes = 10;
此時刷新幾次job,total time一會兒就會停止增長。job徹底停止。
分享文章:查殺oracle正在執行的job:jobbroken后,job的totaltime還在增長
鏈接分享:http://www.yijiale78.com/article40/pehceo.html
成都網站建設公司_創新互聯,為您提供建站公司、靜態網站、移動網站建設、動態網站、網站內鏈、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯