Oracle Job排队执行实验

1验证的SP

指定插入数据的标识is_key,并记录时间。

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;    

2 job_queue_processes

参数设为3.

SQL> alter system set job_queue_processes=3;
System altered  

3 提交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;    

4 检查job执行时间

select item, min(datadate), max(datadate), count(c.item)
  from c
 group by c.item
 order by 1;    
数据标识开始时间结束时间
key12018-8-21 15:05:032018-8-21 15:05:12
key22018-8-21 15:05:032018-8-21 15:05:12
key32018-8-21 15:05:032018-8-21 15:05:12

可以看到,job同时开始。

5同时提交5个job

同样方法提交,不再赘述。

主键开始时间结束时间
key12018-8-21 15:05:032018-8-21 15:05:12
key22018-8-21 15:05:132018-8-21 15:05:22
key32018-8-21 15:05:132018-8-21 15:05:22
key42018-8-21 15:05:032018-8-21 15:05:12
key52018-8-21 15:05:032018-8-21 15:05:12

可以看到,key1、4、5的按时执行,key2、3的等待了,应该是在原来job完成子进程空闲后执行的。与预期一致。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值