在10.2以上的版本,收集统计信息,如使用dbms_stats.gather_table_stats,还是在ebs中调用fnd_stats.GATHER_TABLE_STATS,有的时候虽然用了degree的参数,如degree=8,但是会发现仍然不使用并行。在10046的trace中,我们可以看到:

/* SQL Analyze(0) */ select /*+ full(t) no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad */to_char(count("A")),to_char(substrb(dump(min("A"),16,0,32),1,120)),to_char(substrb(dump(max("A"),16,0,32),1,120)),to_char(count("B")),to_char(substrb(dump(min("B"),16,0,32),1,120)),to_char(substrb(dump(max("B"),16,0,32),1,120)) from "TEST"."T2" t where TBL$OR$IDX$PART$NUM("TEST"."T2",0,4,0,"ROWID") = :objn /* SYN,NIL,NIL,SYN,NIL,NIL, B17161, C1, C1, C1, C2, C2, C2*/

1

/* SQL Analyze(0) */select/*+  full(t)    no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad  */to_char(count("A")),to_char(substrb(dump(min("A"),16,0,32),1,120)),to_char(substrb(dump(max("A"),16,0,32),1,120)),to_char(count("B")),to_char(substrb(dump(min("B"),16,0,32),1,120)),to_char(substrb(dump(max("B"),16,0,32),1,120))from"TEST"."T2"twhereTBL$OR$IDX$PART$NUM("TEST"."T2",0,4,0,"ROWID")=:objn/* SYN,NIL,NIL,SYN,NIL,NIL, B17161, C1, C1, C1, C2, C2, C2*/

这是因为在10.2以上的版本中,并行默认是最小3个slave,且每个px slave最小1000个block。(DBMS_STATS PARALLEL DEGREE IGNORED IN 10.2 (Doc ID 389851.1))

In 10.2 there is a threshold value where the Parallelism will start. The minimum number of slaves is 3 and the minimum blocks per PX slave should be at least 1000. So, the table must have 3000 blocks before dbms_stats will consider executing in parallel, other wise the DEGREE is ignored. In 9.2 or earlier there was no such restriction.

1

In10.2thereisathresholdvaluewheretheParallelismwillstart.Theminimumnumberofslavesis3andtheminimumblocksperPXslaveshouldbeatleast1000.So,thetablemusthave3000blocksbeforedbms_statswillconsiderexecutinginparallel,otherwisetheDEGREEisignored.In9.2orearliertherewasnosuchrestriction.

解决方法是,我们可以设置38028的event:

alter session set events '38028 trace name context forever';

再次运行dbms_stats 的语句。

1

2

altersessionsetevents'38028 trace name context forever';

再次运行dbms_stats的语句。

设置后,我们在10046的trace中可以看到已经走并行:

/* SQL Analyze(0) */ select /*+ full(t) parallel(t,8) parallel_index(t,8) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad */to_char(count("A")),to_char(substrb(dump(min("A"),16,0,32),1,120)),to_char(substrb(dump(max("A"),16,0,32),1,120)),to_char(count("B")),to_char(substrb(dump(min("B"),16,0,32),1,120)),to_char(substrb(dump(max("B"),16,0,32),1,120)) from "TEST"."T2" t where TBL$OR$IDX$PART$NUM("TEST"."T2",0,4,0,"ROWID") = :objn /* NDV,NIL,NIL,NDV,NIL,NIL*/

1

/* SQL Analyze(0) */select/*+  full(t)    parallel(t,8) parallel_index(t,8) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad  */to_char(count("A")),to_char(substrb(dump(min("A"),16,0,32),1,120)),to_char(substrb(dump(max("A"),16,0,32),1,120)),to_char(count("B")),to_char(substrb(dump(min("B"),16,0,32),1,120)),to_char(substrb(dump(max("B"),16,0,32),1,120))from"TEST"."T2"twhereTBL$OR$IDX$PART$NUM("TEST"."T2",0,4,0,"ROWID")=:objn/* NDV,NIL,NIL,NDV,NIL,NIL*/

