Oracle定时存储过程

举报
码农小胖哥 发表于 2022/03/30 23:48:37 2022/03/30
【摘要】 --Oracle 定时执行存储过程 -- 时间 设定 复制右边函数 -- 每分钟执行一次 'sysdate+1/1440' -- 每天 1点执行 'TRUNC(sysdate) + 1 +1/ (24)' 如果设定当天2点执行 'TRUNC(sysdate) + 1 +2/(24)' --...
--Oracle 定时执行存储过程





-- 时间 设定    复制右边函数 

-- 每分钟执行一次    'sysdate+1/1440'

--  每天 1点执行   'TRUNC(sysdate) + 1 +1/ (24)'     如果设定当天2点执行 'TRUNC(sysdate) + 1 +2/(24)'  

--每天午夜12点: 'TRUNC(SYSDATE + 1)'

--每天早上8点30分: 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

--每星期二中午12点: 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

--每个月第一天的午夜12点: 'TRUNC(LAST_DAY(SYSDATE ) + 1)'

--每个季度最后一天的晚上11点: 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

--每星期六和日早上6点10分: 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

--每月25号00:00执行: 'TRUNC(LAST_DAY(SYSDATE ) + 25)'


--首先创建执行计划

DECLARE
plan INTEGER;
BEGIN
DBMS_JOB.SUBMIT(plan,'存储过程名称;',sysdate, 时间);
 END;
 
 
 
 --查询 计划编号,执行的存储过程, 设定的执行时间  
 
 select job,what,interval  from user_jobs;
 
 
 
 --执行计划   查询需要计划的计划 运行 run(user_jobs.job)函数
 
BEGIN
   DBMS_JOB.run(计划编号);
 END;
 
 
 --查询 所有计划的下一次执行时间    加上 where job=计划编号   查询特定计划的下一次执行时间
 select job,next_date,what from dba_jobs 
 
 
 
 --暂停执行计划
 BEGIN
  DBMS_JOB.BROKEN(计划编号,True);
 END;
 
 --移除计划
 
 BEGIN
DBMS_JOB.REMOVE(计划编号);
 END;
 
 
 
 --修改计划执行时间  先移除计划  重新创建计划  否则会有2个不同时间的计划同时执行
 
 
 


文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。

原文链接:felord.blog.csdn.net/article/details/53102775

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。