DBMS_JOB与DBMS_SCHEDULER

时间:2010-11-11 07:08:51

标签: oracle scheduler job-scheduling dbms-scheduler dbms-job

DBMS_JOB与DBMS_SCHEDULER有什么区别?

4 个答案:

答案 0 :(得分:19)

来自其他论坛:

虽然dbms_job仍然存在于10g和11g中,但Oracle建议在10g及更高版本中使用dbms_scheduler。没有新功能添加到dbms_job中,您很可能会很快遇到其局限性。

dbms_scheduler比dbms_job更强大,功能更全面,并包含dbms_job没有的以下功能:

  • 记录作业运行(作业历史记录)
  • 简单但功能强大的调度语法(类似但比cron语法更强大)
  • 在操作系统上运行数据库之外的作业
  • 不同职业类别之间的资源管理
  • 使用作业参数,包括将对象传递到存储过程
  • 基于特权的作业安全模型
  • 在职位中命名职位和评论
  • 存储,可重复使用的时间表

10g第1版之后的版本中的功能包括:

  • 作业单位之间的依赖关系(10gR2及以上)
  • 基于财务日历和财务季度(10gR2及以上)的日程安排
  • 在收到事件时运行的基于事件的作业(10gR2及以上)
  • 在远程计算机上运行作业(11gR1及更高版本)
  • 关于感兴趣的工作事件的电子邮件通知(10gR2及以上)
  • 根据文件的到达(10gR2及以上)开始工作

答案 1 :(得分:16)

要注意的一个区别是,与DBMS_JOB不同,DBMS_SCHEDULER执行提交,这使得它不适合某些用途。对于更简单的要求,这也是相当麻烦的。虽然DBMS_JOB将不再被增强,但它不太可能不被支持,因为必须有数千个系统正在使用它并依赖于它的工作方式,包括不执行从中调用它的事务的隐式提交。

有关详情,请参阅this Ask Tom thread

答案 2 :(得分:0)

下面列出了DBMS_SCHEDULER对cron的一些好处:

•可以使作业的执行取决于另一个作业的完成

•强大的资源平衡和灵活的计划功能

•可以基于数据库事件运行作业

•无论操作系统如何,DBMS_SCHEDULER语法的工作方式都相同

•可以使用数据字典运行状态报告

•如果在集群环境中工作,则无需担心为集群中的每个节点同步多个cron表

下面列出了使用cron的一些优点:

•易于使用,简单,可靠和真实

•几乎普遍适用于所有Linux / Unix机箱;在大多数情况下,无论Linux / Unix平台如何运行几乎相同(是的,存在细微差别)

•数据库不可知;独立于数据库运行,无论数据库供应商或数据库版本如何,其工作方式都相同

•确定数据库是否可用

答案 3 :(得分:0)

我知道这是一个旧线程,但这似乎很重要。

通过升级到Oracle Database 19c,将在旧的DBMS_JOB接口的作用下转换作业。不用担心–放松!

会发生什么?这对您在DBA_JOBS中的工作意味着什么?

首先,您不能在计划程序的控制下阻止或跳过迁移。但是也没有理由这样做。

During the 19c upgrade for each job in DBMS_JOB a corresponding entry will be created with DBMS_SCHEDULER
The old DBMS_JOB interface still works. But using it will always create a corresponding entry in the scheduler
The check in preupgrade.jar is only checking for inconsistencies or any issues

这是什么意思:您仍然可以使用DBMS_JOB,但是在幕后我们使用的是DBMS_SCHEDULER。内部程序已更改。您的呼叫将以相同的方式工作,但是DBMS_JOB现在是DBMS_SCHEDULER的旧接口。

请参阅:DBMS_JOB – Behavior Change in Oracle 19c during upgrade