【发布时间】:2020-01-24 04:19:56
【问题描述】:
DBMS_JOB 和 DBMS_SCHEDULER 有什么区别?
【问题讨论】:
标签: oracle scheduler job-scheduling dbms-scheduler dbms-job
DBMS_JOB 和 DBMS_SCHEDULER 有什么区别?
【问题讨论】:
标签: oracle scheduler job-scheduling dbms-scheduler dbms-job
来自其他论坛:
虽然 dbms_job 在 10g 和 11g 中仍然存在,但 Oracle 建议在 10g 及更高版本中使用 dbms_scheduler。 dbms_job 没有添加任何新功能,您可能很快就会遇到它的限制。
dbms_scheduler 比 dbms_job 更健壮、功能更全面,并包含以下 dbms_job 所没有的特性:
10g 第 1 版之后的版本中的功能包括:
【讨论】:
需要注意的一个区别是,与 DBMS_JOB 不同,DBMS_SCHEDULER 执行提交,这使得它不适合某些用途。对于更简单的要求,它也相当麻烦。虽然 DBMS_JOB 将不再增强,但它不太可能被取消支持,因为必须有成千上万的系统在使用它并依赖于它的工作方式,包括不执行调用它的事务的隐式提交。
请参阅this Ask Tom thread 了解更多信息。
【讨论】:
接下来列出的是 DBMS_SCHEDULER 相对于 cron 的一些好处:
• 可以使一个作业的执行依赖于另一个作业的完成
• 强大的资源平衡和灵活的调度功能
• 可以基于数据库事件运行作业
• 无论操作系统如何,DBMS_SCHEDULER 语法的工作方式都相同
• 可以使用数据字典运行状态报告
• 如果工作在集群环境中,无需担心为集群中的每个节点同步多个 cron 表
接下来列出的是使用 cron 的一些优点:
• 易于使用、简单、久经考验
• 几乎在所有 Linux/Unix 机器上普遍可用;在大多数情况下,无论 Linux/Unix 平台如何,运行几乎相同(是的,存在细微差别)
• 与数据库无关;独立于数据库运行,无论数据库供应商或数据库版本如何,工作方式都相同
• 无论数据库是否可用都有效
【讨论】:
我知道这是一个旧线程,但这似乎是相关的。
随着升级到 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 的旧接口。
【讨论】: