DBMS_JOB / Oracle作业调度
-
25-09-2019 - |
题
嗨, 我想知道你是如何在Oracle中创建APEX作业调度?
我正在其管理呼叫的系统,每个呼叫具有严重性级别。一个小时后,严重级别应升级。我已经寻找小时,我想,我需要定义一个作业调度程序,然后运行更新?
如果你们能抛出一些建议我的路,我会很感激的!
干杯 富
解决方案
在我看来,最简单可行的解决方案能够工作会是这样的
CREATE PROCEDURE escalate_cases
AS
BEGIN
UPDATE tickets
SET status = 'ESCALATED'
WHERE status = 'NOT ESCALATED'
AND open_date < sysdate - interval '1' hour;
END escalate_cases;
DECLARE
l_jobno PLS_INTEGER;
BEGIN
dbms_job.submit(
l_jobno,
'BEGIN escalate_cases(); END;',
sysdate + interval '1' minute,
'sysdate + interval ''1'' minute'
);
dbms_output.put_line( 'Job ' || l_jobno || ' submitted.' );
commit;
END;
在程序升级所有符合条件的机票和匿名块创建一个运行过程的每一分钟的工作。运行每分钟(或者根据你的容忍长期每隔几分钟就可以等待升级票)一个任务将是更容易比每张票单独的作业运行它已经提交后正好1小时,以管理
现在,如果你想获得多一点成熟,DBMS_SCHEDULER包提供了相当多的功能,在DBMS_JOB包不。它提供了一些自动记录,它提供的能力,链就业机会,定义不同的窗口是就业机会和不运行(即,如果在5:30创建了票,你可能不希望在6:30升级它,因为它是小时后)等。并且DBMS_SCHEDULER是Oracle正在移动的方向。但我仍然觉得使用DBMS_JOB像这种相对简单的任务我自己。
其他提示
检查出材料此处一>
我已经使用由Justin具有良好的成功中列出的方法。行之有效的另一种方法是使用队列延迟交货。这使您能够对队列上报外部分页程序或等待的东西的能力。我没那么熟悉APEX所以我不知道这是在这方面是个好主意。
不隶属于 StackOverflow