首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行运行/执行多个过程- Oracle PL/SQL

并行运行/执行多个过程- Oracle PL/SQL
EN

Stack Overflow用户
提问于 2016-01-22 13:29:26
回答 3查看 20.3K关注 0票数 1

我有一个活动表,它获取系统的所有表事件。所有系统表上的新订单、插入/删除等事件都将插入到此表中。因此,对于活动表来说,事件/秒的大小是非常大的。

现在,我希望根据业务逻辑处理传入事件,这取决于负责引发事件的表。每个表可能有不同的处理过程。

我使用了相同的链接PL/SQL中的并行调用

作为一种解决方案,我创建了多个dbms_scheduler作业,这些作业将同时被调用。为了实现并行处理,所有这些作业(JOB1, JOB2--- - -JOB10)都将具有与JOB_ACTION相同的过程JOB_ACTION

代码语言:javascript
复制
begin
    dbms_scheduler.run_job('JOB1',false);
    dbms_scheduler.run_job('JOB2',false);
  end; 

ProcForAll_Processing:这个过程将依次调用6个其他过程Proc1,proc2,proc3 --- -- - -- - Proc6。我也想实现这些并行处理。

P.S:我们不能在ProcForAll_Processing proc中创建更多的工作来实现并行处理,因为它可能会消耗更多的资源,而且DBA也不同意创造更多的就业机会。而且,我不能使用dbms_parallel_execute进行并行处理。

请帮助我,因为我真的被困在做这件事上

EN

回答 3

Stack Overflow用户

发布于 2016-01-22 16:20:02

在一般情况下,没有作业是不可能的,而且它将为此进行多个会话。除了少数几个例外,没有多线程PL\SQL这样的东西。其中之一是SQL语句1的并行执行。因此,为了并行执行PL\代码,有一些滥用的尝试,例如,尝试在这里查看2。

但正如我所说的,这是虐待 IMHO。

参考资料:

  1. 01/server.102/b 14223/usingpe.htm
  2. http://www.williamrobertson.net/documents/parallel-plsql-launcher.html
票数 3
EN

Stack Overflow用户

发布于 2016-01-23 22:13:04

找个新的DBA。或者更好的是,把他们排除在任何决策过程之外。DBA不应该检查您的代码,也不应该告诉您不要创建工作,除非有一个好的、特定的原因。

到目前为止,使用DBMS_SCHEDULER并行运行是实现此结果的最简单和最常见的方法。当然,它将消耗更多的资源,这就是并行不可避免地要做的事情。

另一个更糟糕的选择是使用并行流水线表函数。这是一个高级的PL/SQL特性,很难在一个简单的例子中解释。我所能做的就是向您推荐手册

票数 3
EN

Stack Overflow用户

发布于 2017-03-04 16:55:39

您应该尝试使用DBMS_PARALLEL_EXECUTE (因为RDBMS 11)。

plsql

11gR2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34947855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档