Oracleエラーを解決せよ(ORA-04031)
みなさん、こんにちは。
どうも、さいばーきゃっとです。
さてさて、今回は「なぜOracleサーバを再起動することで、ORA-04031が解決されるのか」について、追及していきたいと思います。
Oracleエラー(ORA-04031)
私はいつも下記のサイトを使用して、Oracleエラーの概要を調べます。
上記のサイトによると、今回のOracleエラー(ORA-04031)の解決法が記載されてました。
共有プールがメモリー不足の場合、大きいパッケージを確保するために、DBMS_SHARED_POOLパッケージを使用するか、共有メモリーの使用量を減らすか、または初期化パラメータSHARED_POOL_RESERVED_SIZEおよびSHARED_POOL_SIZEの値を増やして使用可能な共有メモリー量を増やしてください。ラージ・プールがメモリー不足の場合は、初期化パラメータLARGE_POOL_SIZEの値を大きくしてください。
どうやら、今回のエラーを解決するためには、初期化パラメータを変更しなければならないらしいです。
以前、私は「初期化パラメータ」の記事で、初期化パラメータファイルには、データベースの構成情報が記載されているということを説明しました。実際に、初期化パラメータファイルの構成情報を変更することは、運用上の理由でできないことが多いです。
なぜOracleサーバを再起動することで、ORA-04031が解決されるのか
次に、Oracleサーバを再起動するだけでエラーが解決できる理由に迫ります。
やはり、ここで頼りになるのがGoogle先生!!!
まずは、ググります。
たくさんの検索結果が出てきました。
ここから、「なぜ再起動すると、エラーが解決できるのか」を解説しているサイトを探しましたが、結果的に、ほしい情報は見つかりませんでした。
そこで、状況を整理してみます。
今回発生したエラーは、共有プールが不足しているため発生していますので、「なぜ再起動すると、エラー解決できるのか」のではなく、「なぜ再起動することによって、共有プールの不足が解決されるのか」に重点を置き、再度検索してみます。
ふむふむ・・・
どうやら、Oracleサーバをシャットダウンすることによって、共有プールにあるキャッシュがクリアされるそうです。
なるほど、だから共有プールの不足が解消されたのですね。
長期運用で定期的にシャットダウンできないような 24時間無停止状態で長期間運用を行なっている場合には、 稀に共有プールのメモリ内で著しいメモリの断片化 によりパフォーマンスに影響することがあるらしいです。
長期運用の際は、定期的に共有プールのキャッシュをクリアしたほうがいいですね。
次回は、せっかくなので、今回のキーワードになった「共有プール」について、調べてみようと思います。