当前位置: 首页 > news >正文

Oracle 如何停止正在运行的 Job

Oracle 如何停止正在运行的 Job

先了解是dbms_job 还是 dbms_scheduler,再确定操作命令。

一 使用 DBMS_JOB 包停止作业(适用于旧版 Job)

1.1 查看正在运行的 Job

SELECT job, what, this_date, this_sec, failures, broken 
FROM user_jobs 
WHERE running = 1;

1.2 停止正在运行的 Job

-- 方法1:将作业标记为 broken 状态
BEGINDBMS_JOB.BROKEN(job_id, TRUE);COMMIT;
END;
/-- 方法2:直接删除作业
BEGINDBMS_JOB.REMOVE(job_id);COMMIT;
END;
/

二 使用 DBMS_SCHEDULER 包停止作业(推荐用于新版 Scheduler Job)

2.1 查看正在运行的 Scheduler Job

SELECT job_name, status, elapsed_time 
FROM user_scheduler_running_jobs;

2.2 停止正在运行的 Scheduler Job

-- 方法1:停止单个作业
BEGINDBMS_SCHEDULER.STOP_JOB(job_name => 'YOUR_JOB_NAME', force => TRUE);
END;
/-- 方法2:停止所有运行中的作业(谨慎使用)
BEGINFOR r IN (SELECT job_name FROM user_scheduler_running_jobs) LOOPDBMS_SCHEDULER.STOP_JOB(r.job_name, force => TRUE);END LOOP;
END;
/

三 通过会话级别终止 Job

3.1 查找 Job 对应的会话

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;

四 注意事项

  1. 强制停止 vs 正常停止

    • force => FALSE(默认):等待当前操作完成
    • force => TRUE:立即中断
  2. 状态检查

    -- 检查作业状态
    SELECT job_name, state FROM user_scheduler_jobs;-- 检查作业运行历史
    SELECT * FROM user_scheduler_job_run_details 
    ORDER BY log_date DESC;
    
  3. 自动重试:停止作业不会自动禁用,如需永久禁用:

    BEGINDBMS_SCHEDULER.DISABLE('YOUR_JOB_NAME');
    END;
    /
    
  4. 依赖关系:停止链式作业(chain job)时可能需要停止整个链

五 最佳实践

  1. 先检查后停止

    -- 检查作业详情
    SELECT job_name, enabled, state, run_count, failure_count
    FROM user_scheduler_jobs
    WHERE job_name = 'YOUR_JOB_NAME';
    
  2. 记录操作

    -- 记录停止作业的操作
    INSERT INTO job_control_log 
    VALUES('YOUR_JOB_NAME', 'STOPPED', SYSDATE, USER);
    COMMIT;
    
  3. 后续处理

    • 停止后可能需要手动清理残留数据
    • 对于重要作业,停止后应考虑重新调度

更详细的内容请查看官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956

谨记:心存敬畏,行有所止。

相关文章:

  • TOA与AOA联合定位的高精度算法,三维、4个基站的情况,MATLAB例程,附完整代码
  • 内部聊天软件,BeeWorks-安全的企业内部通讯软件
  • MATLAB项目实战(一)
  • 加密软件的发展:从古典密码到量子安全
  • VUE快速入门-3:模版示例
  • SAP系统青果糖无法报工
  • MySQL常用SQL语句的示例
  • 蛇行等长 差分阻抗
  • 台式机 thingsboard 部署 MQTT服务器端口查询及公开本地站点到公网,MQTT客户端配置
  • CSS例子 > 图片瀑布流布局(vue2)
  • nginx-基础知识
  • vscode构建简单编译和调试环境
  • 使用预训练模型的视频分类
  • [图论]Prim
  • XCZU4CG‑2SFVC784I 赛灵思 FPGA XilinxZynq UltraScale+ MPSoC
  • 新型多机器人协作运输系统,轻松应对复杂路面
  • 算法思想之分治-归并
  • 【Linux】第八章 监控和管理Linux进程
  • SpringBoot——配置文件
  • 【机器人创新创业应需明确产品定位与方向指南】
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • “大鼻子情圣”德帕迪约因性侵被判缓刑,还有新的官司等着他
  • “典孝急乐批麻蚌赢”:互联网“八字真言”与当代赛博赢学
  • 国台办:80年前台湾重归中国版图,80年后不可能让台湾分裂出去
  • 央媒评网红质疑胖东来玉石定价暴利:对碰瓷式维权不能姑息
  • 图讯丨习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式