一文詳解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?11g數(shù)據(jù)庫常用對象創(chuàng)建與管理方法詳解
這篇文章主要介紹了Oracle?11g數(shù)據(jù)庫常用對象創(chuàng)建與管理的相關(guān)資料,Oracle 11g數(shù)據(jù)庫是企業(yè)級關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了強大的數(shù)據(jù)管理功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-11-11
Oracle中行列互轉(zhuǎn)從基礎(chǔ)到進階過程詳解
Oracle行列轉(zhuǎn)換是一種強大的數(shù)據(jù)處理技術(shù),它在數(shù)據(jù)操作中扮演著重要角色,尤其是在清洗、整理和合并數(shù)據(jù)時,下面這篇文章主要介紹了Oracle中行列互轉(zhuǎn)從基礎(chǔ)到進階的相關(guān)資料,需要的朋友可以參考下2025-09-09
Oracle的CLOB大數(shù)據(jù)字段類型操作方法
VARCHAR2既分PL/SQL Data Types中的變量類型,也分Oracle Database中的字段類型,不同場景的最大長度不同。接下來通過本文給大家分享Oracle的CLOB大數(shù)據(jù)字段類型操作方法,感興趣的朋友一起看看吧2017-08-08
Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能詳細深入解析
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能的相關(guān)資料,數(shù)據(jù)泵導(dǎo)出/導(dǎo)入屬于邏輯備份,熱備份與冷備份都屬于物理備份,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2023-12-12

