`
qinya06
  • 浏览: 595561 次
  • 性别: 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使用详解

    这需要指定 `job` 参数(Job 的唯一标识)、`what` 参数(要执行的 PL/SQL 代码)、`next_date` 参数(首次执行的日期和时间)和 `interval` 参数(之后的执行间隔)。在本例中,`interval => 'trunc(sysdate)+1+1/...

    Oracle Job定时任务

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

    oracleJob创建脚本

    ### Oracle Job 创建脚本详解 #### 一、Oracle Job 概述 在Oracle数据库中,Job是一种用于调度定期任务的功能,常被用来自动化执行数据库管理中的各种任务,比如备份、清理临时表空间等。Job主要由`DBMS_JOB`包...

    oracle job

    3. **调度Job**:使用`repeat_interval`参数设定Job的执行频率,例如每日、每周、每小时等。间隔可以非常灵活,可以根据需要定制。 4. **监控Job**:可以使用DBA视图(如DBA_JOBS, ALL_JOBS, USER_JOBS)来查看Job...

    oraclejob例子

    - 定义作业:使用DBMS_SCHEDULER包中的CREATE_JOB过程,指定作业名称、执行的PL/SQL代码、执行频率等参数。 - 启动作业:使用START_JOB过程激活作业,使其可以按照预定的时间表运行。 - 配置时间表:使用CREATE_...

    Oracle JOB 用法小结

    首先,为了启用JOB队列,需要设置初始化参数`job_queue_processes`。通过SQL语句`alter system set job_queue_processes=n;`设置该参数,其中`n`代表期望的并发作业数量,最大值为1000。要查看当前的作业队列后台...

    ORACLE创建JOB脚本

    2. DBMS_JOB.SUBMIT:提交一个新任务到调度队列,指定执行的PL/SQL代码或存储过程,并设置初始执行时间和间隔。 3. DBMS_JOB.RUN:立即启动一个已经存在的JOB。 4. DBMS_JOB.SCHEDULE:重新安排一个已存在的JOB,...

    oracle job 创建

    - `next_date`:设置 Job 的首次执行时间,例如 `TRUNC(LAST_DAY(SYSDATE))+2+6/24` 表示下个月的第2天凌晨6点。 - `interval`:定义 Job 的执行间隔,`TRUNC(LAST_DAY(SYSDATE))+2+6/24` 表示每个月的同一天凌晨6...

    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创建脚本

    如果需要立即执行,可以调用`DBMS_JOB.Broken`并设置`broken`参数为`false`,然后调用`DBMS_JOB.Run`。 7. **监控和管理Job**: 你可以使用`DBMS_JOB.INFO`查询Job的状态,或者使用`DBMS_SCHEDULER`包(在Oracle ...

    Oracle中job的使用详解

    使用 Oracle 的 Job 需要设置初始化参数 job_queue_processes,否则将无法使用 Job。可以使用以下命令设置初始化参数: sql> alter system set job_queue_processes=n; 其中,n 是一个大于 0 的整数,最大值为 ...

    oracle_job的创建更改及删除

    该过程需要四个参数:`job`、`what`、`next_date` 和 `interval`。其中,`job` 是作业的编号,`what` 是执行的任务的名称及其输入参数,`next_date` 是任务执行的时间,`interval` 是任务执行的时间间隔。 例如,...

    oracle中的job的用法

    设置Job时,需要指定何时执行任务,即INTERVAL参数。它是一个日期/时间表达式,可以指定不同的时间间隔来运行Job。例如,'TRUNC(SYSDATE+1)'表示每天午夜12点执行,'TRUNC(SYSDATE+1)+(8*60+30)/(24*60)'表示每天...

    oracle中JOB总结

    该参数应根据实际环境中的JOB需求进行调整,避免设置得过大导致JOB无法及时执行,或过小增加不必要的系统资源消耗。 在SNP执行JOB的过程中,它首先以JOB所有者的身份创建一个新的数据库会话,然后根据JOB的NLS设置...

    oracle job的用法

    Job 的其他管理操作包括修改执行操作(`DBMS_JOB.WHAT`),调整下次执行时间(`DBMS_JOB.NEXT_DATE`),设置执行间隔(`DBMS_JOB.INTERVAL`),暂停 Job(`DBMS_JOB.BROKEN`),以及恢复 Job(`DBMS_JOB.RUN`)。...

    Oracle Job定时任务.docx

    `INTERVAL`参数定义了Job的执行频率,它可以设置为各种时间间隔,例如: - 每天午夜12点:`INTERVAL => 'TRUNC(SYSDATE + 1)'` - 每天早上8点30分:`INTERVAL => 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'` - 每...

    oracle job 用法

    - `job`:输出参数,返回创建的Job编号。 - `what`:执行的PL/SQL代码块或存储过程名。 - `next_date`:Job首次执行的日期和时间。 - `interval`:后续重复执行的间隔,例如`'SYSDATE+1'`表示每天执行一次。 - `no_...

    Oracle Job定时任务.pdf

    INTERVAL 是 Oracle Job 中的一个重要参数,用于描述 Job 的执行频率。INTERVAL 的值可以是 date 或 timestamp 类型,以表示 Job 的执行时间。例如: * 每天午夜 12 点:TRUNC(SYSDATE + 1) * 每天早上 8 点 30 分...

    Oracle作业JOB探讨

    在Oracle作业中,`NEXT_DATE`和`INTERVAL`是非常重要的两个参数,它们共同决定了作业何时会被执行。 - **NEXT_DATE**:表示作业下一次被调度执行的确切时间点。 - **INTERVAL**:定义了作业执行的时间间隔。例如,...

Global site tag (gtag.js) - Google Analytics