oracle里面的degree,收集统计信息degree不生效的问题相关推荐

  1. Oracle收集统计信息

    Oracle收集统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...

  2. oracle 查看统计情报,Oracle 查看收集统计信息

    -- Start 统计信息相当于情报,对 Oracle 至关重要,如果统计信息不准确,Oracle 就会做出错误的判断.那如何查看统计信息呢?试一试下面的 SQL 吧. -- 查看表统计信息 sele ...

  3. Oracle并发(CONCURREMT)收集统计信息 (文档 ID 1555451.1)

    Oracle并发(CONCURREMT)收集统计信息 (文档 ID 1555451.1) 编辑手记:从11.2开始,可以通过CONCURRENT参数,启用表或分区的并行扫描,加快统计信息的收集速度. ...

  4. oracle并行收集统计信息慢,Oracle 学习之性能优化(四)收集统计信息

    emp表有如下数据.SQL> select ename,deptno from emp; ENAME   DEPTNO ------------------------------ ------ ...

  5. oracle tabe unlock_Oracle 学习之性能优化(四)收集统计信息

    emp表有如下数据.SQL> select ename,deptno from emp; ENAME   DEPTNO ------------------------------ ------ ...

  6. 验证Oracle收集统计信息参数granularity数据分析的力度

    最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname ...

  7. Oracle 12c数据库优化器统计信息收集的最佳实践

    Oracle 12c数据库优化器统计信息收集的最佳实践 转载自     沃趣科技(ID:woqutech) 作者         刘金龙(译) 原文链接   http://www.oracle.com ...

  8. num_rows为NULL时,进行Oracle收集统计信息

    对数据库进行导入导出或者数据发生变更,可能导致num_rows都为null,所以需要Oracle去收集统计信息,使得num_rows字段有数据 Oracle中的统计信息 使用DBMS_STATS.GA ...

  9. oracle收集统计计划,oracle收集统计信息之analyze

    oracle收集统计信息之analyze 1.analyze 收集表,索引的统计信息,现在oracle不推荐用analyze收集统计信息 收集表的统计信息Analyze table tablename ...

最新文章

  1. 量子霸权是个模糊的里程碑
  2. 专家提醒:计算机专业毕业生求职三要点!
  3. 全球及中国氢气储运行业规划方向及投资决策建议报告2021-2027年
  4. class没有发布到tomcat_Java 类在 Tomcat 中是如何加载的?
  5. 天猫整站SSM-分页-limit(做个人学习笔记整理用)
  6. 描述一下JAVA的加载过程_JVM源码分析之Java类的加载过程
  7. 阿里云开源编程马拉松入围项目
  8. ajax获取java session的值_jquery 怎么获取 ajax中的session值
  9. java quartz SimpleScheduleBuilder
  10. 面试官问我:什么是JavaScript闭包,我该如何回答?
  11. magento添加面包屑
  12. Security+ 学习笔记28 云计算
  13. 这可能是目前最全的Redis高可用技术解决方案总结
  14. c语言 有关文件读/写函数 详解
  15. 地理空间数据云下载的单波段合成及去黑边
  16. 用户自治的数字身份在我国的标准
  17. 如何将PDF转换成图片
  18. VA_LIST可变参数列表的使用方法与原理
  19. html模板改成织梦模板教程,织梦教程:如何用dedecms织梦模板搭建网站?
  20. 在Unity实现Canny边缘检测

热门文章

  1. scan——Theano中循环的实现
  2. go token验证_GitHub - goflyfox/gtoken: 基于gf框架的token插件,通过服务端验证方式实现token认证;...
  3. python软件下载安装-【Python下载】Python安装 v3.8.1 官方版-七喜软件园
  4. 5岁自学python编程-哈尔滨python少儿编程
  5. python经典实例pdf-Python机器学习经典实例_PDF电子书
  6. python画三维图-Python基于matplotlib实现绘制三维图形功能示例
  7. 如何系统的自学python-如何系统地自学 Python?
  8. python是什么意思中文-python是什么意思中文
  9. python有趣小程序-python好玩的小程序
  10. python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用