一文詳解Oracle如何停止正在運(yùn)行的Job
Oracle 如何停止正在運(yùn)行的 Job
先了解是dbms_job 還是 dbms_scheduler,再確定操作命令。
一 使用 DBMS_JOB 包停止作業(yè)(適用于舊版 Job)
1.1 查看正在運(yùn)行的 Job
SELECT job, what, this_date, this_sec, failures, broken FROM user_jobs WHERE running = 1;
1.2 停止正在運(yùn)行的 Job
-- 方法1:將作業(yè)標(biāo)記為 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 查看正在運(yùn)行的 Scheduler Job
SELECT job_name, status, elapsed_time FROM user_scheduler_running_jobs;
2.2 停止正在運(yùn)行的 Scheduler Job
-- 方法1:停止單個(gè)作業(yè)
BEGIN
DBMS_SCHEDULER.STOP_JOB(job_name => 'YOUR_JOB_NAME', force => TRUE);
END;
/
-- 方法2:停止所有運(yùn)行中的作業(yè)(謹(jǐn)慎使用)
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;
/
三 通過(guò)會(huì)話級(jí)別終止 Job
3.1 查找 Job 對(duì)應(yīng)的會(huì)話
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 終止會(huì)話
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
四 注意事項(xiàng)
強(qiáng)制停止 vs 正常停止:
force => FALSE(默認(rèn)):等待當(dāng)前操作完成force => TRUE:立即中斷
狀態(tài)檢查:
-- 檢查作業(yè)狀態(tài) SELECT job_name, state FROM user_scheduler_jobs; -- 檢查作業(yè)運(yùn)行歷史 SELECT * FROM user_scheduler_job_run_details ORDER BY log_date DESC;
自動(dòng)重試:停止作業(yè)不會(huì)自動(dòng)禁用,如需永久禁用:
BEGIN DBMS_SCHEDULER.DISABLE('YOUR_JOB_NAME'); END; /依賴關(guān)系:停止鏈?zhǔn)阶鳂I(yè)(chain job)時(shí)可能需要停止整個(gè)鏈
五 最佳實(shí)踐
先檢查后停止:
-- 檢查作業(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ù)處理:
- 停止后可能需要手動(dòng)清理殘留數(shù)據(jù)
- 對(duì)于重要作業(yè),停止后應(yīng)考慮重新調(diào)度
更詳細(xì)的內(nèi)容請(qǐng)查看官方文檔:
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如何停止正在運(yùn)行的Job的文章就介紹到這了,更多相關(guān)Oracle停止正在運(yùn)行的Job內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle?11g數(shù)據(jù)庫(kù)常用對(duì)象創(chuàng)建與管理方法詳解
這篇文章主要介紹了Oracle?11g數(shù)據(jù)庫(kù)常用對(duì)象創(chuàng)建與管理的相關(guān)資料,Oracle 11g數(shù)據(jù)庫(kù)是企業(yè)級(jí)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它提供了強(qiáng)大的數(shù)據(jù)管理功能,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-11-11
Oracle中行列互轉(zhuǎn)從基礎(chǔ)到進(jìn)階過(guò)程詳解
Oracle行列轉(zhuǎn)換是一種強(qiáng)大的數(shù)據(jù)處理技術(shù),它在數(shù)據(jù)操作中扮演著重要角色,尤其是在清洗、整理和合并數(shù)據(jù)時(shí),下面這篇文章主要介紹了Oracle中行列互轉(zhuǎn)從基礎(chǔ)到進(jìn)階的相關(guān)資料,需要的朋友可以參考下2025-09-09
Oracle的CLOB大數(shù)據(jù)字段類(lèi)型操作方法
VARCHAR2既分PL/SQL Data Types中的變量類(lèi)型,也分Oracle Database中的字段類(lèi)型,不同場(chǎng)景的最大長(zhǎng)度不同。接下來(lái)通過(guò)本文給大家分享Oracle的CLOB大數(shù)據(jù)字段類(lèi)型操作方法,感興趣的朋友一起看看吧2017-08-08
Oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán)
本篇文章給大家介紹oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán),當(dāng)查詢返回單行記錄時(shí)使用隱式游標(biāo),查詢返回多行記錄并逐行進(jìn)行處理時(shí)使用顯式游標(biāo),對(duì)本文感興趣的朋友一起學(xué)習(xí)吧2015-11-11
Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能詳細(xì)深入解析
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵EXPDP/IMPDP導(dǎo)出導(dǎo)入功能的相關(guān)資料,數(shù)據(jù)泵導(dǎo)出/導(dǎo)入屬于邏輯備份,熱備份與冷備份都屬于物理備份,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

