Welcome 微信登录

首页 / 数据库 / MySQL / Oracle job自动任务实用指南

作为Oracle的定时任务,Oracle job介于服务器层级的crontab和应用程序(如java spring的定时任务)之间,在数据库层对数据处理有重要的价值。
 下面简单分享一下Oracle job如何来调用存储过程。--创建job,不带参数的情况
 variable etljobno number;
 begin
    dbms_job.submit(:etljobno,"proc_ctitetl;",sysdate,"sysdate+3/1440"); 
end;
 /--创建job,带参数的情况
 variable JOB_TEST number;
 begin
  dbms_job.submit(:JOB_TEST,"begin hlqtestjob(1,""aa""); end;",sysdate,"sysdate+1/1440");
  commit;
 end;
 /--启动job
 begin
    dbms_job.run(:etljobno);
 end;
 /
 --停止正在执行的job
 begin
 dbms_job.broken(:etljobno,true );
 end;
 /
 --删除job
 begin
 dbms_job.remove(:etljobno);
 end;
 commit;
 /--查询job
 SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN FROM DBA_JOBS;
 如果要打断已经scheduledjob,dbms_job.broken(:etljobno,true ),打断之后,DBA_JOBS的BROKEN字段为Y,如果你要停止job或者暂停job
 后修改存储过程代码,就可以broken,修改完之后再次启动job即可。
 有了oracle job,你就可以不必在每日的凌晨3点来执行必须的数据处理,或者选择系统负载较低的时候去执行特殊的任务。以下是一些oracle
 job的时间间隔的设置:
 1:每分钟执行
 Interval => TRUNC(sysdate,"mi") + 1/ (24*60)2:每天定时执行
 例如:每天的凌晨1点执行
 Interval => TRUNC(sysdate) + 1 +1/ (24)3:每周定时执行
 例如:每周一凌晨1点执行
 Interval => TRUNC(next_day(sysdate,"星期一"))+1/244:每月定时执行
 例如:每月1日凌晨1点执行
 Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/245:每季度定时执行
 例如每季度的第一天凌晨1点执行
 Interval => TRUNC(ADD_MONTHS(SYSDATE,3),"Q") + 1/246:每半年定时执行
 例如:每年7月1日和1月1日凌晨1点
 Interval => ADD_MONTHS(trunc(sysdate,"yyyy"),6)+1/247:每年定时执行
 例如:每年1月1日凌晨1点执行
 Interval =>ADD_MONTHS(trunc(sysdate,"yyyy"),12)+1/24--------------------------------------------------------------------------------Linux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm--------------------------------------------------------------------------------更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址