您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PL/SQL:学会使用DBMS_job包

2024/5/18 14:17:14发布23次查看
dbms_job包用于安排和管理作业队列.通过使用作业,可以使oracle数据库定期执行特定的任务. 注意:使用dbms_job管理作业时,必须确保
一、dbms_job包的使用
    dbms_job包用于安排和管理作业队列.通过使用作业,可以使oracle数据库定期执行特定的任务.
    注意:使用dbms_job管理作业时,必须确保设置初始化参数job_queue_processes(不能为0)
  1.submit
    该过程用于建立一个新作业,当建立作业时,需要给出作业要执行的操作,作业的下次运行日期及时间间隔.
    语法:
    dbms_job.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用于指定是否强制运行与作业相关的例程,下面以建立用于分析scott.emp表的作业为
 例,说明建立作业的方法.示例如下:
var jobno number
begin
    dbms_job.submit(
    :jobno,
    'dbms_ddl.analyze_object(''table'',''scott'',''emp'',''compute'');',
    sysdate,
    'sysdate+1');
    commit;
end;
/
jobno
---------
21
以上建立了一个作业,作业号为:21,下面可以进行调用此作业号,运行;
  2.remove
  该过程用于删除作业队列中的特定作业,语法如下:
    dbms_job.remove (job in binary_integer);
  下面以删除作业21为例,说明使用该过程的方法.如下:
    dbms_job.remove(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(21,null,null,'sysdate+2')
  4.what
  该过程用于改变作业要执行的操作,语法如下:
    dbms_job.what(job in binary_integer,what in varchar2);
  下面以改变作业21的运行操作为例:
    exec dbms_job.what(21,'dbms_stats.gather_table_stats(''scott'',''emp'');');
  5,next_date
  该过程用于改变作业的下次运行日期.语法如下:
      dbms_job.next_date (job in binary_integer,next_date in date);
  下面以改变作业21的下次运行日期为例.
      dbms_job.next_date(21,'sysdate+1');
  6.instance
  该过程用于改变运行作业的例程,语法如下:
      dbms_job.instance (
      job in binary_integer,
      instance in binary_integer,
      force in boolean default false);
  实例:
      dbms_job.instance(21,1)
  7.interval
    该过程用于改变作业的运行时间间隔.语法如下:
      dbms_job.interval(job in binary_integer,interval in varchar2);
    实例:
    exec  dbms_job.interval(21,'sysdate+1/24/60');
  8.broken
    该过程用于设置作业的中断标记,当中断了作业之后.作业将不会被运行.语法如下:
    dbms_job.broken(
    job in binary_integer,broken in boolean,
    next_date in date default sysdate);
  实例:
    exec dbms_job.broken(21,true,'sysdate+1')
  9.run
    该过程用于运行已存在的作业.语法如下
    dbms_job.run(job in binary_integer,force in boolean default false);
    实例:
    dbms_job.run(21);
  10.作业使用示例:
    当在oracle 数据库中使用作业时,应该首先使用过程submit来建立作业,然后使用过程run来运行作业.

该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product