oracle job运行机制

原创 2012年03月26日 14:32:25

问题:创建一个oracle job,而job每隔5秒钟运行一次,但是完成job的调用需要比5秒更长的时间,那么oracle会用怎么样的运行机制呢?

模拟:1,创建一个临时表用于记录相应的job调用时间。语句:create table job_test (name varchar2(20),now_time timestamp);

            2,创建一个过程向表中插入数据。

                 create or replace procedure job_test_pro
is
begin
  insert into job_test values('开始时间',sysdate);
  commit;
  dbms_lock.sleep(17);/*grant   execute   on   dbms_lock   to user*/
  insert into job_test values('结束时间',sysdate);
  commit;
end job_test_pro;

          3,创建一个job。

                SQL> var job1 number;

                SQL> begin
                       2  sys.dbms_job.submit(job => :job1,what => 'job_test_pro;',next_date => sysdate,interval => 'sysdate+5/24/60/60');
                       3  commit;
                       4  end;
                      5  /
              PL/SQL procedure successfully completed
              job1
              ---------
             2

        4,查询表中的数据.

1 开始时间 26-3月 -12 02.10.28.000000 下午
2 结束时间 26-3月 -12 02.10.45.000000 下午
3 开始时间 26-3月 -12 02.10.48.000000 下午
4 结束时间 26-3月 -12 02.11.05.000000 下午
5 开始时间 26-3月 -12 02.11.08.000000 下午
6 结束时间 26-3月 -12 02.11.25.000000 下午
7 开始时间 26-3月 -12 02.11.28.000000 下午
8 结束时间 26-3月 -12 02.11.45.000000 下午
9 开始时间 26-3月 -12 02.11.48.000000 下午
10 结束时间 26-3月 -12 02.12.05.000000 下午
11 开始时间 26-3月 -12 02.12.08.000000 下午
12 结束时间 26-3月 -12 02.12.25.000000 下午
13 开始时间 26-3月 -12 02.12.28.000000 下午
14 结束时间 26-3月 -12 02.12.45.000000 下午
15 开始时间 26-3月 -12 02.12.48.000000 下午
16 结束时间 26-3月 -12 02.13.05.000000 下午
17 开始时间 26-3月 -12 02.13.08.000000 下午
18 结束时间 26-3月 -12 02.13.25.000000 下午
19 开始时间 26-3月 -12 02.13.28.000000 下午
20 结束时间 26-3月 -12 02.13.45.000000 下午
21 开始时间 26-3月 -12 02.13.48.000000 下午
22 结束时间 26-3月 -12 02.14.05.000000 下午
23 开始时间 26-3月 -12 02.14.09.000000 下午
24 结束时间 26-3月 -12 02.14.26.000000 下午
25 开始时间 26-3月 -12 02.14.29.000000 下午
26 结束时间 26-3月 -12 02.14.46.000000 下午
27 开始时间 26-3月 -12 02.14.49.000000 下午
28 结束时间 26-3月 -12 02.15.06.000000 下午
29 开始时间 26-3月 -12 02.15.09.000000 下午
30 结束时间 26-3月 -12 02.15.26.000000 下午
31 开始时间 26-3月 -12 02.15.29.000000 下午
32 结束时间 26-3月 -12 02.15.46.000000 下午
33 开始时间 26-3月 -12 02.15.49.000000 下午
34 结束时间 26-3月 -12 02.16.06.000000 下午
35 开始时间 26-3月 -12 02.16.09.000000 下午
36 结束时间 26-3月 -12 02.16.26.000000 下午

       5,观察结果可以发现,oracle在job完成后3秒开始进行下一次的调用。(但是为什么是3秒呢?而不是5秒。猜测,可以能是运行17秒与5秒进行相除取整的结果??)

       6,重新设置oracle的睡眠时间,设置为21秒,看是否是运行完成后4秒进行调用的。

                create or replace procedure job_test_pro
