dbms_job和pragma自主事务之间的区别

时间:2018-12-11 05:50:59

标签: sql oracle plsql

dbms_job和pragma自主事务之间有什么区别

1 个答案:

答案 0 :(得分:3)

除了它们的拼写不同外,还有其他事实吗?它们和苹果和香蕉一样。

DBMS_JOB程序包计划并管理作业队列中的作业。它用于在计划的时间运行某些过程。例如,每天的02:00、08:00和16:00;或每个星期六的12:00等。如果您使用的是Windows,则类似于其任务管理器。或者,在Unix上,它称为 Cron

它有一个名为DBMS_SCHEDULER弟弟,它提供了更多选择。不过,对于简单的工作,我仍然使用DBMS_JOB。此处更多信息:https://docs.oracle.com/database/121/ARPLS/d_job.htm#ARPLS019


Pragma表示该语句是编译指示(编译器指令)。编译是在编译时而不是运行时处理。它们将信息传递给编译器。

AUTONOMOUS_TRANSACTION编译指示更改了子程序在事务中的工作方式。带有此编译指示的子程序可以执行SQL操作并提交或回滚这些操作,而无需提交或回滚主事务中的数据。

它通常用于记录过程中的某些信息,而不影响主过程(因为pragma允许 logging 过程将其插入内容提交到日志表中,而不影响主过程-它可以甚至失败(并隐式回滚),但您的日志信息将保持不变并可供查看)。

人们在解决变异表错误时会滥用它;是的,此实用程序可以“解决”该问题,但通常是解决该问题的错误方式。

有关自动交易的更多信息,请点击此处:https://docs.oracle.com/database/121/LNPLS/static.htm#LNPLS00609