开发者博客:www.developsearch.com
创建一个任务的完整的格式是:
variable jobno number; begin sys.dbms_job.submit(job => :jobno, what => 'pro_test;', next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'), interval => 'sysdate+1/24/12'); commit; end; -- 系统会自动分配一个任务号jobno。
删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
删除: job:dbms_job.remove(jobno);
修改要执行的操作: job:dbms_job.what(jobno,what);
修改下次执行时间: dbms_job.next_date(job,next_date);
修改间隔时间: dbms_job.interval(job,interval);
停止job: dbms.broken(job,broken,nextdate);
启动job: dbms_job.run(jobno)
设置初始化参数job_queue_processes
sql> alter system set job_queue_processes=n;(n>0)
job_queue_processes最大值为1000
查看 job queue 后台进程
sql>select name,description from v$bgprocess;
跟踪任务的情况(查看任务队列):
SQL> select job,next_date,next_sec,failures,broken from user_jobs;
JOB NEXT_DATE NEXT_SEC FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
1 2008-2-22 ?01:00:00 0 N
例:有存储过程 p_dosomethings,需要被不同的时间间隔执行
declare
jobno number;
begin
dbms_job.submit(jobno,
'p_dosomething;', --what
to_date('20090101020000','yyyy-mm-dd hh24:mi:ss'), -- next_date,可以不填
'Interval时间字符串' --interval,关键设置
);
commit;
end;
例:
begin
dbms_job.change(1688,'PKG_COUNT_COD_PERIOD.COUNT_PERIOD_JOB;',trunc(sysdate+1),'TRUNC(sysdate) +1+1/24');
end;