is
begin
   insert into job_test values('开始时间',sysdate);
   commit;
   dbms_lock.sleep(21);/*grant   execute   on   dbms_lock   to user*/
   insert into job_test values('结束时间',sysdate);
   commit;
end job_test_pro;

     7,查询表中的结果

37 开始时间 26-3月 -12 02.16.29.000000 下午
38 结束时间 26-3月 -12 02.16.50.000000 下午
39 开始时间 26-3月 -12 02.16.54.000000 下午
40 结束时间 26-3月 -12 02.17.15.000000 下午
41 开始时间 26-3月 -12 02.17.19.000000 下午
42 结束时间 26-3月 -12 02.17.40.000000 下午
43 开始时间 26-3月 -12 02.17.44.000000 下午
44 结束时间 26-3月 -12 02.18.05.000000 下午
45 开始时间 26-3月 -12 02.18.09.000000 下午
46 结束时间 26-3月 -12 02.18.30.000000 下午
47 开始时间 26-3月 -12 02.18.34.000000 下午
48 结束时间 26-3月 -12 02.18.55.000000 下午
49 开始时间 26-3月 -12 02.18.59.000000 下午
50 结束时间 26-3月 -12 02.19.20.000000 下午
51 开始时间 26-3月 -12 02.19.24.000000 下午
52 结束时间 26-3月 -12 02.19.45.000000 下午
53 开始时间 26-3月 -12 02.19.49.000000 下午
54 结束时间 26-3月 -12 02.20.10.000000 下午
55 开始时间 26-3月 -12 02.20.14.000000 下午
56 结束时间 26-3月 -12 02.20.35.000000 下午
57 开始时间 26-3月 -12 02.20.39.000000 下午
58 结束时间 26-3月 -12 02.21.00.000000 下午
59 开始时间 26-3月 -12 02.21.04.000000 下午
60 结束时间 26-3月 -12 02.21.25.000000 下午
61 开始时间 26-3月 -12 02.21.29.000000 下午
62 结束时间 26-3月 -12 02.21.50.000000 下午
63 开始时间 26-3月 -12 02.21.54.000000 下午
64 结束时间 26-3月 -12 02.22.15.000000 下午
65 开始时间 26-3月 -12 02.22.19.000000 下午
66 结束时间 26-3月 -12 02.22.40.000000 下午
67 开始时间 26-3月 -12 02.22.44.000000 下午
68 结束时间 26-3月 -12 02.23.05.000000 下午
69 开始时间 26-3月 -12 02.23.09.000000 下午
70 结束时间 26-3月 -12 02.23.30.000000 下午
71 开始时间 26-3月 -12 02.23.59.000000 下午
72 结束时间 26-3月 -12 02.24.20.000000 下午
73 开始时间 26-3月 -12 02.24.24.000000 下午
74 结束时间 26-3月 -12 02.24.45.000000 下午
75 开始时间 26-3月 -12 02.24.49.000000 下午
76 结束时间 26-3月 -12 02.25.10.000000 下午
77 开始时间 26-3月 -12 02.25.14.000000 下午
78 结束时间 26-3月 -12 02.25.35.000000 下午
79 开始时间 26-3月 -12 02.25.39.000000 下午
80 结束时间 26-3月 -12 02.26.00.000000 下午
81 开始时间 26-3月 -12 02.26.04.000000 下午
82 结束时间 26-3月 -12 02.26.25.000000 下午
83 开始时间 26-3月 -12 02.26.29.000000 下午
84 结束时间 26-3月 -12 02.26.50.000000 下午
85 开始时间 26-3月 -12 02.26.54.000000 下午
86 结束时间 26-3月 -12 02.27.15.000000 下午
87 开始时间 26-3月 -12 02.27.19.000000 下午
88 结束时间 26-3月 -12 02.27.40.000000 下午
89 开始时间 26-3月 -12 02.27.44.000000 下午
90 结束时间 26-3月 -12 02.28.05.000000 下午
91 开始时间 26-3月 -12 02.28.09.000000 下午
92 结束时间 26-3月 -12 02.28.30.000000 下午
93 开始时间 26-3月 -12 02.28.34.000000 下午
94 结束时间 26-3月 -12 02.28.55.000000 下午
95 开始时间 26-3月 -12 02.29.24.000000 下午
96 结束时间 26-3月 -12 02.29.45.000000 下午
97 开始时间 26-3月 -12 02.29.49.000000 下午
98 结束时间 26-3月 -12 02.30.10.000000 下午
99 开始时间 26-3月 -12 02.30.14.000000 下午
100 结束时间 26-3月 -12 02.30.35.000000 下午
101 开始时间 26-3月 -12 02.30.39.000000 下午
102 结束时间 26-3月 -12 02.31.00.000000 下午
103 开始时间 26-3月 -12 02.31.04.000000 下午
104 结束时间 26-3月 -12 02.31.25.000000 下午
105 开始时间 26-3月 -12 02.31.29.000000 下午
106 结束时间 26-3月 -12 02.31.50.000000 下午
107 开始时间 26-3月 -12 02.31.54.000000 下午
108 结束时间 26-3月 -12 02.32.15.000000 下午
109 开始时间 26-3月 -12 02.32.19.000000 下午
110 结束时间 26-3月 -12 02.32.40.000000 下午
111 开始时间 26-3月 -12 02.32.44.000000 下午
112 开始时间 26-3月 -12 02.23.34.000000 下午
113 结束时间 26-3月 -12 02.23.55.000000 下午
114 开始时间 26-3月 -12 02.28.59.000000 下午
115 结束时间 26-3月 -12 02.29.20.000000 下午

      可以看到真的是每隔4秒钟才进行的调用。这是巧合呢还是oracle job是这个设计的。请大侠们指点,谢谢。

