前言~
我们知道plsql工具的使用非常强大,使用它来创建存储过程以及定时任务都非常简单。上篇文章讲解到使用plsql创建存储过程及调试,那么今天文章内容就是讲解使用plsql创建定时任务,以及让定时任务执行。
在使用plsql创建定时任务之前,我们有必要先了解一下oracle中的job定时任务的一些内容。
1)、 查询oracle中的job
oracle查看哪个存储过程对应的哪个定时器
select * from dba_jobs t where upper(t.what) like %参数%;
oracle查询所有定时器
select * from dba_jobs;
oracle查看正在运行的job
select * from dba_jobs_running;
下面讲解一下job的相关字段内容,以便能更加了解
字段(列) 类型 描述
job number 作业标识符。无论是进出口还是重复执行都不能改变它。
log_user varchar2(30) 提交作业时登录的用户
priv_user varchar2(30) 默认权限应用于此作业的用户
schema_user varchar2(30) 对任务作语法分析的用户模式
last_date date 最后一次成功运行任务的时间
last_sec varchar2(8) 这是最后一次成功执行的开始。如hh24:mm:ss格式的 last_date日期的小时,分钟和秒
this_date date 正在运行任务的开始时间,如果没有运行任务则为null
this_sec varchar2(8) 如hh24:mm:ss格式的this_date日期的小时,分钟和秒
next_date date 下一次定时运行任务的时间,如果为“4000/1/1”,不代表是 job没有运行,还需查看broken的值
broken varchar2(1) 如果Y,则不尝试运行此作业。
interval varchar2(200) 在执行开始时评估的日期函数将成为下一个日期。
failuses number 这项工作自上次成功以来曾经历过多少次失败?
what varchar2(2000) 执行任务的PL/SQL块(存储过程名称)
其中最重要的字段就是job 这个值就是我们操作job的id号,what 操作存储过程的名称,next_date 执行的时间,interval执行间隔
2)、执行间隔interval 运行频率
描述 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)
每秒钟执行1次
Interval => sysdate + 1/(24 * 60 * 60)
如果改成sysdate + 10/(2