一文詳解Oracle如何停止正在運行的Job
Oracle 如何停止正在運行的 Job
先了解是dbms_job 還是 dbms_scheduler,再確定操作命令。
一 使用 DBMS_JOB 包停止作業(yè)(適用于舊版 Job)
1.1 查看正在運行的 Job
SELECT job, what, this_date, this_sec, failures, broken FROM user_jobs WHERE running = 1;
1.2 停止正在運行的 Job
-- 方法1:將作業(yè)標記為 broken 狀態(tài) BEGIN DBMS_JOB.BROKEN(job_id, TRUE); COMMIT; END; / -- 方法2:直接刪除作業(yè) BEGIN DBMS_JOB.REMOVE(job_id); COMMIT; END; /
二 使用 DBMS_SCHEDULER 包停止作業(yè)(推薦用于新版 Scheduler Job)
2.1 查看正在運行的 Scheduler Job
SELECT job_name, status, elapsed_time FROM user_scheduler_running_jobs;
2.2 停止正在運行的 Scheduler Job
-- 方法1:停止單個作業(yè)
BEGIN
DBMS_SCHEDULER.STOP_JOB(job_name => 'YOUR_JOB_NAME', force => TRUE);
END;
/
-- 方法2:停止所有運行中的作業(yè)(謹慎使用)
BEGIN
FOR r IN (SELECT job_name FROM user_scheduler_running_jobs) LOOP
DBMS_SCHEDULER.STOP_JOB(r.job_name, force => TRUE);
END LOOP;
END;
/
三 通過會話級別終止 Job
3.1 查找 Job 對應(yīng)的會話
SELECT s.sid, s.serial#, s.username, s.program, j.job, j.what FROM v$session s, dba_jobs_running jr, dba_jobs j WHERE s.sid = jr.sid AND jr.job = j.job;
3.2 終止會話
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
四 注意事項
強制停止 vs 正常停止:
force => FALSE(默認):等待當前操作完成force => TRUE:立即中斷
狀態(tài)檢查:
-- 檢查作業(yè)狀態(tài) SELECT job_name, state FROM user_scheduler_jobs; -- 檢查作業(yè)運行歷史 SELECT * FROM user_scheduler_job_run_details ORDER BY log_date DESC;
自動重試:停止作業(yè)不會自動禁用,如需永久禁用:
BEGIN DBMS_SCHEDULER.DISABLE('YOUR_JOB_NAME'); END; /依賴關(guān)系:停止鏈式作業(yè)(chain job)時可能需要停止整個鏈
五 最佳實踐
先檢查后停止:
-- 檢查作業(yè)詳情 SELECT job_name, enabled, state, run_count, failure_count FROM user_scheduler_jobs WHERE job_name = 'YOUR_JOB_NAME';
記錄操作:
-- 記錄停止作業(yè)的操作 INSERT INTO job_control_log VALUES('YOUR_JOB_NAME', 'STOPPED', SYSDATE, USER); COMMIT;后續(xù)處理:
- 停止后可能需要手動清理殘留數(shù)據(jù)
- 對于重要作業(yè),停止后應(yīng)考慮重新調(diào)度
更詳細的內(nèi)容請查看官方文檔:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956
總結(jié)
到此這篇關(guān)于Oracle如何停止正在運行的Job的文章就介紹到這了,更多相關(guān)Oracle停止正在運行的Job內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle截取字符(substr)檢索字符位置(instr)示例介紹
本節(jié)主要介紹了oracle截取字符(substr)檢索字符位置(instr)的使用,需要的朋友可以參考下2014-07-07
oracle異常(預(yù)定義異常,自定義異常)應(yīng)用介紹
在開發(fā)過程中,經(jīng)常會遇到一些測試,這時候就會想了解測試的過程,然后再根據(jù)過程分析代碼錯在哪里,這種情況下,就需要用到自定義異常,需要了解的朋友可以參考本文2012-11-11
Oracle中的instr()函數(shù)應(yīng)用及使用詳解
這篇文章主要介紹了Oracle中的instr()函數(shù)應(yīng)用及使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12
關(guān)于系統(tǒng)重裝后Oracle數(shù)據(jù)庫完全恢復(fù)的解決辦法
本篇文章是對系統(tǒng)重裝后Oracle數(shù)據(jù)庫完全恢復(fù)的解決辦法進行了詳細的分析介紹,需要的朋友參考下2013-06-06
Windows系統(tǒng)安裝Oracle 11g 數(shù)據(jù)庫圖文教程
這篇文章主要介紹了Windows系統(tǒng)安裝Oracle 11g 數(shù)據(jù)庫圖文教程,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10

