Oracle RAC 跨节点并行运算

Oracle RAC 跨节点并行运算

      RAC的一大优点就是可以跨节点进行并行计算,那么如何控制并行运算?

      合理设置跨节点并行,需要先设置一些参数:

instance_groups:这个参数主要是设置该节点实例是否属于某一个实例组。每个节点可以设置多个不同的实例组名,实例组名用逗号隔开。

parallel_instance_group设置的值为instance_groups里面设置的值,表明这个节点上面进行的并行操作可以跨越哪些实例组。

   

案例: 验证rac 并行计算


1、配置实例并行计算

SQL> alter system set instance_groups ='dw','dw1','dw123' scope=spfile sid='prod1';


System altered.


SQL> alter system set instance_groups ='dw','dw2','dw123' scope=spfile sid='prod2';


System altered.


SQL> alter system set instance_groups ='dw','dw2','dw234' scope=spfile sid='prod3';


System altered.

instance_groups :设置instance 组,如上所示:dw 组包含所有实例,dw1,dw2,dw3 只包含单个实例,dw123 包含两个实例,dw234 包含一个实例

parallel_instance_group: 如果不设置,默认在任何实例上的并行操作都会分布到所有实例上,设置parallel_instance_group后,指定只在那个实例组指定的实例上做并行操作

如:parallel_instance_group = dw ,则所有的实例都会做并行(dw 包含所有实例)

        parallel_instance_group = dw1 ,则并行操作只在实例1上进行


设置如下:


在实例 1上:

1、配置参数

SQL> show parameter instance_group


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_groups                      string      dw,dw1,dw123

parallel_instance_group              string               ;参数为空,则会在所有实例上运行并行操作


2、scott 用户做并行操作

SQL> conn scott/tiger

Connected.

SQL> alter session enable parallel dml;


Session altered.


SQL> alter table emp1 parallel;


SQL> insert /*+ parallel(emp1 4) */ into emp1 select * from emp;


14 rows created.


SQL> rollback;


Rollback complete.


SQL> insert /*+ parallel(emp1 4) */ into emp1 select * from emp;


14 rows created.



3、查看并行结果

SQL> select inst_id ,sid from gv$session where username='SCOTT';


INST_ID        SID

---------- ----------

        1        126

        1        134

        1        152

        3        124

        3        125

        3        141

        3        145

        2        126

        2        147


9 rows selected.

配置如下:


SQL> alter system set parallel_instance_group ='dw123';


System altered.


SQL> show parameter instance_group


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_groups                      string      dw,dw1, dw123

parallel_instance_group              string      dw123

SQL>

SQL> select inst_id ,sid from gv$session where username='SCOTT';

INST_ID        SID

---------- ----------

        1        116

        1        120

        1        121

        1        122

        1        129

        2        122

        2        123

        2        134

        2        135


9 rows selected.


parallel_instance_group= dw123,  dw123 组包含实例1和2 ,所以并行操作选择实例1和2 。



你可能感兴趣的:(oracle)