PL/SQL:学会使用DBMS_job包

php中文网
发布: 2016-06-07 17:25:51
原创
1110人浏览过

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来运行作业.

豆包爱学
豆包爱学

豆包旗下AI学习应用

豆包爱学 674
查看详情 豆包爱学

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号