暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将dbms_job更改为dbms_scheduler

askTom 2018-01-08
275

问题描述

嗨,汤姆,

我有一个要求,我需要将dbms_job功能更改为dbms_scheduler. 关于我很少查询:
1.在循环内调用现有的dbms_job.submit_job,该循环调用某些过程
例如: 我在1 .. 10
dbms_job.submit(jobnumber,action,sysdate)。
我们可以使用相同的; 也可以在循环中调用dbms_scheduler。如果是,那么它是可取的。

2.Dbms_job.submit在完成其功能后结束。在scheduler中我们是否需要使用auto_drop “TRue” 来获得相同的功能。

3.现有代码检查失败作业,并调用dbms_job的损坏函数。在调度程序中,这将是什么替代方案。

提前谢谢。

专家解答

1) 在调度程序中,作业是架构拥有的对象 (与其他任何对象一样),因此它必须具有唯一的名称。所以你可以做这样的事情:

for i in 1 .. 10 loop
  dbms_scheduler.create_job('MYJOB'||i, .... );
end loop;
复制


2) 如果调度程序作业没有重复间隔,它将像dbms_job一样被丢弃,例如

SQL> begin
  2      dbms_scheduler.create_job (
  3         job_name           =>  'MYJOB',
  4         job_type           =>  'PLSQL_BLOCK',
  5         job_action         =>  'null;',
  6         start_date         =>  sysdate,
  7         enabled            =>  true,
  8         comments           =>  'One off job');
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL>
SQL> select job_name from user_scheduler_jobs;

JOB_NAME
--------------------------------------------------------------
MYJOB

SQL> -- a short time later
SQL> /

no rows selected
复制



3) 调度程序具有更大的灵活性。工作重试并最终不再运行的概念仍然存在,但是在监视它们或对故障做出反应方面,还有很多其他选择。例如,您可以收到错误的电子邮件,或者您可以让调度程序在作业失败时引发一个 “事件”,这可能会触发其他作业等。

在这里查看详细信息

https://docs.oracle.com/cd/E18283_01/server.112/e17120/scheduse008.htm


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论