当前位置: 代码迷 >> Oracle管理 >> 请教有没有办法对指定用户设置Oracle的默认并行度(DOP,Degree of Parallel)
  详细解决方案

请教有没有办法对指定用户设置Oracle的默认并行度(DOP,Degree of Parallel)

热度:207   发布时间:2016-04-24 05:17:59.0
请问有没有办法对指定用户设置Oracle的默认并行度(DOP,Degree of Parallel)?
会话层可以通过ALTER SESSION设置并行度,比如
ALTER SESSION FORCE PARALLEL DDL PARALLEL 1
ALTER SESSION FORCE PARALLEL DML PARALLEL 1

系统参数(ALTER SYSTEM)有没有类似设置?或者可否让指定用户登陆时自动执行上述命令或者可实现相同功能的命令?

搜了半天帮助文档也没找到类似内容,各位高人有没有解决方法呢?


------解决方案--------------------

可以在写SQL时用hint 强制来使用并行。

HINT 提示修改
parallel(table,4) 并行度为4 
parallel(table) 如果使用parallel 但未指定并行度,则DOP要通过初始化参数CPU_count 和Parallel_THREADS_PER_CPU计算得到, 

并行度为4的程序,最多可以分配或创建9个并行执行服务器来满足这个事务操作,所以并行操作速度有很大提高,但对CPU占用比较多 

并行操作增加了事务操作的性能,但会连续的记录重做日志,并且造成瓶颈,所以可以使用nologging 模式来避免瓶颈 
sql> alter table table_name NOLOGGING; 
sql> select /*+ parallel(table,4)*/ count(*) from table;



并行处理服务器(Parallel Execution Servers)
并行处理服务器默认是开启的。因为PARALLEL_MAX_SERVERS参数的默认值是大于0的;

在SESSION级别修改并行处理
1 关闭并行处理
ALTER SESSION DISABLE PARALLEL DML|DDL|QUERY;
如,关闭DDL的并行处理
ALTER SESSION DISABLE PARALLEL DDL;
2 开启并行处理
ALTER SESSION ENABLE PARALLEL DML|DDL|QUERY;
如,开启DML的并行处理
ALTER SESSION ENABLE PARALLEL DML;

SQL语句强制并行处理
ALTER SESSION FORCE PARALLEL DML|DDL|QUERY;

如:强制并行DDL,并行度为5
ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;
注:强制并行处理的优先级比SQL语句中HINT的优先级要低


------解决方案--------------------
做个标记。。
------解决方案--------------------
PARALLEL_MAX_SERVERSProperty Description 
Parameter type Integer 
Default value Derived from the values of CPU_COUNT, PARALLEL_THREADS_PER_CPU, and PGA_AGGREGATE_TARGET 
Modifiable ALTER SYSTEM 
Range of values 0 to 3599 
Real Application Clusters Multiple instances must have the same value. 


Note:

This parameter applies to parallel execution in exclusive mode as well as in a Real Application Clusters environment.
PARALLEL_MAX_SERVERS specifies the maximum number of parallel execution processes and parallel recovery processes for an instance. As demand increases, Oracle increases the number of processes from the number created at instance startup up to this value.

If you set this parameter too low, some queries may not have a parallel execution process available to them during query processing. If you set it too high, memory resource shortages may occur during peak periods, which can degrade performance.

------解决方案--------------------
在文档中有这个参数PARALLEL_MAX_SERVERS
不过是设置最大并行数的

呵呵 好像还是没有解决楼主的需求

这个我也不太了解
楼主可以看看在用户的概要文件PROFILE里能不能设置
我现在没环境 不能帮你看了
  相关解决方案