ITPub博客

首页 > 数据库 > Oracle > dbms_job 定时计划

dbms_job 定时计划

原创 Oracle 作者:抬头看见班主任 时间:2015-03-05 15:34:44 0 删除 编辑
创建一个存储过程:
create or replace procedure ljn_test
is
ljn_a varchar2(100);
begin 
 ljn_a := 'truncate table  ljn';
  execute immediate ljn_a;
  insert into ljn select * from Kx_Order_Info_d;
commit;
  dbms_output.put_line('插入成功');
end ljn_test;
创建一个包:制定执行计划
declare
  ljn_job number;
begin
  dbms_job.submit(ljn_job, 'ljn_test;', sysdate, 'sysdate+10/24*60*60'); -- 每10s运行一次
end;

运行一个包:
查出一个包的id
select * from user_jobs;
begin 
dbms_job.remove(41);
end;

查看运行的包:
select * from user_jobs_running;

删除一个包:
begin
   dbms_job.remove(26);--和select * from user_jobs; 中的job值对应
end;    

job定时执行计划:
描述                              INTERVAL参数值
每天午夜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)
每秒钟执行次
Interval =< sysdate + 1/(24 * 60 * 60)
如果改成sysdate + 10/(24 * 60 * 60)就是10秒钟执行次
每分钟执行
Interval =< TRUNC(sysdate,'mi') + 1/ (24*60)
如果改成TRUNC(sysdate,'mi') + 10/ (24*60) 就是每10分钟执行次
每天定时执行
例如:每天的凌晨1点执行
Interval =< TRUNC(sysdate) + 1 +1/ (24)
每周定时执行
例如:每周一凌晨1点执行
Interval =< TRUNC(next_day(sysdate,'星期一'))+1/24
每月定时执行
例如:每月1日凌晨1点执行
Interval =
每季度定时执行
例如每季度的第一天凌晨1点执行
Interval =< TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval =< ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
每年定时执行
例如:每年1月1日凌晨1点执行
Interval =



















来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30152793/viewspace-1449347/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-03-05

  • 博文量
    18
  • 访问量
    36824