gpt4 book ai didi

sql - 当 JOB 执行的过程没有完成时,JOB 何时再次执行它时会发生什么?

转载 作者:行者123 更新时间:2023-12-05 00:10:50 27 4
gpt4 key购买 nike

我想知道当一个过程通过一个作业执行时会发生什么,在它完成之前是作业调用该过程的下一次执行的时间。这是我创建的工作:

DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
(
job => x
,what => 'BEGIN PKG_DISTRIBUIDOR_SCHEDULER.PRC_DISTRIBUYE_TRANSACCIONES(5000); END;'
,next_date => to_date(sysdate,'dd/mm/yyyy hh24:mi:ss')
,interval => 'SYSDATE+30/86400'
,no_parse => FALSE
);
DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;

如您所见,该作业每 30 秒执行一次。因此,如果我的程序 (PRC_DISTRIBUYE_TRANSACCIONES) 延迟超过 30 秒,那么在这种情况下,作业会做什么?

最佳答案

如果您使用(旧的已弃用)作业,即 DBMS_JOB当前作业完成时确定下一次执行的开始时间。
如果您将间隔指定为 SYSDATE+30/86400那么它意思是:“作业每 30 秒运行一次。”
它的意思是:“下一个作业在上一个作业完成后 30 秒开始。”
如果您使用调度程序作业,即 DBMS_SCHEDULER作业开始后立即出现 repeat_interval (例如 FREQ=SECONDLY;INTERVAL=30 )被评估以确定作业的下一个计划执行时间。虽然这可能会在作业仍在运行时到达,但在当前作业完成之前,作业的新实例不会启动。见 About Setting the Repeat Interval
所以这意味着:如果一个作业持续时间超过 30 秒,那么新作业将在前一个作业完成后立即开始。

关于sql - 当 JOB 执行的过程没有完成时,JOB 何时再次执行它时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56263769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com