oracle中准确控制job的下次运行时间(next date)

用过ORACLE的JOB的朋友也许都能够感觉到它的强大,和JAVA中的quartz有异曲同工之妙,可以少了很多的重复劳动;但是也会有许多问题,就是执行时间段和执行时间比较不容易确定。这其实都是我们还不熟悉JOB的interval造成的。

我碰到过几种用JOB的情况,从简到烦说三种:

1。最简单的,一个隔一段时间执行一次,没有其它限制。

interval: sysdate+2 每隔2天执行一次

sysdate+1/2 每隔12小时执行一次

sysdate+3/1440 每隔 3 分钟执行一次

2。简单的定时执行。

interval: trunc(sysdate+1)+1/3 每天的8点运行

3。要定时间段执行的。

interval: case when to_number(to_char(sysdate,'hh24'))&gt=8 and to_number(to_char(sysdate,'hh24'))&lt=20 then sysdate+15/1440 else trunc(sysdate+1)+1/3 end

每天的8点到20点之点,每隔15分钟运行一次,其余的每天的早上8点运行。

case when to_number(to_char(sysdate,'mm'))&gt=6 and to_number(to_char(sysdate,'mm'))&lt=10 then trunc(sysdate+30) else trunc(sysdate+1)+1/6 end

6-10月份,每隔30天的凌晨开始运行,其余月份每隔一天早上4点运行

4。最困难的,每次运行都要求在指定时间

如3第一个,要求不仅是在每天的8点到20点之点,每隔15分钟运行一次,而且都要在0分,15分,30分,45分运行。

困难在ORACLE的JOB机制,它的下次运行时间是在你的任务跑完以后才计算的。你的任务或多或少都会花些时间,这就导致下次运行时间不准。 比如,第一次运行是在 8:00:00,任务运行时间 10秒,那么下次的运行时间就是变成了 8:15:10(因为当时的sysdate+15/1440就是8:15:10),而不是希望的 8:15:00,这样多跑几次,就会造成很大的出入。

解决办法还是用job的interval,它不仅支持象 3 这样的sql语句,而且还支持函数,这样功能就强了。

写一个函数 fn_get_myjob_interval

create or replace function fn_get_myjob_interval(now date) return date is

Result date;

v_n_min number;

v_n_hour number;

v_n_all date;

begin

v_n_min:= to_number(to_char(now,'mi'));

v_n_hour:=to_number(to_char(now,'hh24'));

if v_n_hour&gt=20 then

result:=trunc(sysdate+1)+1/3;

else

v_n_all:=trunc(sysdate);

if v_n_min&gt=0 and v_n_min&lt15 then

result:=v_n_all+(v_n_hour*60+15)/1440;

elsif v_n_min&gt=15 and v_n_min&lt30 then

result:=v_n_all+(v_n_hour*60+30)/1440;

elsif v_n_min&gt=30 and v_n_min&lt45 then

result:=v_n_all+(v_n_hour*60+45)/1440;

else

result:=v_n_all+(v_n_hour+1)*60/1440;

end if;

end

job每小时执行一次 oracle_oracle job定时执行相关推荐

  1. ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件

    什么是Cron和Crontab Unix和Linux系统的各个发行版本基本都支持Cron,Cron /Crontab允许我们在设定的时间自动执行或定时执行某个任务,如应用程序或脚本.更详细的概念和使用 ...

  2. linux设备负责执行计划任务,linux下定时执行计划任务

    查看/etc/crontab文件 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 0 ...

  3. php网站定时执行代码,如何使PHP定时执行任务(附代码)

    这篇文章主要介绍了如何使PHP定时执行任务,有一定的参考价值,感兴趣的朋友可以看看,希望对你有所帮助! 使用PHP定时执行某些任务的话, 可以有以下两个方法: 1. linux下crontab, wi ...

  4. Linux执行crontab计划任务,定时执行脚本或命令

    一.cron的作用 按照设置的时间间隔为用户反复执行某一项固定的系统任务 二.cron的操作命令 查看:crontab -l [-u 用户名] 编辑:crontab -e [-u 用户名] 清除: c ...

  5. Linux 定时执行shell 脚本

    2019年第 85 篇文章,总第 109 篇文章 本文大约2000字,阅读大约需要6分钟 crontab 可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令. 定时执行shell ...

  6. 使用wxLog实现循环保存日志的解决方案(附详细代码)—— 定时执行专家

    目录 ◆ 方案背景 ◆ 实现效果 ◆ wxLog实现日志功能详解 ◆ 定时执行专家 - 简介&最新版下载链接 ◆ 定时执行专家 - 关键字/Keyword ◆ 方案背景 不少用户提到<定 ...

  7. 在Linux服务器上执行python定时任务(APScheduler定时框架)

    目标:在Linux服务器上,定时运行python脚本. 这个小玩意儿适用于让服务器做一些自动的东西,比如定时查库发送报表.定时让爬虫爬数据.定时提醒等等. 那有同学要问了:为啥不用自己电脑直接运行?- ...

  8. Ubuntu 定时执行脚本

    一.关于crontab cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业.在Ubuntu中,cron是被默认安装并启动的. 二.例子 直接上例子,来看看怎么用. 需求:定时每天 ...

  9. windows设置任务计划定时执行php程序,两种方法

    windows设置任务计划定时执行php程序,两种方法 1.定时执行bat文件 2.定时执行php文件 1.定时执行bat文件 新建一个php文件 :在php文件写入你要执行的程序: <?php ...

最新文章

  1. java.io.IOException: Attempted read from closed stream. 异常,解决
  2. 数据挖掘-数据清理过程
  3. centOS下为PHP安装Xdebug
  4. 【转】小菜硬件杂谈 细数主板上曾出现过的插槽
  5. LINUX中常用操作命令
  6. 牛客网_PAT乙级_1013组个最小数 (20)
  7. 博为峰Java技术文章 ——JavaSE Swing JPanel III
  8. UFLDL教程:Exercise:Convolution and Pooling
  9. mysql 占用的解决_解决 MySQL 突然占用全部内存的问题
  10. mysql内连接和外连接的区别_数据库左连接、右连接、内连接、全连接区别
  11. HDU2094 产生冠军【set】
  12. 计算机新安装系统后桌面上有什么图标,手把手教你全新安装完win10系统后如何设置显示桌面图标-系统操作与应用 -亦是美网络...
  13. 安卓-LBS地图显示
  14. 由save is not vaild without active transcation引发的问题
  15. 【学术相关】有什么事情是你读博以后才知道的?
  16. 【open stack】openstack从入门到放弃
  17. 2018年电子设计大赛主要元器件、模块资料汇总
  18. Redux 替代品 Zustand
  19. Everything不显示.lnk文件
  20. 计算机操作员高级图形图像处理photoshopcs2试题解答,图形图像处理(Photoshop平台)Photoshop CS2试题汇编(图像制作员...

热门文章

  1. 视频教程-零基础学Python-Python
  2. ffmpeg命令分析-segment
  3. 2019年“创青春.交子杯”新网银行高校金融科技挑战赛-AI算法赛道比赛总结
  4. 什么是Sensor,Sensor的分类?
  5. 模糊逻辑学习--什么是模糊逻辑
  6. Android Ftp 下载文件:服务端搭建,客户端编写使用详情
  7. ffmpeg 视频 转 gif
  8. 民用无人驾驶航空器系统驾驶员管理暂行规定
  9. 我的第一个开源库-DialogLoading弹出加载框(Kotlin版)
  10. termux安装linux命令,Termux安装发行版Linux