Know more about AWR Parse Statistics

Parse CPU to Parse Elapsed%是一个我们在分析AWR报告时常会看到的解析性能指标,该指标反映了 快照内解析CPU时间和总的解析时间的比值(Parse CPU Time/ Parse Elapsed Time); 若该指标水平很低,那么说明在整个解析过程中 实际在CPU上运算的时间是很短的,而主要的解析时间都耗费在各种其他非空闲的等待事件上了(如latch:shared pool,row cache lock之类等), 通过该指标我们可以了解是否有必要来调优Oracle的优化器Optimizer的解析(parse)工作, 调优的对象包括软、硬解析(soft and hard parse),理论上我们的目标是有极少的硬解析,少量的软解析,以及Parse CPU to Parse Elapsed% 接近于100% 相当于解析时都是在CPU上运算 而不等待, 所以Parse CPU to Parse Elapsed%也同时给我们以调优方向的启示。   Soft Parse %是AWR中另一个重要的解析指标,该指标反应了快照时间内 软解析次数 和 总解析次数 (soft+hard 软解析次数+硬解析次数)的比值,若该指标很低,那么说明了可能存在剧烈的hard parse硬解析,大量的硬解析会消耗更多的CPU时间片并产生解析争用(此时可以考虑使用cursor_sharing=FORCE); 理论上我们总是希望 Soft Parse % 接近于100%, 但并不是说100%的软解析就是最理想的解析状态, 通过设置 session_cached_cursors参数和反复重用游标我们可以让解析来的更轻量级,即通俗所说的利用会话缓存游标实现的软软解析(soft soft parse)。   其他一些对于tuning SQL parse调优SQL解析有帮助的指标信息:   Reloads:   Library Cache Activity -> SQL Area reloads 信息,该指标反映了 游标被重新加载到shared pool共享池中的次数,引起reload重新装载的原因可能是共享游标失效Invalidation (失效可能由DDL等操作引起),也可能由shared pool共享池Free memory空闲内存过少导致sql reloads;reloads往往意味着本来可能已经被解析好的SQL语句,需要再次经历硬解析才能使用。  

Library Cache Activity

  • "Pct Misses" should be very low
NamespaceGet RequestsPct MissPin RequestsPct MissReloadsInvali- dations
BODY2450.411,8350.0500
CLUSTER6650.001550.0000
DBLINK1,0200.00000
EDITION340.00520.0000
INDEX3083.9024410.66140
OBJECT ID273100.00000
QUEUE50.007620.0000
RULESET20.0020.0000
SCHEMA1,0770.00000
SQL AREA3,22429.4430,2562.9211989
SUBSCRIPTION10.0010.0000
TABLE/PROCEDURE6,2100.558,0692.12400
TRIGGER1820.001880.0000
    High version Count:   在Oracle中同样的SQL语句可能被硬解析成不同的子游标(child cursor),一句SQL statement拥有过多的child cursor(例如超过50个子游标)往往说明游标无法被共享,若游标无法被共享使用那么只好每一次都再次硬解析和生成更多的子游标了, 可以通过v$sql_shared_cursor来了解具体无法共享游标的原因。 实际引起SQL High Version Count的原因可能有很多,这里不再一一列举,特别需要注意的是以下2个Note涉及到的问题:   Note 296377.1 Handling and resolving unshared cursors/large version_counts Troubleshooting: High Version Count Issues Note 261020.1 High Version Count with CURSOR_SHARING = SIMILAR or FORCE Note 438755.1 High SQL Version Counts - Script to determine reason(s) Note 377847.1 Unsafe Literals or Peeked Bind Variables   AWR中提供了SQL ordered by Version Count信息方便用户了解该指标  

SQL ordered by Version Count

  • Only Statements with Version Count greater than 20 are displayed
Version CountExecutionsSQL IdSQL ModuleSQL Text
3741nhkkuq1y13vmpython.exeselect * from www.oracledatabase12g.com
3206mvfay19q3v4nSELECT COUNT(CLIENT_INFO) FROM...
300dqbhc9r7gz0a5SELECT DECODE(COUNT(CLIENT_INF...
27242nk2p4h18rbwfMMON_SLAVEselect tablespace_id, rfno, al...
2624a1xgxtssv5rrpMMON_SLAVEselect * from www.askmaclean.com
2445s34t44u10q4gSELECT a.name task_name, nvl(e...
24869k5bhm12sz98SELECT dbin.instance_number, d...
244c8gnrhxma4tasSELECT owner#, property FROM s...
244gdn3ysuyssf82SELECT advisor_id FROM sys.wri...
22423nad9x295gkfSELECT (m.current_size / 10485...
  具体的high version count诊断步骤:  
1 select sql_text, hash_value,address from v$sqlarea where sql_id ='{sql id
from AWR>}'

2 select * from v$sql_shared_cursor where address = <address returned above>

3 SELECT sql_text,version_count,address FROM V$SQLAREA order by version_count desc;

4 From step 3 , take the sql with highest version count and put in below 

SELECT * FROM V$SQL_SHARED_CURSOR WHERE address = 'HERE';

5. 检查 参数 NLS_LENGTH_SEMANTICS  What is the value of NLS_LENGTH_SEMANTICS ?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值