oracle job处理机制,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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值