rac 控制并行进程的执
来源:互联网 发布:企业信息采集软件 编辑:程序博客网 时间:2024/06/03 17:43
1、此参数用于在rac环境下限制并行只在运行节点并行操作
PARALLEL_FORCE_LOCAL
false
ModifiableALTER SESSION
, ALTER SYSTEM
Range of valuestrue | false
BasicNoPARALLEL_FORCE_LOCAL
controls parallel execution in an Oracle RAC environment. By default, the parallel server processes selected to execute a SQL statement can operate on any or all Oracle RAC nodes in the cluster. By setting PARALLEL_FORCE_LOCAL
to true
, the parallel server processes are restricted so that they can only operate on the same Oracle RAC node where the query coordinator resides (the node on which the SQL statement was executed on).
在rac环境中,如果使用parallel创建目标对象,那么并行创建一般会在主节点运行。
但是使用命令:
alter session set PARALLEL_FORCE_LOCAL=true
在并行创建目标对象,只会在执行命令的节点上并行创建目标对象
在节点二上执行并行:
select /*+full(t1) full(t2) parallel(t1,4)*/* from scott.t1,scott.t1 t2 where t1.empno=t2.empno;
select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid From Gv$session S where username='SCOTT' and MODULE='SQL*Plus' and status='ACTIVE'
) GROUP BY INST_ID;
INST_ID COUNT(1)
---------- ----------
2 5
2、parallel_instance_group和instance_groups控制并行进程在rac实例跨节点执行
SQL> show parameter instance_groupNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_groups stringparallel_instance_group string设置并行组:node1:SQL> alter system set instance_groups='p','p1' scope=spfile sid='test1';node2:SQL> alter system set instance_groups='p','p2' scope=spfile sid='test2';重启rac:SQL> show parameter instance_groupNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_groups string p, p2parallel_instance_group stringSQL> show parameter instance_groupNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_groups string p, p1parallel_instance_group string如果在没有设置parallel_isntance_group的情况下,rac会根据负载情况在两个节点分配并行进程数目:在node2 ,scott上执行并行: select /*+full(t1) full(t2) parallel(t1,4)*/* from scott.t1,scott.t1 t2 where t1.empno=t2.empno;然后查看:select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid From Gv$session S where username='SCOTT' and MODULE='SQL*Plus' and status='ACTIVE' ) GROUP BY INST_ID; INST_ID COUNT(1)---------- ---------- 1 4 2 5设置了parallel_instance_group 后,那么并行进程只会在含有parallel_instance_group 指定的组上的实例上分配并行进程设置SQL> alter session set parallel_instance_group='p2';SQL> show parameter instance_groupNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_groups string p, p2parallel_instance_group string p2当node2 设置了parallel_instance_group='p2'后,那么并行进程只会在instance_groups中有p2组的实例上开启并行进程,含有p2的instance_group只有在node2上有,那么并行进程会在node2上有5个进程,一个并行协调进程,4个并行进程在node2 ,scott用户下执行下列并行: select /*+full(t1) full(t2) parallel(t1,4)*/* from scott.t1,scott.t1 t2 where t1.empno=t2.empno;select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid From Gv$session S where username='SCOTT' and MODULE='SQL*Plus' and status='ACTIVE' ) GROUP BY INST_ID; INST_ID COUNT(1)---------- ---------- 2 7设置alter session set parallel_instance_group='p1'SQL> show parameter instance_groupNAME TYPE VALUE------------------------------------ ----------- ------------------------------instance_groups string p, p2parallel_instance_group string p1当node2 设置了parallel_instance_group='p1'后,那么并行进程只会在instance_groups中有p1组的实例上开启并行进程,含有p1的instance_group只有在node1上有,那么并行进程会在node1上有4个并行进程,node2上有一个并行协调进程.在node2 ,scott用户下执行下列并行: select /*+full(t1) full(t2) parallel(t1,4)*/* from scott.t1,scott.t1 t2 where t1.empno=t2.empno;select INST_ID,COUNT(1) from gv$px_session p where (p.inst_id,p.sid) in (select s.inst_id,s.sid From Gv$session S where username='SCOTT' and MODULE='SQL*Plus' and status='ACTIVE' ) GROUP BY INST_ID; INST_ID COUNT(1)---------- ---------- 1 8 2 1出现这样的结果,节点一是8,那是因为有并行子进程存在总结1、RAC可以通过instance_groups和parallel_instance_group来灵活控制如何跨节点进行并行运算。2、parallel_instance_group区分大小写。如果设定的parallel_instance_groups值不属于整个cluster的任意一个instance_groups设定值,则Oracle只会串行执行操作,不会启用并行。3、如果不设定parallel_instance_group,不管instance_group如何设置,并行可以跨越所有节点。4、如果某个节点设定了有效的parallel_instance_group,则在该节点发出的并行操作可以运行在parallel_instance_groups包含的所有节点上,不管parallel_instance_groups的节点是否包含发出命令的节点。也就是说并行会话运行在那些节点只与instance_groups和parallel_instance_groups有关,与命令在那个节点发出无关。5、一般建议设置好合适的instance_groups,但不要在系统级设定parallel_instance_groups,根据实际情况在会话级设置parallel_instance_groups参数。6、以下是一些例子及说明dwrac1.instance_groups='dw','dw1','dw123','dw124','dw134'dwrac2.instance_groups='dw','dw2','dw123','dw124','dw234'dwrac3.instance_groups='dw','dw3','dw123','dw134','dw234'dwrac4.instance_groups='dw','dw4','dw124','dw134','dw234'dwrac1.parallel_instance_groups='' --节点1发起的并行计算请求的会话可跨越所有节点执行dwrac1.parallel_instance_groups='dw' --节点1发起的并行计算请求的会话可跨越所有节点执行dwrac1.instance_groups='dw1' --节点1发起的并行计算请求的会话只可在节点1执行dwrac1.instance_groups='dw2' --节点1发起的并行计算请求的会话只可在节点2执行dwrac2.instance_groups='dw134' ----节点2发起的并行计算请求的会话只可在节点1/3/4上执行dwrac1.instance_groups='other' --不会启用并行
- rac 控制并行进程的执
- RAC的并行执行
- 如何控制RAC跨节点并行计算
- rac中并行的设置
- RAC 的并发控制
- oracle 之 控制oracle RAC 进行并行运算
- Oracle并行服务器(OPS)就是RAC的前身
- 并行进程
- 如何重建RAC的控制文件?
- 如何重建RAC的控制文件?
- 如何重建RAC的控制文件
- 如何重建RAC的控制文件?
- 并行版本控制的好帮手--WinMerge
- 并行版本控制的好帮手--WinMerge
- 并行版本控制的好帮手--WinMerge
- 并行版本控制的好帮手--WinMerge
- 并行版本控制的好帮手--WinMerge
- 并行版本控制的好帮手--WinMerge
- svm理论与实验之7: 核函数
- C++类中静态成员的使用
- Java程序使用OCI驱动连接Oracle数据库
- SYS登陆时报:ora-01031登陆权限不足
- 截屏
- rac 控制并行进程的执
- Jquery和Css实现的下拉菜单代码
- oracle归档日志的清除
- XML文件格式语法及DTD
- public,private,final,static的区别
- 开发使用WebService的数据源地址
- Oracle: ORA-09817: Write to audit file failed 的解决方法
- 无刷新动态加载数据,滚动条加载
- 用easybcd添加grub2引导已经无法引导13.04了,可以neogrub引导