1 背景:

Oracle 数据库在执行sql时,会自动的选择较优的执行计划。但有时oracle自动选择的执行计划不是最佳的执行计划,在执行的时候可能会造成效率问题,甚至会hang住。

2 问题提出:

A省近期20多天来在进行boss同步日志的生成时,经常出现程序长时间的运行没有相应,初步怀疑程序中的sql:

SQL_TEXT--------------------------------------------------------------------------------

SELECT a.column01,a.column02,a.column03,a.column04,b.column05,to_char(a.column06,'yyyymmddhh24miss'),a.column07,b.column08,c.column09,a.column10,a.column11,b.column12,b.column13,a.column14,a.column15FROMbig_table01a,small_table01b,small_table02bWHERE((((a.myid> :b0ANDa.myid< :b1)ANDa.servid=b.servid)ANDa.icpid=c.icpid)ANDa.icpid=b.icpid)ORDERBYa.myid

中涉及的表有锁表现象。

3 问题分析:

2007年5月18号登录A省业务数据库检查,没有发现sql中的表有锁表现象,而且由于程序仅仅是将查询的结果输出到日志文件,就算是锁表也不会影响到select的过程。

在进一步的检查中发现,数据库中挂死程序对应的等待事件为:

EVENT----------------------

PX Deq: Execute Reply

该等待事件是oracle在执行并发执行(PARALLEL EXECUTE)时,分成多个子进程进行操作,必须等待所有的子进程完成后才返回执行结果。

查询该sql的执行计划:

ExecutionPlan----------------------------------------------------------

……(略正常部分执行计划)1PARALLEL_TO_SERIALSELECTA1.C0C0,A1.C1C1,A1.C2C2,A1.C3C3,A1.C4C4,A1.C5C5,A1.C6C6,A1.C7C7,A2PARALLEL_TO_PARALLELSELECT/*+ ORDERED NO_EXPAND USE_NL(A2) INDE

X(A2 "PK_ICP") */A1.C1C0,A1.C11C13PARALLEL_COMBINED_WITH_PARENT4PARALLEL_COMBINED_WITH_PARENT5PARALLEL_COMBINED_WITH_PARENT6PARALLEL_COMBINED_WITH_PARENT7PARALLEL_COMBINED_WITH_PARENT8PARALLEL_COMBINED_WITH_PARENT9PARALLEL_FROM_SERIAL11PARALLEL_FROM_SERIAL13PARALLEL_COMBINED_WITH_PARENT14PARALLEL_COMBINED_WITH_PARENT

从上面的执行计划可以看到,以上的sql确实走了并发执行。由于BIG_TABLE01是分区表,oracle认为同时的对各个分区做并发执行是最优的执行计划,由于A省misc数据库是RAC机制,执行的时候,相关的子进程也被分发到另一个节点上,可能在长时间执行的过程中(执行频率比较高,每分钟执行一次),某些分发到另一节点的子进程找不到对应的上级进程,而上级进程需等待子进程的返回结果,于是就出现了长时间的等待,造成了程序长期的挂住——这也就是我们一开始看到的PX Deq: Execute Reply等待事件。

4 问题解决:

由于oracle采用了不恰当的执行计划,所以才导致执行的时候长时间的等待。因此,在这里我们用alter table big_table01 noparallel;/ alter index IDX_SUBNHISTORY_HISTORYID noparallel命令取消表和索引的并发执行属性。通过观察其执行计划,发现其已经不再走并发执行了:

重启应用后,运行15小时以上没有发现挂死现象了。

5 改进与预防措施:

该问题可能是A省的特殊问题,同样的sql在B省业务数据库中(也是rac)执行,观察其执行计划,看到其sql没有走并发执行。因此作为个案处理

