ORACLE DBMS作业执行问题求助

q806294478 2014-03-03 12:17:19
我2月份创建了一个JOB,语句如下:
DECLARE
JOB NUMBER;
begin
sys.dbms_job.submit(job,
'SP_BIAS_JOB;',
to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'),
'TRUNC(LAST_DAY(SYSDATE))+22.5/24');
commit;
end;

要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30
而是3月1号执行的,请问是什么原因?
执行时间如图:
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
_拙计 2014-03-03
  • 打赏
  • 举报
回复
引用 楼主 q806294478 的回复:
我2月份创建了一个JOB,语句如下: DECLARE JOB NUMBER; begin sys.dbms_job.submit(job, 'SP_BIAS_JOB;', to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'TRUNC(LAST_DAY(SYSDATE))+22.5/24'); commit; end; 要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30 而是3月1号执行的,请问是什么原因? 执行时间如图:
interval时间间隔应该是这样吧 TRUNC(LAST_DAY(add_months(sysdate,1)))+22.5/24
流浪川 2014-03-03
  • 打赏
  • 举报
回复
引用 5 楼 q806294478 的回复:
怎么会是一直在执行呢,晚上22:30开始执行,完成之后就应该是下个月的最后一天的22:30,但从系统中看,他实际执行的时间是:一号的00:36分
那就是说SP_BIAS_JOB执行时间会很超过1.5小时啊,那你这么说没问题。 唯一可能就是系统的一些操作或者数据库的一些操作让job延迟执行了。这个真的靠想是想不出原因了。。
q806294478 2014-03-03
  • 打赏
  • 举报
回复
怎么会是一直在执行呢,晚上22:30开始执行,完成之后就应该是下个月的最后一天的22:30,但从系统中看,他实际执行的时间是:一号的00:36分
流浪川 2014-03-03
  • 打赏
  • 举报
回复
引用 3 楼 hidanger521 的回复:
[quote=引用 2 楼 q806294478 的回复:] [quote=引用 楼主 q806294478 的回复:] 我2月份创建了一个JOB,语句如下: DECLARE JOB NUMBER; begin sys.dbms_job.submit(job, 'SP_BIAS_JOB;', to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'TRUNC(LAST_DAY(SYSDATE))+22.5/24'); commit; end; 要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30 而是3月1号执行的,请问是什么原因? 执行时间如图:
但是我有用TRUNC函数截取的。数据库显示的下次执行时间也是: JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC INTERVAL WHAT ----- ----------- -------- ----------------- -------- ------------------------------- ------------ 141 01-3月 -14 00:36:18 20140331 223000 22:30:00 TRUNC(LAST_DAY(SYSDATE))+22.5/24 SP_BIAS_JOB; [/quote] 对不起,没看清。不过又有了一个疑问,你的这个job在月底最后一天得10点30分到3月1号之间这段时间,不是再一直循环执行么?[/quote] 就是next执行时间一直是月底的10点30分。。
流浪川 2014-03-03
  • 打赏
  • 举报
回复
引用 2 楼 q806294478 的回复:
[quote=引用 楼主 q806294478 的回复:] 我2月份创建了一个JOB,语句如下: DECLARE JOB NUMBER; begin sys.dbms_job.submit(job, 'SP_BIAS_JOB;', to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'TRUNC(LAST_DAY(SYSDATE))+22.5/24'); commit; end; 要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30 而是3月1号执行的,请问是什么原因? 执行时间如图:
但是我有用TRUNC函数截取的。数据库显示的下次执行时间也是: JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC INTERVAL WHAT ----- ----------- -------- ----------------- -------- ------------------------------- ------------ 141 01-3月 -14 00:36:18 20140331 223000 22:30:00 TRUNC(LAST_DAY(SYSDATE))+22.5/24 SP_BIAS_JOB; [/quote] 对不起,没看清。不过又有了一个疑问,你的这个job在月底最后一天得10点30分到3月1号之间这段时间,不是再一直循环执行么?
q806294478 2014-03-03
  • 打赏
  • 举报
回复
引用 楼主 q806294478 的回复:
我2月份创建了一个JOB,语句如下: DECLARE JOB NUMBER; begin sys.dbms_job.submit(job, 'SP_BIAS_JOB;', to_date('07-02-2014 16:00:00', 'dd-mm-yyyy hh24:mi:ss'), 'TRUNC(LAST_DAY(SYSDATE))+22.5/24'); commit; end; 要求是每个月的最后一天的22:30执行语句,但到3月份查看的时候,执行的时间不是2月28号的晚上22:30 而是3月1号执行的,请问是什么原因? 执行时间如图:
但是我有用TRUNC函数截取的。数据库显示的下次执行时间也是: JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC INTERVAL WHAT ----- ----------- -------- ----------------- -------- ------------------------------- ------------ 141 01-3月 -14 00:36:18 20140331 223000 22:30:00 TRUNC(LAST_DAY(SYSDATE))+22.5/24 SP_BIAS_JOB;
流浪川 2014-03-03
  • 打赏
  • 举报
回复
应该与你开始时间有关。 LAST_DAY(SYSDATE)取值日期虽然没错,但是时间去的是当前。 比如现在取LAST_DAY(SYSDATE)其值是2014/3/31 14:02:29 在加上你的22.5/24肯定下次执行的时间是第二天了。。 建议开始时间设置为yyyy-mm-dd 00:00:01

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