如何创建“单例”实例 oracle中的预定工作?
这可能只是我缺少找出如何执行此操作的词汇:
计划每 5 分钟定期运行一次的作业,但是要跟踪它永远不会有两个实例同时运行,即下一个实例将被推迟如果之前的运行时间超过 5 分钟,则跳过。
实现这一目标最简单/最优雅的方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
DBMS_JOB
负责处理这个问题。 只需使用它即可。DBMS_JOB
takes care of that. Just use it.dbms_scheduler 比 dbms_job 的另一个优点是您可以更好地控制负载、资源使用情况,并且还可以运行数据库外部的作业。
哈,
罗纳德.
an other advantage that dbms_scheduler has above dbms_job is that you can better control the load, resource usage and that you can also run jobs external to the database.
hth,
Ronald.
如果由于某种原因 dbms_job 或 dbms_scheduler 不适合您,您还可以使用 DBMS_APPLICATION_INFO.SET_APPLICATION_INFO 来设置作业的模块名称,并且您可以查询 v$session 以查看当前有多少个会话执行该模块。
这是什么类型的工作? PL/SQL 存储过程?
If for some reason dbms_job or dbms_scheduler doesn't work for you, you could also use
DBMS_APPLICATION_INFO.SET_APPLICATION_INFO
to set the module name of your job and you could query v$session to see how many sessions are currently executing that module.What type of job is this? A PL/SQL stored procedure?
来自 Oracle 10g 管理员指南:
“DBMS_JOB 包已被 DBMS_SCHEDULER 包 特别是,如果您正在管理作业来管理系统负载,则应考虑通过撤销用户的包执行权限来禁用 DBMS_JOB。
DBMS_SCHEDULER 是 Oracle 目前推荐的执行此操作的方法。 它的一个优点是,如果您使用它,您可以通过企业管理器/网格控制来管理您的作业。
From the Oracle 10g administrators guide:
"The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package. In particular, if you are administering jobs to manage system load, you should consider disabling DBMS_JOB by revoking the package execution privilege for users."
DBMS_SCHEDULER is Oracle's recommended way to do this now. One advantage it has is that you can manage your jobs via Enterprise Manager/Grid Control if you're using this.