oracle 创建JOB的两种方法

来源:这里教程网 时间:2026-03-03 11:52:44 作者:

1、创建JOB,可以指定固定的时间(对运行时间的管理更加明细)。 select job_name, state from user_scheduler_jobs; grant create job to btupayprod;  begin    dbms_scheduler.create_job(job_name        => 'JOB',                              job_type        => 'STORED_PROCEDURE',                              job_action      => 'proc_balance_fix_mon', --存储过程名                              start_date      => sysdate,                              repeat_interval => 'FREQ=minutely; INTERVAL=45; BYHOUR=15,16,17',                              comments        => '执行余额校验补数程序'); end; 2、需要的权限较小,一般不需要另外赋予其他的权限,但是只能指定固定的时间间隔。 declare          job_id   pls_integer;  begin sys.dbms_job.submit(job => job_id,                       what => 'proc_balance_fix_mon;',                       next_date => to_date('07-08-2015 20:00:00', 'dd-mm-yyyy hh24:mi:ss'),                       interval => 'TRUNC(sysdate,''mi'') + 40 / (24 * 60)'); --commit; end; oracle JOB常见的执行时间  TRUNC(SYSDATE +1) + (3*60+10)/(24*60) 1、每分钟执行 TRUNC(sysdate,'mi')+1/(24*60)   www.2cto.com   2、每天定时执行 例如: 每天凌晨0点执行 TRUNC(sysdate+1) 每天凌晨1点执行 TRUNC(sysdate+1)+1/24 每天早上8点30分执行 TRUNC(SYSDATE+1)+(8*60+30)/(24*60)   3、每周定时执行 例如: 每周一凌晨2点执行 TRUNC(next_day(sysdate,1))+2/24 TRUNC(next_day(sysdate,'星期一'))+2/24 每周二中午12点执行 TRUNC(next_day(sysdate,2))+12/24 TRUNC(next_day(sysdate,'星期二'))+12/24   4、每月定时执行 例如: 每月1日凌晨0点执行 TRUNC(LAST_DAY(SYSDATE)+1) 每月1日凌晨1点执行 TRUNC(LAST_DAY(SYSDATE)+1)+1/24   5、每季度定时执行 每季度的第一天凌晨0点执行 TRUNC(ADD_MONTHS(SYSDATE,3),'q') 每季度的第一天凌晨2点执行 TRUNC(ADD_MONTHS(SYSDATE,3),'q')+2/24 每季度的最后一天的晚上11点执行 TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24   6、每半年定时执行 例如: 每年7月1日和1月1日凌晨1点执行 ADD_MONTHS(TRUNC(sysdate,'yyyy'),6)+1/24   7、每年定时执行 例如: 每年1月1日凌晨2点执行 ADD_MONTHS(TRUNC(sysdate,'yyyy'),12)+2/24

相关推荐