最近、RESULT_CACHE_MAX_SIZEパラメーターの値を変更できないという問題が発生しました。
まず、RESULT_CACHE_MAX_SIZEが何であるかを知る必要があります。
RESULT_CACHE_MAX_SIZEは、結果キャッシュが使用できるsgaメモリの最大サイズの制限パラメータです。
結果キャッシュを使用する必要がある場合、この値は0であってはなりません。そして、次のクエリ結果はENABLEDです。
SQL> SELECT dbms_result_cache.status() FROM dual;
DBMS_RESULT_CACHE.STATUS()
--------------------------------------------------------------------------------
ENABLED
このパラメーターのデフォルト値は、共有プールのサイズによって異なります。共有プールが十分に大きくない場合、結果キャッシュは使用されません。
このとき、次のクエリを実行します。結果はBYPASSになる可能性があります。
SQL> select dbms_result_cache.status from dual;
STATUS
-------------------------------------
BYPASS
また、この状態では、RESULT_CACHE_MAX_SIZEパラメーター値は変更できません。
次の方法を使用して復元できます。
shared_pool_sizeに最小値を指定します。結果キャッシュがメモリスペースを取得できることを確認します。
Alter system set shared_pool_size=nnnM scope=spfile;
次に、次のコマンドを実行して、結果キャッシュを使用可能な状態に復元します。
SQL> BEGIN
DBMS_RESULT_CACHE.BYPASS(TRUE);
DBMS_RESULT_CACHE.FLUSH;
END;
/
2 3 4 5
PL/SQL procedure successfully completed.
次に、データベースを再起動します。結果キャッシュを使用できず、RESULT_CACHE_MAX_SIZEパラメータ値を変更できないという問題を解決できます。