使用Flush Shared Pool缓解共享池问题:

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

alter system flush shared_pool;

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

·Flush Shared Pool会导致当前未使用的cursor被清除出共享池,如果这些SQL随后需要执行,那么数据库将经历大量的硬解析,
... ...
<阅读全文>