Oracle Job排队执行实验
发布日期:2021-05-14 05:21:52 浏览次数:24 分类:精选文章

本文共 1783 字,大约阅读时间需要 5 分钟。

在Oracle数据库中,我们可以通过以下步骤验证SP(存储过程)以及Job的执行情况:

  • SP验证

    我们创建了一个名为sp_insert的存储过程,该存储过程用于批量插入数据。存储过程的实现如下:

    create or replace procedure sp_insert(is_key varchar2, in_rownum number) is
    begin
    for c in 1.. in_rownum loop
    insert into c values(is_key, c, sysdate);
    commit;
    dbms_lock.sleep(1);
    end loop;
    commit;
    end;

    该存储过程接受两个参数:is_key(数据标识),in_rownum(要插入的行数)。存储过程将从1到in_rownum循环插入数据,每次插入后会执行一次dbms_lock.sleep(1),以模拟处理延迟。

  • 设置Job队列进程数

    我们需要将job_queue_processes设置为3,以支持多个并行Job的执行:

    alter system set job_queue_processes=3;
    System altered
  • 提交多个Job

    使用dbms_job.submit函数,我们可以提交多个Job到数据库的Job队列中。以下是提交3个Job的示例:

    declare
    jobid number;
    begin
    dbms_job.submit(
    jobid,
    what => 'sp_insert(''key1'',10)',
    next_date => to_date('20180821150500', 'yyyymmddhh24miss')
    );
    dbms_job.submit(
    jobid,
    what => 'sp_insert(''key2'',10)',
    next_date => to_date('20180821150500', 'yyyymmddhh24miss')
    );
    dbms_job.submit(
    jobid,
    what => 'sp_insert(''key3'',10)',
    next_date => to_date('20180821150500', 'yyyymmddhh24miss')
    );
    commit;
    end;

    每个Job都会执行sp_insert存储过程,并在指定的时间提交到队列中。

  • 检查Job执行时间

    为了监控Job的执行情况,可以运行以下查询:

    select item, min(datadate), max(datadate), count(c.item) 
    from c group by c.item order by 1;

    查询结果如下:

    数据标识 开始时间 结束时间 数据个数
    key1 2018-8-21 15:05:03 2018-8-21 15:05:12 1
    key2 2018-8-21 15:05:03 2018-8-21 15:05:12 1
    key3 2018-8-21 15:05:03 2018-8-21 15:05:12 1

    从结果可以看出,所有Job的执行时间大致相同,说明Job是并行执行的。

  • 同时提交多个Job

    如果我们同时提交5个Job,结果将如下:

    主键 开始时间 结束时间
    key1 2018-8-21 15:05:03 2018-8-21 15:05:12
    key2 2018-8-21 15:05:13 2018-8-21 15:05:22
    key3 2018-8-21 15:05:13 2018-8-21 15:05:22
    key4 2018-8-21 15:05:03 2018-8-21 15:05:12
    key5 2018-8-21 15:05:03 2018-8-21 15:05:12

    可以看到,key1key4key5按时完成,而key2key3由于之前的Job尚未完成,因此需要等待。这与预期一致,说明Job是按顺序执行的。

  • 上一篇:informatica连接PostgreSQL
    下一篇:Oracle dbms_scheduler用法和Job不自动执行原因

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月27日 21时56分25秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章