awrAnalysis对Dictionary Cache Stats的分析

     awrAnalysis是 云平台 上针对Oracle AWR报告的在线智能分析功能,目前支持分析11203及以上版本的AWR报告,在 墨天轮 18.12.2更新中awrAnalysis增加了对Dictionary Cache Stats数据的分析支持。  

   Dictionary Cache是用来存储对象字典信息的内存区域,包括表/索引/列定义、权限、约束、统计信息、回滚段等信息,以行的方式存储,所以也叫row cache。SQL解析时会频繁访问,所以对Oracle的运行至关重要,如果DC、LC这块出现问题,往往会导致数据库HANG或者宕机。我们对常见DC相关的性能问题和故障进行总结,并结合专家经验在awrAnalysis上增加了对AWR中DCS数据的分析,可以快速发现和定位问题。  

    在AWR中DCS信息容易被忽略,但它往往却是异常的根本原因或直接证据,比如一些row cache、latch、enq、cursor的前台等待事件都是表象,而从DCS能够一眼看出问题所在。AWR中DCS相关的元数据存在dba_hist_rowcache_summary中,来源v$rowcache视图,详细如下: 

SQL> SELECT parameter 
  2       , sum(gets) 
  3       , sum(getmisses) 
  4       , 100*sum(gets - getmisses) / sum(gets)  pct_succ_gets 
  5       , sum(modifications)                     updates 
  6    FROM V$ROWCACHE 
  7   WHERE gets > 0 
  8   GROUP BY parameter; 
PARAMETER              SUM(GETS) SUM(GETMISSES) PCT_SUCC_GETS      UPDATES 
--------------------- ---------- -------------- ------------- ------------ 
dc_constraints               128             48          62.5          128 
sch_lj_oids                 4876            286          94.1            0 
dc_tablespaces          58419996             69         100.0            0 
dc_awr_control             71019              7         100.0        1,743 
dc_object_grants            4517            238          94.7            0 
dc_histogram_data       14038560         243862          98.3      224,080 
dc_rollback_segments     1126847             22         100.0           27 
dc_sequences               19196            877          95.4       19,196 
sch_lj_objs                 1111            212          80.9            0 
dc_segments             79616538         267078          99.7       26,523 
dc_objects            1073748848          71900         100.0       29,657 
dc_histogram_defs       95098649         378281          99.6      112,884 
dc_table_scns               1106           1106            .0            0 
dc_users               804207739           3395         100.0            1 
outstanding_alerts         27791             36          99.9            3 
dc_files                  146329            830          99.4            0 
dc_global_oids             30320            410          98.6            0 
dc_profiles               293544              8         100.0            0 
global database name     2113648              4         100.0            0 
19 rows selected.

AWR中的DCS数据如下: 

http://www.orasql.com/blog//uploadfiles/awr_dc_16814.png

以上数据主要关注请求次数和请求失败占比,常见的异常有以下几种:  
DC_SEQUENCES  
申请获取获取序列缓存:程序批量插入数据频繁获取sequence,而sequence的cache设置过小,尤其是RAC环境。  
DC_TABLESPACES  
申请获取获取表空间缓存:表空间频繁自动扩展,可以考虑直接增加表空间到足够的大小,关闭自动扩展,或者增加表空间每次扩展的大小。  
DC_OBJECTS  
申请获取获取对象缓存:硬解析过高、人为编译对象、失效对象自动编译等。  
DC_SEGMENTS  
申请获取段缓存:批量入库的时候出现。  
DC_USERS  
申请获取获取用户缓存:错误密码频繁连接、11G密码延迟验证BUG、批量用户赋权等。  
DB_ROLLBACK_SEGMENTS  
申请获取回滚段缓存:大事物回滚、大量数据回滚。  
DC_AWR_CONTROL  
申请获取AWR缓存:AWR相关对象数据、SQL异常,AWR策略问题。  
DC_HISTOGRAM_DATA/DC_HISTOGRAM_DEFS  
申请获取直方图缓存:硬解析过高、库中业务表过多使用直方图,可删除无用的直方图信息。  

awrAnalysis Oracle AWR在线智能分析: https://cs.enmotech.com/awrAnalysis  

猜你喜欢

转载自blog.csdn.net/oracle_awen/article/details/85317323