過去に私が関わったシステムで共有プールの割当失敗(ORA-4031)が発生したことがあります。原因は共有プールの断片化でした。このときデータベースサーバは3カ月程度、起動し続けており共有プールの断片化が進んでいました。
その場の対処としてはサーバを強制終了させ、再起動させました。可能であれば
alter system flush shared_pool;
を実行して共有プールの解放を行ってください。※通常、共有プールの解放はオンライン中に実行することは推奨されていません。この件から定期的に再起動する意味を感じました。
最後に
最後までお読みいただきありがとうございます。
SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。