`
qinya06
  • 浏览: 584396 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ORACLE JOB INTERVAL 参数设置

阅读更多
-------------------------------------------------------------------------------
在plsql中执行如下脚本可以创建一个在每天晚上23点执行的job

begin
  sys.dbms_job.submit(job => :job,   -- job编号
                      what => 'dbms_output.pub_line(''asdf'');',  -- 执行脚本
                      next_date => to_date('17-01-2011 16:17:31', 'dd-mm-yyyy hh24:mi:ss'),  
                                                                  -- 下次执行时间
                      interval => 'trunc(sysdate)+23/24');        -- 执行时间间隔
  commit;
end;
/


其中interval参数的几个可能的示范值如下:
A,每5分钟执行一次
interval => 'trunc(sysdate,'mi')+5/24/60'
B,每小时执行一次,整点执行
interval => 'trunc(sysdate,'HH')+1/24'
C,一个小时后执行
interval => 'sysdate+1/24'
--------------------------------------------------------------------------
eg:
declare job1 number;
begin 
 dbms_job.submit(job1,'insertSysdate;',sysdate,'sysdate+1/1440');
  COMMIT;
end;
/

----------------------------------------------------------------------
1:每分钟执行
    Interval => TRUNC(sysdate,'mi') + 1/ (24*60)   或 Interval => sysdate+1/1440

    2:每天定时执行

    例如:每天的凌晨1点执行

    Interval => TRUNC(sysdate) + 1 +1/ (24)

    3:每周定时执行

    例如:每周一凌晨1点执行

    Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

    4:每月定时执行

    例如:每月1日凌晨1点执行

    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

    5:每季度定时执行

    例如每季度的第一天凌晨1点执行

    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

    6:每半年定时执行

    例如:每年7月1日和1月1日凌晨1点

    Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

    7:每年定时执行

    例如:每年1月1日凌晨1点执行

    Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24


严格地 讲,interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如 我们需要该job周期性地执行,则要用‘sysdate+m’表示。

============================================================

任务重复运行的时间间隔取决于interval参数中设置的日期表达式。下面就来详细谈谈该如何设置interval参数才能准确满足我们的任务需求。一般来讲,对于一个任务的定时执行,有三种定时要求。

1.在一个特定的时间间隔后,重复运行该任务。
2.在特定的日期和时间运行任务。
3.任务成功完成后,下一次执行应该在一个特定的时间间隔之后。
第一种调度任务需求的日期算法比较简单,即'SYSDATE+n',这里n是一个以天为单位的时间间隔。表1给出了一些这种时间间隔设置的例子。

一些简单的interval参数设置例子

每天运行一次                 'SYSDATE + 1'
每小时运行一次               'SYSDATE + 1/24'
每10分钟运行一次             'SYSDATE + 10/(60*24)'
每30秒运行一次               'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次            'SYSDATE + 7'
不再运行该任务并删除它        NULL
所示的任务间隔表达式不能保证任务的下一次运行时间在一个特定的日期或者时间,仅仅能够指定一个任务两次运行之间的时间间隔。例如,如果一个任务第一次运 行是在凌晨12点,interval指定为'SYSDATE + 1',则该任务将被计划在第二天的凌晨12点执行。但是,如果某用户在下午4点手工(DBMS_JOB.RUN)执行了该任务,那么该任务将被重新定时到 第二天的下午4点。还有一个可能的原因是如果数据库关闭或者说任务队列非常的忙以至于任务不能在计划的那个时间点准时执行。在这种情况下,任务将试图尽快 运行,也就是说只要数据库一打开或者是任务队列不忙就开始执行,但是这时,运行时间已经从原来的提交时间漂移到了后来真正的运行时间。这种下一次运行时间 的不断“漂移”是采用简单时间间隔表达式的典型特征。

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

调度任务需求相对于第一种就需要更复杂的时间间隔(interval)表达式,表7是一些要求在特定的时间运行任务的interval设置例子。

定时到特定日期或时间的任务例子

每天午夜12点                 'TRUNC(SYSDATE + 1)'
每天早上8点30分              'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点             'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点        'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点    'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分       'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
分享到:
评论

相关推荐

    Oracle Job定时任务

    Oracle Job 定时任务 Oracle Job 定时任务是 Oracle 数据库中的一种定时执行任务的机制,它允许用户在指定的...Oracle Job 定时任务提供了一个强大的机制来执行定时任务,可以根据不同的时间间隔和执行频率来设置。

    Oracle Job时间间隔设置

    初始化相关参数job_queue_processes alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位 job_queue_process 表示oracle能够并发的...

    oracle 创建job实例

    Oracle 创建 Job 实例 Oracle 创建 Job 实例是指...创建 Job 实例需要遵循特定的步骤和配置,包括确保 Oracle 的工作模式允许启动任务队列管理器、配置任务队列管理器的启动参数、将任务加入到数据库的任务队列中等。

    Oracle JOB 用法小结

     一、设置初始化参数 job_queue_processes  sql> alter system set job_queue_processes=n;(n>0)  job_queue_processes最大值为1000    查看job queue 后台进程  sql>select name,description from v$...

    使用Oracle中的时间间隔型数据

    在Oracle 9i中,按照SQL 99标准,增加了时间间隔型数据INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND,它们和其他几种数据类型一起使得对时间的处理更加准确。TIMESTAMP、TIMESTAMP WITH TIME ZONE和TIMESTAMP ...

    INTERVAL

    INTERVAL

    Oracle数据库使用分组函数来对数据进行聚集

    Oracle数据库使用分组函数来对数据进行聚集

    oracle定时任务创建、查询等

    -- job 创建 begin dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', job_type => 'STORED_PROCEDURE', job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名 start_date...

    Oracle 主要配置文件介绍

    保护数据考虑的 尤其在 CAMS 双机应用模式下 能够保证数据的一致性 具体的修改操作可参考 Linux与 Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件 这些参数被设置为特 定的值 用于...

    在Oracle 9i中如何设置时间间隔型数据

    在Oracle 9i中,按照SQL 99标准,增加了时间间隔型数据INTERVAL YEAR TO MONTH和INTERVAL DAY TO SECOND,它们和其他几种数据类型一起使得对时间的处理更加准确。本文介绍了设置时间间隔型数据的方法。

    interval analysis

    interval analysis tools

    oracle日期操作举例

     select sysdate,sysdate - interval ’7’ MINUTE from dual  当前时间减去7小时的时间  select sysdate - interval ’7’ hour from dual  当前时间减去7天的时间  select sysdate - interval ’7’ day ...

    oracle数据库定时任务dbms_job的用法详解

    'interval' —-每次间隔时间,interval以天为单位 ); –系统会自动分配一个任务号jobno。 2、删除job: dbms_job.remove(jobno); 3、修改要执行的操作: job:dbms_job.what(jobno, what);  4、修改下次执行时间...

    Delphi Interval属性用法源码

    Delphi Interval属性用法源码

    ORACLE9i_优化设计与系统调整

    §2.4.2.2 参数设置与初始化文件: 54 §2.4.2.3 在控制实用程序运行中设置跟踪参数 56 §2.4.2.4 服务器/客户包跟踪 57 §2.4.2.5 评估NET跟踪信息 58 §2.4.2.6 使用跟踪助理(Trace Assistant)检查跟踪文件 60 第...

    delphi *.textgrid文件到*.interval

    delphi6 使用praat进行音频标注时候,可以把textgrid文件转换成早期的interval文件爱女

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle获取系统时间及格式化

    在 Oracle 中,还可以使用 Interval 类型来表示时间间隔,例如,select sysdate - interval '7' minute from dual; 可以将当前时间减去 7 分钟。interval 类型可以与 arithmetic 运算符结合使用,例如,select ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    类型 参数 描述 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number...

Global site tag (gtag.js) - Google Analytics