Oracle中DBMS_JOB.Broken命令的替代方案求助
DBMS_JOB.BROKEN 的 DBMS_SCHEDULER 替代方法
在Oracle的DBMS_SCHEDULER中,没有和DBMS_JOB.BROKEN完全对应的直接方法,但可以通过DBMS_SCHEDULER.DISABLE实现标记作业为中断、阻止其执行的效果,对应你原有的dbms_job.broken(oracle_job_num, true);逻辑。
替代代码示例
原DBMS_JOB代码:
dbms_job.broken(oracle_job_num, true);
对应的DBMS_SCHEDULER替代代码:
-- 禁用作业(等同于标记为中断) DBMS_SCHEDULER.DISABLE(job_name => '你的作业名称');
若需要恢复作业执行(对应dbms_job.broken(oracle_job_num, false);),则使用:
DBMS_SCHEDULER.ENABLE(job_name => '你的作业名称');
注意事项
DBMS_SCHEDULER以作业名称作为标识,而非DBMS_JOB的编号。如果代码中仍持有原DBMS_JOB编号,可通过以下查询获取对应作业名称:
SELECT job_name FROM USER_SCHEDULER_JOBS WHERE job_id = oracle_job_num; -- oracle_job_num为原DBMS_JOB的编号
- 执行
DISABLE操作后,作业将停止按计划执行,直到被重新启用。
内容的提问来源于stack exchange,提问作者Venkatesh R
相关产品推荐
相关产品推荐

