暂无图片
分享
HunterHuang
2019-06-04
dbms_scheduler创建的job,不能自动停止

12c, dbms_scheduler创建的window,window之内加job。


并且加了STOP_ON_WINDOW_CLOSE.

BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE(name      => ‘job_01',
                               attribute => 'STOP_ON_WINDOW_CLOSE',
                               value     =>  TRUE);
END;

 

但是在window过期了close了之后,job不能自动停止。

并且尝试手动停止:

BEGIN
dbms_scheduler.stop_job('job_01');
END;


ORA-27365: job Has Been Notified to stop, but failed to do so Immediately


如何在scheduler window结束之后自动关闭job呢


收藏
分享
4条回答
默认
最新
HunterHuang

dbms_scheduler.stop_job('job_01', force => true);可以手动停止,但是sheduler的window内怎么自动停止呢。


看了一下stop_on_window_close attribute

This attribute only applies if the schedule of a job is a window or a window group. Setting this attribute to TRUE implies that the job should stop once the associated window is closed. The job is stopped using the stop_job procedure with force set to FALSE.

   

暂无图片 评论
暂无图片 有用 0
lastwinner

Oracle一直到18C,都没有提供stop_on_window_close可以以force=true的方式调用 stop_job。

根据ORA-27365的描述

——————————————————————————————————

Error code: ORA-27365
Description: job has been notified to stop, but failed to do so immediately
Cause: The job specified in the stop_job command cannot be stopped immediately(because it is rolling back or blocked on a network operation), but it has been notified to stop. This means it will be stopped as soon as possible after its current uninterruptable operation is done.
Action: No action is required for the job to be stopped, but calling stop_job with force (if you have the privilege) may cause the job to be stopped sooner.

——————————————————————————————————


不建议强制停止job,建议做以下调查:

1、job为何在窗口期内未完成?

2、是窗口设置太短还是job确实需要耗时很长?

3、job本身有无可优化空间,使得优化后的job能在指定窗口时间内完成?或者窗口时间是否可调整?


然后有必要的话,结合其他手段来对确实有必要结束的job,进行force=>true的stop_job处理。

暂无图片 评论
暂无图片 有用 0
HunterHuang

 thanks

暂无图片 评论
暂无图片 有用 0
HunterHuang
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