http://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202005%2F08%2F20200508102713_L8aCB.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1649077062&t=40b7b14053ef546a57de4934b9442cbe",

Oracle 创建定时任务 DBMS_JOB

需求:创建一个每天凌晨一点执行的任务(存储过程)

1、创建存储过程

-- 一般存储过程语法
CREATE OR REPLACE PROCEDURE UPDATE_LABEL_TABLE_DATE_DT IS
BEGIN
	UPDATE IC_CO_BAE_INFO SET DT = TO_CHAR(TRUNC(SYSDATE-1), 'yyyy-MM-dd');
	UPDATE IC_RG_RRG_INFO_V1 SET DT = TO_CHAR(TRUNC(SYSDATE-1), 'yyyy-MM-dd');
	UPDATE IC_VE_CAT_INFO SET DT = TO_CHAR(TRUNC(SYSDATE-1), 'yyyy-MM-dd');
END;

2、创建定时任务

-- dbms_job.submit(作业名, '存储过程名;', 定时类型, 任务执行时间点);
DECLARE UPDATE_LABEL_TABLE_DATE_DT_JOB NUMBER;
BEGIN
	dbms_job.submit( UPDATE_LABEL_TABLE_DATE_DT_JOB, 'UPDATE_LABEL_TABLE_DATE_DT;', SYSDATE, 'sysdate+5/86400' );
commit;
END;

-- 查看创建的定时任务(dydsba查看表:dba_jobs)
select * from user_jobs;

4、启动定时任务

-- 1、获取当前作业job ID,假设为:3
select job from user_jobs where WHAT='UPDATE_LABEL_TABLE_DATE_DT;'
-- 2、执行job任务
begin
  dbms_job.run(3);
  commit;
end;

5、停止定时任务

begin
  dbms_job.broken(3, true);
  commit;
end;

6、修改定时任务

-- 1、修改定时任务时间:改为每日凌晨一点执行
-- // TODO dbms_job.interval  语法详解
begin
  dbms_job.interval(3, 'TRUNC(sysdate) + 1 +1/(24)');
  commit;
end;

7、删除定时任务

begin
  dbms_job.remove(3,);
  commit;
end;
posted @   DeepInThought  阅读(323)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示