1. 使用Submit()过程创建 JOB 。
Submit()过程的五个参数:job、what、next_date、interval与no_parse。
PROCEDURE Submit ( job OUT binary_ineger,
What IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE)
job --由Submit()过程返回的binary_ineger。用来唯一标识一个JOB。
what --将被执行的PL/SQL代码块。
next_date --何时将运行这个JOB。
interval --这个JOB何时将被重执行。
no_parse --指示此JOB在提交时或执行时是否应进行语法分析
--TRUE 指示此PL/SQL代码在它第一次执行时应进行语法分析,
--FALSE指示本PL/SQL代码应立即进行语法分析。
--创建job
DECLARE
JOB NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(JOB,
'DECLARE
v_date DATE:= TRUNC(sysdate,''mi'')-numtodsinterval(55,''hour'');
BEGIN
P_BI_JYJQ(v_date);
END;',
TO_DATE('28-11-2014 10:50:00',
'dd-mm-yyyy hh24:mi:ss'),
'sysdate+5/1440'); --每天1440分钟,每5分钟运行 P_BI_JYJQ 过程一次
END;
COMMIT;
在PL/SQL Developer 的DBMS_Jobs 里查看刚建的 JOB:
代码:
begin
sys.dbms_job.change(job => 85,
what => 'DECLARE
v_date DATE:= TRUNC(sysdate,''mi'')-numtodsinterval(55,''hour'');
BEGIN
P_BI_JYJQ(v_date);
END;',
next_date => to_date('28-11-2014 13:05:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'TRUNC(sysdate,''mi'') +5/ (24*60)');
commit;
end;
/
--查看创建的job 查看相关job信息
--1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息。
如:
select * from all_jobs
--运行JOB
说明:Run()过程用来立即执行一个指定的JOB。这个过程只接收一个参数:
----------------------------------------------------------------------------------
begin
dbms_job.run(87);
end;
----------------------------------------------------------------------------------
--删除JOB
begin
dbms_job.remove(87);
end;
1、 每分钟执行
Interval => TRUNC(sysdate,'mi') + 1 / (24*60)
2、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / 24
3、 每周定时执行
例如:每周一凌晨2点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+2/24
4、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
6、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24