加载中…
个人资料
王显伟
王显伟
  • 博客等级:
  • 博客积分:0
  • 博客访问:7,359
  • 关注人气:2,791
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

AWR实战分析之---- latch free

(2014-01-08 09:50:39)
标签:

awr详解

王显伟

latch等待事件分析

awr案例分析

awr案例详解

分类: AWR案例分析

    昨天下午下班前瞄了一眼数据库一天运行情况,发现逻辑DG数据库会话数有些异动,取了一下当时的AWR报告,果然有些异常,但不算太严重,但是出现的等待事件很值得研究一下,具体信息如下: http://s16/mw690/001N2SGity6FCImhucDdf&690latch free" TITLE="AWR实战分析之---- latch free" />

从这部分来看,数据库负载并不算高,但是结合报表数据库业务情况,会话数有点异常,这也是我发现数据库有异常的依据,继续看TOP 5 Event
http://s8/mw690/001N2SGity6FCIxzuK317&690latch free" TITLE="AWR实战分析之---- latch free" />
果然出现了非空闲等待事件latch free和read by other session,因为read by other session我前面分析过,原因基本上就那么多,详细分析:http://blog.sina.com.cn/s/blog_61cd89f60102ef0s.html ,今天我重点分析一下latch free,这几天正在看盖国强的《深入解析Oracle.DBA入门进阶与诊断案例》是一本不错的书,已经买不到纸质的了,老盖分享了电子版,强列推荐有一定基础的DBA好好读一下,地址:http://www.eygle.com/archives/2013/12/hforacle_release.html ,现在来说说latch free这个等待事件,该等待事件是latch等待事件的一个汇总,出现该等待事件需要查询v$latch查看具体的等待,当然AWR也有详细的统计,就是Latch Sleep Breakdown部分http://s1/mw690/001N2SGity6FCImnixOa0&690latch free" TITLE="AWR实战分析之---- latch free" />

从上图我们可以看出,是热块引起的,cache buffers chains等待事件,重点关注逻辑读部分,latch:cache buffers chains该类等待事件的分析详见:http://blog.sina.com.cn/s/blog_61cd89f60102edum.html,处理方法都是一样的,我们看一下TOP SQL

http://s16/mw690/001N2SGity6FCImkYzBcf&690latch free" TITLE="AWR实战分析之---- latch free" />

http://s16/mw690/001N2SGity6FCMnmsmHaf&690latch free" TITLE="AWR实战分析之---- latch free" />
    SQL定位到了,重点是优化,SQL优化内容较多,但方法概括来讲就是查看执行计划,跟据执行计划具体分析,解决此类问题目标只有一个,减少逻辑读,提高SQL执行速度,因涉及公司核心后台表数据,具体分析过程不再列出。
    查看前面的分析,细心的朋友可能会问,为什么前的等待事件都显示latch:cache buffer chians,为什么本列中却显示了latch free这个汇总等待事件?不能把它和latch:cache buffer chians功为一类吧?应该还有其它原因,事实就是如此,我们继续分析,看一下数据库SQL 高版本情况

http://s4/mw690/001N2SGity6FCImlZNp23&690latch free" TITLE="AWR实战分析之---- latch free" />
前面两条有些异常,SQL高版本问题产生有两种常见的原因

第一种:修改cursor_sharing参数,导致curso无法共享

第二种:绑定变量不匹配

    但是从该库高版本问题来看,并不严重,但是从某种程序上讲,已经有所影响,我们可以排除第一种原因造成的高版本问题,因为该库没有修改后此参数,对于第二种原因,我们需要查询v$sql_shared_cursor视图查询不能共享的原因,重点关注为Y的列,在这个案例中为Y的列是BIND_MISMATCHED,也就是第二种情况,绑定变量不匹配,ORACLE官方解释该问题是一个bug,因绑定变量的字段长度不同,导致产生大量的子cursor,详细描述:High Version Count Due To BIND_MISMATCH (文档 ID 336268.1)

ORACLE官方针对该问题提供的解决方案,通过10503事件能够避免此类问题,具体方法如下:

ALTER SESSION SET EVENTS '10503 trace name context forever, level ';

ALTER SESSION SET EVENTS '10503 trace name context forever, level 4096';

 

方法都是理论上可行的,结合业务测试进行验证是关键!切记!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有