2013-05-07 71 views
0

我有一个像这样的过程。Oracle PL/SQL:块并行执行

create or replace 
Procedure PROCEDURE_NAME 
begin 

Insert Instructions 

Insert Instructions 

Insert Instructions 

Some Instructions 

Some Instructions 

Some Instructions 


end; 

上面的指令块可以并行执行而不会有任何冲突。我如何在Oracle Procedure中定义并行执行它们?

我能为他们作出不同的程序,但希望在此过程中最小的修改,我相信调用指令并行SQL是可能的。

+0

为什么所有CAPS问题标题? – Raptor 2013-05-07 09:19:13

回答

1

你一定要读Oracle Docs about parallel execution

但是汇总,为初学者:

您可以指定一个声明,在并行运行(有提示):

select /*+parallel(e 4)*/ * 
from emp e; 

可以设置并行读取表格:

ALTER TABLE emp PARALLEL 4; 
--a select on it will run in parallel; 

如果由并行查询发出一个函数,它可以并行运行,并在定义它时返回子句之后添加PARALLEL_ENABLE。

的过程不能secified并行,AFAIK来运行(它并没有太大的意义对我来说)。

+0

我需要2个语句并行运行。我认为你现在应该再读一遍。 – 2013-05-07 09:43:21

+0

哎哟,我的回答是无用的您的要求,但我会离开这里,也许是有用的人...... – 2013-05-07 11:00:06

+0

我想我明白了。 PL/SQL没有并行运行语句的本地功能。将这些语句封装在DBMS_Scheduler作业中是最可靠的方法。 – 2013-05-09 06:35:39

5

并行执行多个过程可以通过DBMS_SCHEDULER链来完成。这些允许一系列程序基于其他程序的成功或失败而被执行。

Oracle的SQL Developer有一个图形界面,以帮助它,虽然我一直用手工编码自己他们。

有一个在documentation一个有用的例子。

+0

同样,我不问你如何并行运行多个程序,但是如何在一个程序中并行运行多个语句。 – 2013-05-09 05:23:56