2013-05-07 73 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