DBMS_JOB与DBMS_SCHEDULER有什么区别?
答案 0 :(得分:19)
来自其他论坛:
虽然dbms_job仍然存在于10g和11g中,但Oracle建议在10g及更高版本中使用dbms_scheduler。没有新功能添加到dbms_job中,您很可能会很快遇到其局限性。
dbms_scheduler比dbms_job更强大,功能更全面,并包含dbms_job没有的以下功能:
10g第1版之后的版本中的功能包括:
答案 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的旧接口。