经常在sql server上创建作业去定时执行某些任务,在oracle下则一般都是通过编码的方式,通过项目自带的计划任务框架去调用存
经常在sql server上创建作业去定时执行某些任务,,在oracle下则一般都是通过编码的方式,通过项目自带的计划任务框架去调用存储过程。今天才发现,原来oracle下创建一个计划任务要比sql server简单的多。
1、创建计划任务:
sql代码
x number;
gin
sys.dbms_job.submit(job => x,
what => 'proc_yktsjtb;',--存储过程名称
next_date => trunc(sysdate+5/1440,'mi'),--下次执行时间
interval => 'trunc(sysdate+1440/1440,''mi'')',--间隔时间
no_parse => false);
sys.dbms_output.put_line('job number is: ' || to_char(x));
commit;
d;
x number;
begin
sys.dbms_job.submit(job => x,
what => 'proc_yktsjtb;',--存储过程名称
next_date => trunc(sysdate+5/1440,'mi'),--下次执行时间
interval => 'trunc(sysdate+1440/1440,''mi'')',--间隔时间
no_parse => false);
sys.dbms_output.put_line('job number is: ' || to_char(x));
commit;
end;
以上主要注意三个参数:
what :需要计划任务执行的动作;
next_date:下次计划任务执行的时间,具体时间可以根据oracle的trunc构造;
interval:计划任务的执行周期;
2、计划任务执行情况监控
sql代码
select * from user_jobs;--查看调度任务
select * from dba_jobs_running;--查看正在执行的调度任务
select * from dba_jobs;--查看执行完的调度任务
