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–

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值