ORACLE:DBMS Jobs 数据库连接

Posted

技术标签:

【中文标题】ORACLE:DBMS Jobs 数据库连接【英文标题】:ORACLE:DBMS Jobs database connection 【发布时间】:2012-09-07 06:34:00 【问题描述】:

目前在我的应用程序中,我有一个每隔 3 分钟触发一次的 dbms 作业。 Dbms 作业调用使用全局临时表的过程。

场景:

1.假设我的第一份工作在时间 (X) 触发,大约需要一个小时才能完成。 2.同时在时间(X+3 分钟)触发第二个作业。

问题:

这两个 dbms 作业是否共享相同的连接?我的意思是他们会为全局临时表使用相同的会话吗?

【问题讨论】:

这似乎是个难题。您要实现的业务逻辑到底是什么?根据您的要求,有击球手,更优雅的方式来实现它们。 @APC 我正在生成一份报告,根据数据和输入需要 1 小时或更长时间才能完成。但是对于某些输入,它需要几分钟,所以我不希望最后一个计划活动等到第一个结束。您能提出更好的解决方案吗? 【参考方案1】:

Oracle 不会自动启动同一个作业两次,即使完成时间比 INTERVAL 指定的时间间隔长。如果你强制它运行两次,它们将不会共享数据库会话。

编辑:要使其以特定间隔并行运行,您可以这样做:

 declare id number;
 begin
   dbms_job.submit(id, 'myjobstarter;', sysdate, 'sysdate+3/24/60');
   commit;
 end;

 create procedure myjobstarter as
   id number;
 begin
   dbms_job.submit(id, 'longRunningProcedure;');
   commit;
 end;

因此,您的常规作业每次运行时都会提交一个新作业。但是当然,您可能会以这种方式遇到一些锁定问题或其他竞争条件。另请注意,DBMS_JOB 不会无限并行运行作业,因此实际行为可能会变得有些不可预测。

【讨论】:

有没有办法强制作业以特定的时间间隔运行?所以我可以并行执行它们? 给我一些时间我会试试这个并回复你。

以上是关于ORACLE:DBMS Jobs 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle DBMS 中的多个列上使用过滤条件连接表

Oracle dbms_job

如何在 datagrip IDE 中集成 oracle DBMS

Oracle DBMS 能否从 Java 存储过程调用返回 Java 对象?

oracle dbms_random

Oracle dbms_xplan