叶子多下载站:安全、绿色、免费的软件下载站!

叶子多首页|新闻资讯|软件分类|下载排行|最近更新

当前位置:首页资讯中心新闻动态 → job執行時間?

job執行時間?

时间:2024-06-28 20:52:57人气:作者:叶子多小编我要评论

JOB的interval直接用sysdate指定,如: sysdate + 5/1440,oracle自動生成的下一次的執行時間,會有幾秒的延遲.下面是一個測試:

1.創建表test_job_a,用於記錄JOB開始執行時間和結束時間

SQL> create table test_job_a (

  2  start_date date,

  3  end_date date );

2.創建JOB,JOB的首次執行時間指定在11:20:00,interval為5 mins

SQL> variable x number;

SQL> begin

  2  dbms_job.submit ( job => :x,

  3  what =>'declare

  4  start_date date :=sysdate;

  5  begin

  6  for i in 1 .. 10 loop

  7   dbms_lock.sleep(12);

  8  end loop;

  9  insert into test_job_a values (start_date, sysdate);

10  commit;

 11  end;',

 12  next_date => to_date('2010-01-16 11:20:00', 'yyyy-mm-dd hh24:mi:ss'),

 13  interval => 'sysdate + 5/1440');

 14  commit;

 15* end;

3.時間查看記錄結果:

SQL> select * from test_job_a order by start_date;

 

START_DATE                END_DATE

------------------------- -------------------------

2010-01-16 11:20:02       2010-01-16 11:22:02

2010-01-16 11:25:07       2010-01-16 11:27:07

2010-01-16 11:30:12       2010-01-16 11:32:12

2010-01-16 11:35:17       2010-01-16 11:37:17

2010-01-16 11:40:22       2010-01-16 11:42:22

2010-01-16 11:45:27       2010-01-16 11:47:27

2010-01-16 11:50:32       2010-01-16 11:52:32

2010-01-16 11:55:37       2010-01-16 11:57:37

4.原因:

(1) JOB的調用有時間延遲.

(2) 根據實際的執行時間來自動計算下一次的執行時間.

如:start_date : 2010-01-16 11:55:37,JOB執行結束後,可以通過查詢user_jobs視圖的next_date列到JOB的下次執行時間: 2010-01-16 12:00:37

SQL> select next_date from user_jobs;

 

NEXT_DATE

-------------------

2010-01-16 12:00:37

解決方法:

用trunc(sysdate, 'mi') + 5/1440指定時間間隔

把test_job_a表的內容清空,修改上面JOB的interval,再次記錄JOB的執行時間.

記錄結果如下:

SQL> select * from test_job_a order by start_date;

 

START_DATE                END_DATE

------------------------- -------------------------

2010-01-16 14:00:04       2010-01-16 14:02:04

2010-01-16 14:05:04       2010-01-16 14:07:04

2010-01-16 14:10:04       2010-01-16 14:12:04

2010-01-16 14:15:04       2010-01-16 14:17:04

SQL>  select next_date from user_jobs;

 

NEXT_DATE

-------------------

2010-01-16 14:10:00

SQL> /

 

NEXT_DATE

-------------------

2010-01-16 14:15:00

 

JOB interval寫法總結:

1day = 24hour= 1440mins

若JOB的執行時間間隔為分鐘:

trunc(sysdate,'mi') + n/1444 (0<n<60)

如每隔5mins執行一次: trunc(sysdate,'mi') + 5/1440

若JOB的執行時間間隔為小時:

trunc(sysdate, 'hh') + n/24[ + m/1440] (0<n<24, 0<m<60)

如每隔2小時,且執行時間為15mins執行一次: trunc(sysdate, 'hh') + 2/24 + 15/1440

若JOB的執行時間間隔為天:

trunc(sysdate) + n [+ m/24 [+ x/1440]]

如每天的8點15執行: trunc(sysdate) + 1 + 8/24 + 15/1440

其他情況就需要用到日期函數了:

1) 如每月5號的8點執行JOB: trunc(last_day(sysdate)) + 5 + 8/24

2) 如週一到週五的8點執行:

trunc(least(next_day(sysdate,2),

    next_day(sysdate,3),

    next_day(sysdate,4),

    next_day(sysdate,5),

    next_day(sysdate,6)

    )) + 8/24

在oracle中1:代表周 一,2-7依次代表週二…週六

相关文章

  • 外卖软件哪个好用 好用便宜

      生活在大都市的人们因为上班没有时间做饭离不开外卖软件,如何点到便宜质量好的外卖是一个问题,为你推荐好用的外卖软件,各种美食都有,并且还有很多优惠的活动。  1、 饿..
  • 放大镜app哪个最好用 让你看字更清晰

      放大镜app对于视力不好的人来说比较友好,而且适用于各种不同的场景,可以放大图片文字,更加清新的看清楚一些文字内容,那么有哪些放大镜app是比较好用的呢?下面小编就为大家整..

猜你喜欢

网友评论

关于本站 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2023 yeziduo.com 【叶子多下载站】 版权所有 蜀ICP备2022004054号

声明: 本站所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告