oracle手工刷新sql缓存

问题描述

oracle数据库的sql统计脚本执行时间突然变慢。

问题分析

上述问题发生时,伴随如下现象:
1、现有oracle库主要用于统计分析用,很多查询时基于月的统计计算,偶尔也有基于年的统计计算要求;
2、每次有新需求写完sql后,如果运行时间不理想,主要是通过新增索引的方式解决;
3、有一个奇怪的现象,有些sql脚本已经做过优化,且优化后的执行时间在10分钟以内,但是过1-2个月后,脚本的执行时间突然增加到2-3个小时以上,甚至更多;
4、再次分析脚本,发现已建的索引根本没有使用,反而使用的是全表扫描,上千万的数据这么扫下去肯定很耗时;
5、每次遇到这个问题的时候,只要重启oracle数据库,执行时间又能够回到正常的执行时间(约10分钟),但是这并不是一个稳妥的办法,而且每次重启oracle可能导致未知的应用逻辑错误;

解决办法

怀疑是oracle的sql执行计划缓存机制,导致的执行时间异常,所以本月再次出现类似问题时,手工执行以下脚本手工刷新缓存:

 alter system flush buffer_cache ;

再次重新执行脚本,执行时间又变成预期的执行了。

后记

遇事多总结,多学习,总有一天,bug会)的,哈哈。
–END–

发布了230 篇原创文章 · 获赞 29 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/huryer/article/details/102391139
今日推荐