如何使用DBMS_SCHEDULER禁用Oracle中的调度任务
禁用DBMS_SCHEDULER调度任务操作方法
前置要求
- 你需要是该调度任务的所有者,或持有
ALTER ANY JOB系统权限、SCHEDULER_ADMIN角色
操作步骤
1. 确认待禁用任务的准确名称
先执行查询确认任务存在且当前状态,避免操作错任务:
-- 查询当前用户名下所有调度任务的名称和启用状态 SELECT job_name, enabled FROM user_scheduler_jobs; -- 若有权限查询全库调度任务,可使用DBA视图 SELECT owner, job_name, enabled FROM dba_scheduler_jobs WHERE owner = '任务所属用户名';
2. 执行禁用操作
基础禁用(无正在运行的任务实例时使用)
直接调用DISABLE存储过程即可:
BEGIN DBMS_SCHEDULER.DISABLE( job_name => '你的调度任务名称' ); END; / -- 也可以用简写EXEC语句 EXEC DBMS_SCHEDULER.DISABLE('你的调度任务名称');
强制禁用(存在正在运行的任务实例时使用)
如果当前任务有正在运行的实例,添加force => true参数,会先终止运行中的实例再完成禁用:
EXEC DBMS_SCHEDULER.DISABLE(job_name => '你的调度任务名称', force => true);
3. 验证禁用结果
再次查询任务状态,确认ENABLED字段值为FALSE即可:
SELECT job_name, enabled FROM user_scheduler_jobs WHERE job_name = '你的调度任务名称';
注意事项
- Oracle默认将元数据存储为大写,若你创建任务时使用双引号指定了小写/特殊大小写的任务名,调用DISABLE时需要严格匹配大小写,同时给任务名加双引号,示例:
EXEC DBMS_SCHEDULER.DISABLE('"my_lowercase_job"'); - 禁用操作只会停止任务后续的调度触发,不会删除任务本身,后续需要恢复时可调用
DBMS_SCHEDULER.ENABLE('任务名')重新启用。
内容的提问来源于stack exchange,提问作者IT Expert
相关产品推荐
相关产品推荐

