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数据如下:
以上数据主要关注请求次数和请求失败占比,常见的异常有以下几种:
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