当前位置:首页 > 技能相关 > PLSQL > 正文内容

利用PLSQL工具创建Oracle库定时任务,用于执行存储过程或指定代码

admin2年前 (2023-11-02)PLSQL4010 修订时间:2023-11-08 11:29:53

1、什么是定时任务

用于固定时间或执行时间执行既定任务的方法。

1.1语法

语法:

declare 
 job_test number;
 begin dbms_job.submit( 
   job_test, --job:定时器ID,系统自动获得 
   'p_json2;',  --what:执行的存储过程名 
    sysdate, --next_date:定时器开始执行的时间,这里表示立即执行 
   'sysdate + 1/1440' --interval:每隔1分钟执行一次 
 );
 commit;  
 end;

job参数:输出参数,由submit()过程返回的binary_integer这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs试图查询job值。

what参数:将被执行的PL/SQL代码块,存储过程名称等。

next_date参数:指何时将运行这个工作。

interval参数:指何时这个工作将被重新执行。

1.2 查询job记录

select * from user_jobs;                   --#查看调度任务
select * from dba_jobs_running;            --#查看正在执行的调度任务
select * from dba_jobs;                    --#查看执行完的调度任务
select * from all_jobs;

1.3删除job

begin
  dbms_job.remove(查询到的job的id);
  commit;end;

或者

declare
job_no number ;
begin
select job into job_no from user_jobs where what='TEST1();'--通过存储过程的字段信息来进行查找job的ID标识
DBMS_JOB.remove(job_no);
end;

1.4手动调用job

begin
  dbms_job.run(查询到的job的id);
end;

1.5停止job

dbms.broken(job,broken,nextdate);   
dbms_job.broken(v_job,true,next_date); 
/*停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。   */

1.6修改间隔时间

dbms_job.interval(job,interval);

1.7修改下次执行时间

dbms_job.next_date(job,next_date);

interval参数常用值示例

用法描述
TRUNC(SYSDATE+1)每天午夜12:00
TRUNC(SYSDATE+1)+(860+30)/(2460) 每天早上8:30
NEXT_DAY(TRUNC(SYSDATE),“TUESDAY”)+12/24每星期二中午12:00
TRUNC(LAST_DAY(SYSDATE)+1)每个月第一天的午夜12:00
TRUNC(ADD_MONTHS(SYSDATE+2/24,3),“Q”)-1/24 每个季度最后一天的晚上11:00
TRUNC(LEAST(NEXT_DAY(SYSDATE,“SATURDAY”),NEXT_DAY(SYSDATE,“SUNDAY”)))+(660+10)/(2460)每星期六和日早上6:10
sysdate+3/(246060)每3秒钟执行一次
sysdate+2/(24*60)每2分钟执行一次
TRUNC(sysdate,’mi’) + 1/ (24*60)每分钟执行
sysdate+1/(24*60)每分钟执行
sysdate+1每天
sysdate+1/24每小时
sysdate+2/24*60每2分钟
sysdate+30/246060每30秒
TRUNC(sysdate+1)每天凌晨0点执行
TRUNC(sysdate+1)+1/24每天凌晨1点执行
TRUNC(sysdate+1)+(860+30)/(2460)每天早上8:30点执行
TRUNC(next_day(sysdate,‘星期一’))+1/24每周一凌晨1点执行
TRUNC(next_Day(sysdate,1))+2/24每周一凌晨2点执行
TRUNC(LAST_DAY(SYSDATE)+1)每月1日凌晨0点执行
TRUNC(LAST_DAY(SYSDATE)+1+1/24) 每月1日凌晨1点执行
TRUNX(ADD_MONTHS(SYSDATE,3),‘q’)每季度的第一天凌晨0点执行
TRUNX(ADD_MONTHS(SYSDATE,3),‘q’)+1/24每季度的第一天凌晨1点执行
TRUNX(ADD_MONTHS(SYSDATE+2/24,3),‘q’)-1/24每季度的最后一天的晚上11点执行
ADD_MONTHS(TRUNC(SYSDATE,‘yyyy’),6)+1/24每年7月1日和1月1日凌晨1点
ADD_MONTHS(TRUNC(SYSDATE,‘yyyy’),12)+1/24每年1月1日凌晨1点执行

以上时间节点仅供参考,更多时间节点请参考修改即可。

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=327

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。