1、概述
作用:用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务
注意:当使用DBMS_LOB管理作业时,必须确保设置了初始化参数job_queue_processes(不能为0)2、包的组成
1)、submit
说明:用于建立一个新作业.当建立作业时,需要给作业要执行的操作,作业的下次运行日期及运行时间间隔.语法:dbms_out.submit (job out binary_integer,what in varchar2,next_date in date default sysdate,interval in varchar2 default 'null',no_parse in boolean default false,instance in binary_integer default any_instance,force in boolean default false);其中,job用于指定作业编号;what用于指定作业要执行的操作;next_date用于指定作业的下次运行日期;interval用于指定运行作业的时间间隔;no_parse用于指定是否解析与作业相关的过程;instance用于指定哪个例程可以运行作业;force用于指定是否强制运行与作业相关的例程.例子1:exec dbms_job.submit(:jobno,'dbms_ddl.analyze_object(''table'',''scott'',''emp'',''compute'');',sysdate,'sysdate+1');exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (10/(24*60*60))')加入作业。间隔10秒钟exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (11/(24*60))')加入作业。间隔11分钟2)、remove说明:删除作业队列中的特定作业语法:dbms_job.remove(job in binary_integer);例子:exec dbms_job.remove(21)--删除21号作业3)、change说明:用于改变与作业相关的所有信息,包括作业操作,作业运行日期以及运行时间间隔等.语法:dbms_job.change(job in binary_integer,what in varchar2,next_date in date,interval in varchar2,instance in binary_integer default null,force in boolean default false);例子:exec dbms_job.change(2,null,null,'sysdate+2');4)、what说明:用于改变作业要执行的操作语法:dbms_job.what(job in binary_integer,what in varchar2);例子:exec dbms_job.what(2,'dbms_stats.gather_table_stats->(''scott'',''emp'');');5)、next_date说明:用于改变作业的下次运行日期语法:dbms_job.next_date(job in binary_integer,next_date in date);例子:exec dbms_job.next_date('2','sysdate+1');6)、instance说明:用于改变作业的例程语法:dbms_job.instance(job in binary_integer,instance in binary_integer,force in boolean default false);例子:exec dbms_job.instance(2,1);7)、interval说明:用于改变作业的运行时间间隔语法:dbms_job.interval(job in binary_integer,interval in varchar2);例子:exec dbms_job.interval(2,'sysdate+1/24/60');8)、broken说明:用于设置作业的中断标识。当中断了作业之后,作业将不会被运行。语法:dbms_job.broken(job in binary_integer,broken in boolean,next_date in date default sysdate);其中broken指定中断标记(true表示中断)例子:dbms_job.broken(2,true,'sysdate+1');9)、run说明:用于运行已存在的作业语法:dbms_job.run(job in binary_integer,force in boolean default false);例子:exec dbms_job.run(1);