经常在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;--查看执行完的调度任务