Oracle Scheduler proc 未在下一次开始时间之前完成

Posted

技术标签:

【中文标题】Oracle Scheduler proc 未在下一次开始时间之前完成【英文标题】:Oracle Scheduler proc doesn't complete before next start time 【发布时间】:2018-05-03 13:58:29 【问题描述】:

我想知道如果调度程序需要一个多小时才能完成,但调度程序被配置为每小时重新运行一次,会发生什么。它会创建多个运行会话还是等待上一次运行完成?

【问题讨论】:

【参考方案1】:

它会等待。我会每分钟开始这项工作,但运行需要 2 分钟

SQL> create table t ( tag varchar2(10), d date);

Table created.

SQL>
SQL> create or replace
  2  procedure P is
  3  begin
  4    insert into t values ('start',sysdate);
  5    commit;
  6    dbms_lock.sleep(120);
  7    insert into t values ('end',sysdate);
  8    commit;
  9  end;
 10  /

Procedure created.

SQL>
SQL> begin
  2    dbms_scheduler.create_job (
  3      job_name        => 'JOB1',
  4      job_type        => 'PLSQL_BLOCK',
  5      job_action      => 'begin p; end;',
  6      start_date      => systimestamp,
  7      repeat_interval => 'freq=minutely;bysecond=0;',
  8      enabled         => true);
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL> select * from t;

TAG        D
---------- -------------------
start      03/05/2018 22:47:00
end        03/05/2018 22:49:00
start      03/05/2018 22:49:00

【讨论】:

太棒了。谢谢

以上是关于Oracle Scheduler proc 未在下一次开始时间之前完成的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中 select sum(一个列字段) as ... 在下面有多个表外连接的情况下 提示“未明确定义列”,为什么?

Oracle定时任务-DBMS_SCHEDULER

如何使用 dbms_scheduler 在 oracle 中禁用作业

如何在 Oracle 中使用 DBMS_SCHEDULER 删除文件

Oracle Scheduler中的repeat_interval

Oracle DBMS_SCHEDULER sysdate 参数