暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle Flush Shared Pool

原创 不吃草的牛_Nick 2022-05-16
3650

本质上 ORA-04031 多数是由于 SQL 编写不当引起,所以如果能够修改应用绑定变量是最好的解决之道。当然如果应用不能修改,或者不能强制变量绑定,那么 Oracle 还提供一种应急处理方法,强制刷新共享池。

alter system flush shared_pool;

 

刷新共享池可以帮助合并碎片(small chunks),强制老化 SQL,释放共享池,但是这通常是不推荐的做法,这是因为:

(1)Flush Shared Pool 会导致当前未使用的 cursor 被清除出共享池,如果这些 SQL 随后需执行,那么数据库将经历大量的硬解析,系统将会经历严重的 CPU 争用,数据库将会产生激烈的 Latch 竞争。

(2)如果应用没有使用绑定变量,大量类似 SQL 不停执行,那么 Flush Shared Pool 可能只能带来短暂的改善,数据库很快就会回到原来的状态。

(3)如果 Shared Pool 很大,并且系统非常繁忙,刷新 Shared Pool 可能会导致系统挂起,对于类似系统尽量在系统空闲时进行。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论