oracle job运行机制

问题:创建一个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是这个设计的。请大侠们指点,谢谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值