一、背景概述
XX客户生产数据库2021年1月22日上午排查故障,客户提供高峰期卡顿时间发生在月结。由于报告保存时间为7天,无法查找到月初的报告,通过增加业务模拟环境,经过仔细诊断,发现业务产生时间段操作系统整体资源使用率较低,数据库latch争用较为严重。
二、问题分析
Latch Activity(门闩活动)
Latch Miss Sources(latch丢失源)
此时可知latch free等待主要在result cache上消耗较为严重
Tips:
Oracle 11G之前的版本数据读写操作,都是将数据块(Data Block)缓存到Buffer Cache中。每次SQL语句执行,都是从Buffer Cache中检索数据块从而发生逻辑读。
在Oracle 11g中,推出了Result Cache这种新特性用于缓存结果集,Result Cache的原理是将SQL结果集直接进行保存,每次SQL语句来了,就直接把结果集合返回,减少了逻辑读。
result_cache_max_size:result cache是SGA share pool的一部分,由参数result_cache_max_size控制其大小,默认memory_target的0.25%或者sga_target的0.5%,但最大不能超过share pool的75%。
alter system set “_optimizer_ads_use_result_cache” = FALSE;
或
alter system set result_cache_max_size=0 scope=both;
另:
加大result_cache_max_size(消耗内存资源)
三、检验
重新跑业务,拉取awr报告查看,业务正常