当scheduler超过时间窗口时停止job

要在scheduler的window结束的时候,也让job停止,需要对job加’stop_on_window_close’的属性。

测试如下:

1.建立测试表t1:

2. 建立需要定期执行的存储过程:

本存储过程是先插入一条当前时间的记录到测试表t1,停400秒,再插入一条结束时间的记录到测试表t1.

3.建立job和window:

注:在没设置’stop_on_window_close’的属性前,job就算是到了window的窗口之后,即3分钟之后,也不会停止。可以查询到:

可以看到window close的时间还是设置的3分钟。

可以看到job是13:56分才完成的,即job的执行完成后的时间。

设置’stop_on_window_close’的属性

4. 修改job的启动时间再次测试:

5. 发现job只有start的记录,没有end的记录,因此3分钟时间到,job还没运行完,就被停止了。

6. 查scheduler相关视图:

window还是3分钟关闭了。

注意,job是状态是stop,原因是because associated window was closed 。即3分钟的window的时间到了后,job被终止了。

这里有个小技巧,如果要看某个job是否具有stop_on_window_close属性,可以用get_attribute,但是由于这是布尔型的,而dbms_output。put_line只能输出varchar型,所以要用case转换一下,不然没法看:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据