我有一个调用pl / sql包过程的预定作业。 目前,如果程序完成或者超过基于配置表中设置的值的时间范围(作业执行时间范围12AM到3AM),则程序将自行退出。
如果超过允许执行的时间范围,我想使用Oracle Scheduler功能干净地结束该过程。反正有没有这样做?
Oracle版本12.2
DBMS_SCHEDULER.CREATE_JOB
程序允许您为作业设置许多属性,包括max_run_duration
。
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sched.htm#CIHBCCJI
这是一个老问题,涵盖了这个:
也许通过运行另一个工作来终止它?安排这项工作每天凌晨3点运行。这是JOB_ACTION
看起来像
DECLARE
v_state user_scheduler_jobs.state%TYPE;
BEGIN
SELECT state
INTO v_state
FROM user_scheduler_jobs
WHERE job_name = 'MY_JOB_NAME';
IF v_state = 'RUNNING' THEN
DBMS_SCHEDULER.STOP_JOB(job_name=>'MY_JOB_NAME',force =>true);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('THE JOB MY_JOB_NAME IS NOT FOUND');
END;
/