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视图,详细如下:
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