这可能只是我想知道如何做到这一点的词汇:
计划每 5 分钟定期运行一次的作业,但要跟踪它永远不会同时运行两个实例,即如果先前的运行时间超过 5 分钟,则下一个实例将被推迟或跳过。
实现这一目标的最简单/最优雅的方法是什么?
这可能只是我想知道如何做到这一点的词汇:
计划每 5 分钟定期运行一次的作业,但要跟踪它永远不会同时运行两个实例,即如果先前的运行时间超过 5 分钟,则下一个实例将被推迟或跳过。
实现这一目标的最简单/最优雅的方法是什么?
来自 Oracle 10g 管理员指南:
“DBMS_JOB 包已被DBMS_SCHEDULER包取代。特别是,如果您正在管理作业以管理系统负载,则应考虑通过撤销用户的包执行权限来禁用 DBMS_JOB。”
DBMS_SCHEDULER 是 Oracle 现在推荐的执行此操作的方法。它的一个优点是,如果您使用它,您可以通过企业管理器/网格控制来管理您的工作。
DBMS_JOB
照顾那个。就用它吧。
dbms_scheduler 在 dbms_job 之上的另一个优势是您可以更好地控制负载、资源使用,并且您还可以在数据库外部运行作业。
hth,罗纳德。
如果由于某种原因 dbms_job 或 dbms_scheduler 对您不起作用,您还可以使用DBMS_APPLICATION_INFO.SET_APPLICATION_INFO
设置作业的模块名称,您可以查询 v$session 以查看当前有多少会话正在执行该模块。
这是什么类型的工作?PL/SQL 存储过程?