创建定时作业
declare job number;
begin
dbms_job.submit(
job,
'test;',
sysdate,
'sysdate + 1'
);
end;
查看定时作业
select * from user_jobs;
select * from dba_jobs_running;
字段名 | 字段类型 | 解释 |
---|
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 | 正在运行任务的开始时间 |
THIS_SEC | varchar2(8) | 如HH24:MM:SS格式的last_date日期的小时,分钟和秒 |
NEXT_DATE | date | 下一次运行任务的时间 |
NEXT_SEC | varchar2(8) | 如HH24:MM:SS格式的last_date日期的小时,分钟和秒 |
TOTAL_TIME | number | 该任务运行所需的总时间,单位:秒 |
BROKEN | varchar2(1) | 标识参数,Y标识任务终端,以后不会运行 |
INTERVAL | varchar2(200) | 计算下一次运行时间的表达式 |
FAILURES | number | 任务运行连续没有成功的次数 |
WHAT | varchar2(2000) | 执行任务的PL\SQL块 |
CURRENT_SESSION_LABEL | RAW MLSLABEL | 该任务的信任Oracle会话符 |
CLEARANCE_HI | RAW MLSLABEL | 该任务可信任的Oracle最大间隙 |
CLEARANCE_LO | RAW MLSLABEL | 该任务可信任的Oracle最小间隙 |
NLS_ENV | varchar2(2000) | 任务运行的NLS会话设置 |
MISC_ENV | RAW(32) | 任务运行的其他一些会话参数 |
运行定时作业
begin
dbms_job.run(v_job);
end;
停止定时作业
begin
dbms_job.broken(v_job, true, sysdate);
end;
删除定时作业
begin
dbms_job.remove(v_job);
end;
修改下一次运行时间
begin
dbms_job.next_date(v_job, sysdate);
end;
修改执行时间
begin
dbms_job.interval(v_job, 'sysdate')
end;
创建job时的常用间隔时间定义
- 每分钟执行
Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)
- 每天定时执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
- 每周定时执行
Interval => TRUNC(next_day(sysdate,'星期一'))+2/24
- 每月定时执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
- 每季度定时执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
- 每半年定时执行
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
- 每年定时执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24