解密SparkStreaming运行机制和架构进阶之Job和容错

本博文主要包括以下内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 一、解密SparkStreaming Job架构和运行机制:理...
  • erfucun
  • erfucun
  • 2016年08月25日 18:57
  • 664

ofbiz job 运行机制

 OFBiz中JOB的运行机制 OFBiz执行后台任务的类在org.ofbiz.service.job中。 JobPoller和JobInvoker是主要的两个类,一个负责查询可以执...
  • fclwd
  • fclwd
  • 2014年04月29日 09:31
  • 836

第3课:解密SparkStreaming运行机制和架构进阶之Job和容错

本期内容: 1、解密Spark Streaming Job架构和运行机制 2、解密Spark Streaming容错架构和运行机制 运行过程 dstream.SocketInputDStrea...

解密SparkStreaming运行机制和架构进阶之Job

通过运行OnlineForeachRDD2DB程序,从Job的角度来分析SparkStreaming的机制和架构,程序代码:package com.dt.spark.streamingimport o...

OFBiz 中JOB的运行机制

摘要: 本文分析了OFBiz是怎么实现任务调度的,以及如何进行相关的配置,可以作为参考。 OFBiz执行后台任务的类在org.ofbiz.service.job中。 JobPo...

OFBiz中JOB的运行机制

OFBiz执行后台任务的类在org.ofbiz.service.job中。 JobPoller和JobInvoker是主要的两个类,一个负责查询可以执行的Job,另一个执行Job任务。Job类图...
  • zhaofsh
  • zhaofsh
  • 2012年05月30日 09:42
  • 522

OFBiz中JOB的运行机制

OFBiz执行后台任务的类在org.ofbiz.service.job中。 JobPoller和JobInvoker是主要的两个类,一个负责查询可以执行的Job,另一个执行Job任务。Job类图如下...

第3课:通过案例对SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错

本期内容: 1、解密Spark Streaming Job架构和运行机制 2、解密Spark Streaming容错架构和运行机制 一、Spark Streaming Job架构和运行机制 我...

Oracle的表连接查询及其内部运行机制

Oracle的表连接查询及其内部运行机制

MFC运行机制

  • 2015年07月03日 17:00
  • 451KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle job运行机制
举报原因:
原因补充:

(最多只允许输入30个字)