在oracle 叢集多例項中執行並行操作

yantaicuiwei發表於2011-10-24


1. 使用暗示或者更改表的方式

test_p 表可以同時在兩個例項上,執行並行操作,每個例項四個並行

ALTER TABLE  test_p  PARALLEL(DEGREE 4 INSTANCES 2)

Select /*+PARALLEL(TAB, DEGREE, INSTANCES) */

SQL> conn scott/tiger
Connected.
SQL>
SQL> select /*+PARALLEL(T,6,2) */ COUNT(1) FROM test_p T;

  COUNT(1)
----------
 103833814

Elapsed: 00:01:32.44


SQL> select inst_id,count(1) from gv$session where status='ACTIVE' AND USERNAME='SCOTT' GROUP BY INST_ID;

   INST_ID   COUNT(1)
---------- ----------
         1          7
         2          6

2.透過引數INSTANCE_GROUPS和PARALLEL_INSTANCE_GROUP,INSTANCE_GROUPS在11GR2已經廢棄

INSTANCE_GROUPS指出了本例項屬於的GROUP的名字。這個引數可以指定多個值,用“,”分開。也就是說一個例項可以屬於多個例項組。是靜態引數,需重啟數生效

PARALLEL_INSTANCE_GROUP是並行查詢使用的組的名字,如果這個引數是空的,那麼說明PQ可以使用資料庫的所有例項。如果指定了某個名字,那麼說明PQ只能在指定的INSTANCE GROUP裡進行,也就是說PARALLEL_INSTANCE_GROUP所取的值只能開源於INSTANCE_GROUPS引數中所列的值

PARALLEL_INSTANCE_GROUP引數是可以在會話級動態修改的,因此透過調整這個引數,可以控制並行查詢的範圍。這個特性對於雙節點RAC和多節點RAC都十分有用。

一個典型的設定:
比如2節點的資料庫:
A.INSTANCE_GROUPS=INSTANCE_A,ALL_INSTANCE 
B.INSTANCE_GROUPS=INSTANCE_B,ALL_INSTANCE

如果你想在自己例項上跑:
ALTER SESSION SET PARALLEL_INSTANCE_GROUP=INSTANCE_A;
然後執行並行查詢
如果你想在兩個節點上跑,設定為ALL_INSTANCE 
或者''

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21601207/viewspace-709584/,如需轉載,請註明出處,否則將追究法律責任。

相關文章