oracle px execute reply,(转)PX Deq: Execute Reply 案例说明相关推荐

  1. html px转换rem,在线px转rem工具代码

    px转rem ,部署到本地服务器即可运行. px转rem body{font-family:"\5FAE\8F6F\96C5\9ED1",Helvetica;} ul{ list- ...

  2. vscode px转换rem插件 px to rem rpx vw (cssrem)

    vscode px转换rem插件px to rem & rpx & vw (cssrem) 这个插件非常好用,我给3星! 选中按Alt + Z可以px和rem转换

  3. 【ORACLE 高可用】 ORACLE STREAM 基于单表的流复制 配置 案例

    ORACLE STREAM 演示基于单表的流复制案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 ...

  4. Oracle 11g RAC 添加新节点及故障解决案例

    Oracle 11g RAC 添加新节点及故障解决案例 系统环境: 操作系统:RedHat EL55 集群:      Oracle 11g GI Oracle:   Oracle 11gR2 一.配 ...

  5. Oracle数据二进制传输,学习笔记:Oracle数值函数 十进制与二进制相互转换的函数使用案例...

    天萃荷净 ORACLE 十进制与二进制互转函数,开发DBA向我咨询数值转换的方法,Oracle数值转换函数NUMBER_TO_BIT等函数可用 1.Oracle数值转换之十进制转换二进制 CREATE ...

  6. oracle分区交换速度,oracle交换分区对数据的加载提速案例

    author:skate time:2012/07/16 oracle交换分区对数据的加载提速案例 环境: os:linux db:oracle10g 其中一个库的数据加载非常慢,如何能提高数据的加载 ...

  7. 13日直播预告丨Oracle多套库整合到多租户平台案例分享

    Oracle多套库整合到多租户平台案例分享-1月13日20:00 Oracle推出的19c版本作为12cR2的长期支持版本后,很多客户都逐渐将数据库迁移或者升级到19c.你是否也需要将数据库升级到19 ...

  8. oracle 下bdump占用大,【学习笔记】Oracle oradebug 利用oradebug释放被删除文件空间的案例...

    天萃荷净 利用oradebug释放被删除文件空间,运维DBA反映系统空间不足,由于trace跟踪文件占用,删除后不能释放空间,分析原因为oracle进程句柄占用 在很多时候,检查系统时候发现,由于某个 ...

  9. Oracle数据库服务器IO高的分析方案和案例探讨

    Oracle数据库服务器IO高的分析方案和案例探讨 本文原题<ORACLE数据库服务器IO高的分析方案和案例探讨> 目录: 慧眼识珠--服务器磁盘这么繁忙,到底是谁干的? 谨记于心--OR ...

  10. 查看oracle 导出进程,【学习笔记】Oracle 通过v$session查看imp进程信息的案例

    天萃荷净 运维DBA反映需求在执行Oracle imp导入时需要查看导入的进程信息,通过v$session分析imp导入进程在服务器端v$session中的username列不是imp登陆用户名,而是 ...

最新文章

  1. 帝国cms二次开发之文件夹的功能说明
  2. ramdisk plus v11.5安装内存虚拟硬盘
  3. python数据整理代码_熬夜整理的资料:分享Python数据可视化图表代码和案例给大家...
  4. 8953n的user获取权限以及remount
  5. 如何将软件限制策略发挥大作用
  6. 小程序确定取消弹窗_小程序开发之弹出框
  7. Nand Flash Yaffs系统大量写入数据失败问题的解决方法。
  8. HDU2136 Largest prime factor
  9. Python基础(随笔)
  10. Android 8.0学习(16)---8.0 的Doze模式白名单路径
  11. [Hash应用问题] 例3.2 给出n个整数,按从大到小的顺序输出前m大的数
  12. android遥控器用什么测试,Android编程调用红外线遥控功能示例
  13. Java程序猿修炼之道 之 Logging(3/3) - 怎么分析Log
  14. HDOJ 1166 HDU 1166 敌兵布阵 ACM 1166 IN HDU
  15. 部署SCOM2012 SP1
  16. UBUNTU设置SSH通过密钥登陆
  17. 为什么 iPhone 的原装充电线容易坏?
  18. 【深度学习Deep Learning系列】word2vec和doc2vec
  19. PicGo简介及其下载 安装 配置 使用 卸载
  20. dcx矩阵 - 打表 - 找规律

热门文章

  1. [转载]autorun.inf病毒源代码
  2. 华为2018年服务器销售额,2018Q4华为服务器收入全球第三 同比增45.9%
  3. 看了下华为工资,我不加班了
  4. linux公社_如何在Linux中安装和使用dig和nslookup命令
  5. Codeforces Round #831 (Div. 1 + Div. 2) problem C
  6. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十五║初探SSR服务端渲染(个人博客二)...
  7. nat流量,业务流量_10种增加在线业务流量的方法
  8. 为什么php-fpm会使用内存一直增加_百度输入法重大BUG:内存占用随用户词库增大而暴涨...
  9. 《论文阅读》THE CURIOUS CASE OF NEURAL TEXT DeGENERATION
  10. 尚硅谷nodejs入门教程_笔记