Oracle创建JOB

在需要创建job的用户下创建job

begin
dbms_scheduler.create_job (
job_name => 'test',--job名
job_type => 'STORED_PROCEDURE',--执行一个存储过程
job_action => 'SP_TEST',--执行的存储过程名
start_date => to_date('02-12-2011 12:00:00', 'dd-mm-yyyy hh24:mi:ss'),--首次执行时间2011/12/2日12点(sysdate代表当前时间)
repeat_interval => 'FREQ=DAILY;BYTIME=120000',--每日12点执行
enabled => true--启用任务
);
end;

可以通过查询系统表查看该job信息select * from user_jobs;
查看用户scheduler_job:select * from user_scheduler_jobs;
删除scheduler_job:exec dbms_scheduler.drop_job(job_name => 'test');
查看JOB运行日志:select log_id, log_date, status from user_scheduler_job_run_details where job_name='test';
调度作业:exec dbms_scheduler.run_job('test');
停止作业:exec dbms_scheduler.stop_job('test');

首次执行时间start_date和时间间隔repeat_interval需要根据实际需求进行更新。

start_date说明:指定任务初次执行的时间,本参数可为空,当为空时,表示任务立刻执行,效果等同于指定该参数值为SYSDATE
repeat_interval说明:
  基本结果:repeat_interval => 'FREQ=DAILY;Interval=5'
  FREQ(必须项):指定间隔的时间周期,可选参数有:YEARLY(年), MONTHLY(月), WEEKLY(周), DAILY(日), HOURLY(时), MINUTELY(分), SECONDLY(秒)
  ,INTERVAL:指定间隔的频繁,可指定的值的范围从1-99
  ,BYHOUR:指定一天中的小时。可指定的值的范围从[0,23]。16,17,18就表示每天下午的4、5、6点。
  ,BYMINUTE:指定分钟。[0,59]
  ,BYSECOND:指定秒。[0,59]
  ,BYYEARDAY:指定一年中的哪一天。[1,366] or [-366,-1]
  ,BYDAY:指定每周的哪天运行。MON|TUE|WED|THU|FRI|SAT|SUN
  ,BYMONTHDAY:指定每月中的哪一天。[1,31] or [-31,-1] -1 表示每月最后一天。
  ,BYMONTH:指定每年的月份。[1,12] or JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC
  ,BYDATE:指定日期。0310就表示3月10日。
  ,BYTIME用于设置时间点
例子

设置任务每5隔天运行:REPEAT_INTERVAL => 'FREQ=DAILY; INTERVAL=5';
设置任务每月29日运行:REPEAT_INTERVAL => 'FREQ=MONTHLY; BYMONTHDAY=29';
设置任务每隔24个小时运行:REPEAT_INTERVAL => 'FREQ=HOURLY; INTERVAL=24';

所有博客均为自己学习的笔记。如有错误敬请理解。
原文地址:https://www.cnblogs.com/tangtang-benben/p/14733952.html