153 DBMS_RESULT_CACHE

DBMS_RESULT_CACHEパッケージでは、DBAが、SQL結果キャッシュおよびPL/SQLファンクション結果キャッシュによって使用される共有プールのその部分を管理できるインタフェースが提供されます。

これらのキャッシュは同じインフラストラクチャを使用します。このため、たとえば、DBMS_RESULT_CACHE.BYPASSでは、両方のキャッシュに対してバイパスまたは使用が設定され、DBMS_RESULT_CACHE.FLUSHでは、SQL文の問合せおよびPL/SQLファンクションの両方について、キャッシュされた結果がすべてフラッシュされます。

この章のトピックは、次のとおりです:

参照:

153.1 DBMS_RESULT_CACHEのセキュリティ・モデル

このパッケージに対するEXECUTE権限は、データベース管理者のみに付与される必要があります。

153.2 DBMS_RESULT_CACHEの定数

DBMS_RESULT_CACHEパッケージは、パラメータ値の指定に使用するいくつかの定数を定義します。

次の表に、これらの定数を示します。

表153-1 DBMS_RESULT_CACHEの定数

定数 定義 説明

STATUS_BYPS

CONSTANT VARCHAR2(10) := 'BYPASS';

キャッシュは一時的に利用できませんでした。

STATUS_CORR

CONSTANT VARCHAR2(10) := 'CORRUPT';

結果キャッシュは使用不可の状態です。

STATUS_DISA

CONSTANT VARCHAR2(10) := 'DISABLED';

キャッシュは使用できません。

STATUS_ENAB

CONSTANT VARCHAR2(10) := 'ENABLED';

キャッシュは使用できます。

STATUS_SYNC

CONSTANT VARCHAR2(10) := 'SYNC';

キャッシュは使用できますが、Oracle RACノードと同期化されます。

153.3 DBMS_RESULT_CACHEサブプログラムの要約

この表は、DBMS_RESULT_CACHEサブプログラムを示し、簡単に説明しています。

表153-2 DBMS_RESULT_CACHEパッケージのサブプログラム

サブプログラム 説明

BLOCK_LISTファンクション

ブロック・リストに記載された、ローカル・インスタンスのすべてのキャッシュIDを戻します。

BLOCK_LIST_ADDプロシージャ

ブロック・リストにcache_idを追加します。

BLOCK_LIST_CLEARプロシージャ

ブロック・リストからすべてのcache_idを削除します。

BLOCK_LIST_REMOVEプロシージャ

該当するcache_idをブロック・リストから削除します。

BYPASSプロシージャ

結果キャッシュのバイパス・モードを設定します。

FLUSHファンクションおよびプロシージャ

結果キャッシュからすべてのオブジェクトを削除しようとします。引数に応じて、メモリーを保持または解放し、統計を保持またはクリアします。

IGNORE_LISTファンクション

このテーブル・ファンクションは、無視リストに追加されている各エントリの行を戻します。

IGNORE_LIST_ADDプロシージャ

このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を無視リストに追加します。

IGNORE_LIST_CLEARプロシージャ

このプロシージャは、無視リスト全体を削除します。

IGNORE_LIST_REMOVEプロシージャ

このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を削除します。

INVALIDATEファンクションおよびプロシージャ

指定した依存オブジェクトに依存するすべての結果セットのオブジェクトを無効化します。

INVALIDATE_OBJECTファンクションおよびプロシージャ

指定した結果セットのオブジェクトを無効化します。

MEMORY_REPORTプロシージャ

結果キャッシュのメモリー使用量のレポートを作成します。

OBJECT_BLOCK_LISTファンクション

現在ブロック・リストにあるすべてのオブジェクト番号を戻します

OBJECT_BLOCK_LIST_ADDプロシージャ

オブジェクト・ブロック・リストにオブジェクトを追加します

OBJECT_BLOCK_LIST_CLEARプロシージャ

ブロック・リスト全体をクリアします

OBJECT_BLOCK_LIST_REMOVEプロシージャ

オブジェクト・ブロック・リストからオブジェクトを削除します。

STATUSファンクション

結果キャッシュのステータスをチェックします。

153.3.1 BLACK_LISTファンクション

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにBLOCK_LISTファンクションを使用してください。

153.3.2 BLACK_LIST_ADDプロシージャ

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにBLOCK_LIST_ADDプロシージャを使用してください。

153.3.3 BLACK_LIST_CLEARプロシージャ

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにBLOCK_LIST_CLEARプロシージャを使用してください。

153.3.4 BLACK_LIST_REMOVEプロシージャ

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにBLOCK_LIST_REMOVEプロシージャを使用してください。

153.3.5 BYPASSプロシージャ

このプロシージャは、結果キャッシュのバイパス・モードを設定します。

次のいずれかのバイパス・モードを設定します。

  • バイパス・モードをオンにすると、キャッシュされた結果は使用されなくなり、新しい結果はキャッシュに保存されません。

  • バイパス・モードをオフにすると、キャッシュは通常の操作を再開します。

構文

DBMS_RESULT_CACHE.BYPASS (
   bypass_mode    IN   BOOLEAN,
   session        IN   BOOLEAN);

パラメータ

表153-3 BYPASSプロシージャのパラメータ

パラメータ 説明

bypass_mode

  • TRUE =>結果キャッシュの使用がバイパスされます。

  • FALSE =>結果キャッシュの使用がオンになります。

session

  • TRUE =>現在のセッションに適用されます。

  • FALSE (デフォルト) =>すべてのセッションに適用されます。

使用上のノート

この操作は、データベース・インスタンス固有です。

この操作は、実行中のシステムでPL/SQLコードにホット・パッチを適用する必要がある場合に使用できます。結果がキャッシュされたファンクションが直接または推移的に依存しているPL/SQLモジュールにコード・パッチが適用された場合、結果キャッシュのファンクションに関連付けられているキャッシュされた結果は自動的にはフラッシュされません(インスタンスが再開またはバウンスしない場合)。フラッシュは手動で行う必要があります。

パッチ・プロセスを正常に行うには、次のステップを実行します。

  1. 結果キャッシュをバイパス・モードに設定し、既存の結果をフラッシュします。

    BEGIN
       DBMS_RESULT_CACHE.BYPASS(TRUE);
       DBMS_RESULT_CACHE.FLUSH;
    END;
    /
    

    Oracle Real Application Clusters環境では、インスタンスごとにこのステップを実行する必要があります。

  2. PL/SQLコード・パッチを適用します。

  3. キャッシュのバイパス・モードを無効にして、結果キャッシュの使用を再開します。

    BEGIN
       DBMS_RESULT_CACHE.BYPASS(FALSE);
    END;
    /
    

    Oracle Real Application Clusters環境では、インスタンスごとにこのステップを実行する必要があります。

153.3.6 FLUSHファンクションおよびプロシージャ

このファンクションおよびプロシージャは、結果キャッシュからすべてのオブジェクトを削除しようとします。引数に応じて、メモリーを保持または解放し、統計を保持またはクリアします。

構文

DBMS_RESULT_CACHE.FLUSH (
   retainMem  IN  BOOLEAN DEFAULT FALSE,
   retainSta  IN  BOOLEAN DEFAULT FALSE) 
  RETURN BOOLEAN;
DBMS_RESULT_CACHE.FLUSH (
   retainMem  IN  BOOLEAN DEFAULT FALSE,
   retainSta  IN  BOOLEAN DEFAULT FALSE); 

パラメータ

表153-4 FLUSHファンクションおよびプロシージャのパラメータ

パラメータ 説明

retainMem

  • TRUE =>キャッシュの空きメモリーを保持します。

  • FALSE(デフォルト)=>システムに対して空きメモリーを解放します。

retainSta

  • TRUE =>既存のキャッシュ統計を保持します。

  • FALSE(デフォルト)=>既存のキャッシュ統計をクリアします。

戻り値

すべてのオブジェクトの削除が成功した場合はTRUE

153.3.7 IGNORE_LISTファンクション

このテーブル・ファンクションは、無視リストに追加されている各エントリの行を戻します。

無視リスト内のオブジェクトは、自動ブロック・リスト登録の対象になりません。これにより、ユーザーが自動ブロック・リスト登録の処理をオーバーライドできます。

構文

type ign_recT is record( objNo NUMBER);
type ign_tabT is table of ign_recT;
DBMS_RESULT_CACHE.IGNORE_LIST ()
   RETURN ign_tabT pipelined;

153.3.8 IGNORE_LIST_ADDプロシージャ

このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を無視リストに追加します。

無視リスト内のオブジェクトは、自動ブロック・リスト登録の対象になりません。これにより、ユーザーが自動ブロック・リスト登録の処理をオーバーライドできます。

構文

DBMS_RESULT_CACHE.IGNORE_LIST_ADD (
   objNo   IN  NATURALN);

構文

DBMS_RESULT_CACHE.IGNORE_LIST_ADD (
   owner   IN  VARCHAR2,
   name    IN  VARCHAR2);

パラメータ

表153-5 IGNORE_LIST_ADDプロシージャのパラメータ

パラメータ 説明

objNo

objNoが無視リストに追加されます。

name

ownernameで指定された表が、無視リストに追加されます。

owner

ownernameで指定された表が、無視リストに追加されます。

153.3.9 IGNORE_LIST_CLEARプロシージャ

このプロシージャは、無視リスト全体を削除します。

無視リスト内のオブジェクトは、自動ブロック・リスト登録の対象になりません。これにより、ユーザーが自動ブロック・リスト登録の処理をオーバーライドできます。

構文

DBMS_RESULT_CACHE.IGNORE_LIST_CLEAR;

153.3.10 IGNORE_LIST_REMOVEプロシージャ

このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を削除します。

構文

DBMS_RESULT_CACHE.IGNORE_LIST_REMOVE (
   objNo   IN  NATURALN);

構文

DBMS_RESULT_CACHE.IGNORE_LIST_REMOVE (
   owner   IN  VARCHAR2,
   name    IN  VARCHAR2);

パラメータ

表153-6 IGNORE_LIST_REMOVEプロシージャのパラメータ

パラメータ 説明

objNo

objNoが無視リストから削除されます。

name

ownernameで指定された表が、無視リストから削除されます。

owner

ownernameで指定された表が、無視リストから削除されます。

153.3.11 INVALIDATEファンクションおよびプロシージャ

このファンクションおよびプロシージャは、指定した依存オブジェクトに依存するすべての結果セットのオブジェクトを無効化します。

構文

DBMS_RESULT_CACHE.INVALIDATE (
   owner        IN  VARCHAR2, 
   name         IN  VARCHAR2) 
 RETURN NUMBER;
DBMS_RESULT_CACHE.INVALIDATE (
   owner       IN  VARCHAR2, 
   name        IN  VARCHAR2);
DBMS_RESULT_CACHE.INVALIDATE (
  object_id    IN BINARY_INTEGER) 
 RETURN NUMBER;
DBMS_RESULT_CACHE.INVALIDATE (
   object_id    IN BINARY_INTEGER);

パラメータ

表153-7 INVALIDATEファンクションおよびプロシージャのパラメータ

パラメータ 説明

owner

スキーマ名。

name

オブジェクト名

object_id

ディクショナリのオブジェクト番号

戻り値

無効化されているオブジェクトの名前。

153.3.12 INVALIDATE_OBJECTファンクションおよびプロシージャ

このファンクションおよびプロシージャは、指定した結果セットのオブジェクトを無効化します。

構文

DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
   id          IN  BINARY_INTEGER) 
 RETURN NUMBER;
DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
   id          IN  BINARY_INTEGER);
DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
  cache_id     IN  VARCHAR2) 
 RETURN NUMBER;
DBMS_RESULT_CACHE.INVALIDATE_OBJECT (
   cache_id   IN  VARCHAR2);

パラメータ

表153-8 INVALIDATE_OBJECTファンクションおよびプロシージャのパラメータ

パラメータ 説明

id

結果キャッシュ内のキャッシュ・オブジェクトのアドレス。

cache_id

SQLカーソルまたはPL/SQLファンクションの結果キャッシュ識別子。

戻り値

無効化されているオブジェクトの名前。

153.3.13 MEMORY_REPORTプロシージャ

このプロシージャは、結果キャッシュのメモリー使用量のレポートを作成します。

構文

DBMS_RESULT_CACHE.MEMORY_REPORT (
   detailed   IN   BOOLEAN DEFAULT FALSE);

パラメータ

表153-9 MEMORY_REPORTプロシージャのパラメータ

パラメータ 説明

detailed

  • TRUE =>より詳細なレポートを作成します。

  • FALSE(デフォルト)=>標準的なレポートを作成します。

使用上のノート

SQL*Plusからこのプロシージャを起動するには、SERVEROUTPUTがオンになっている必要があります。

SET SERVEROUTPUT ON

EXECUTE DBMS_RESULT_CACHE.MEMORY_REPORT;

153.3.14 OBJECT_BLACK_LISTファンクション

このファンクションは、Oracle Database 23cで非推奨となりました。かわりにOBJECT_BLOCK_LISTファンクションを使用してください。

153.3.15 OBJECT_BLACK_LIST_ADDプロシージャ

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにOBJECT_BLOCK_LIST_ADDプロシージャを使用してください。

153.3.16 OBJECT_BLACK_LIST_CLEARプロシージャ

このプロシージャは、Oracle Database 23cで非推奨となりました。かわりにOBJECT_BLOCK_LIST_CLEARプロシージャを使用してください。

153.3.17 OBJECT_BLACK_LIST_REMOVEプロシージャ

このプロシージャは、Oracle Database 23cで削除されました。かわりにOBJECT_BLOCK_LIST_REMOVEプロシージャを使用してください。

153.3.18 STATUSファンクション

このファンクションは、結果キャッシュのステータスをチェックします。

構文

DBMS_RESULT_CACHE.STATUS
   RETURN VARCHAR2;

ノート:

定数の詳細は、DBMS_RESULT_CACHEの定数を参照してください。

153.3.19 BLOCK_LISTファンクション

このテーブル・ファンクションは、ブロック・リストに記載された、ローカル・インスタンスのすべてのキャッシュIDを戻します。

構文

DBMS_RESULT_CACHE.BLOCK_LIST
   RETURN BL_TABT;

153.3.20 BLOCK_LIST_ADDプロシージャ

このプロシージャは、ブロック・リストにcache_idを追加します。

構文

DBMS_RESULT_CACHE.BLOCK_LIST_ADD (
   cache_id   IN  VARCHAR2,
   global     IN  BOOLEAN DEFAULT FALSE);

パラメータ

表153-10 BLOCK_LIST_ADDプロシージャのパラメータ

パラメータ 説明

cache_id

cache_idがブロック・リストに追加されます。

global

TRUE — RACクラスタのすべてのキャッシュに適用されます。

FALSE (デフォルト) — ローカル・インスタンスのキャッシュのみに適用されます。

153.3.21 BLOCK_LIST_CLEARプロシージャ

このプロシージャは、ブロック・リストからすべてのcache_idを削除します。

構文

DBMS_RESULT_CACHE.BLOCK_LIST_CLEAR (
   global   IN  BOOLEAN DEFAULT FALSE);

パラメータ

表153-11 BLOCK_LIST_CLEARプロシージャのパラメータ

パラメータ 説明

global

TRUE — RACクラスタのすべてのキャッシュに適用されます。

FALSE (デフォルト) — ローカル・インスタンスのキャッシュのみに適用されます。

153.3.22 BLOCK_LIST_REMOVEプロシージャ

このプロシージャは、該当するcache_idをブロック・リストから削除します。

構文

DBMS_RESULT_CACHE.BLOCK_LIST_REMOVE (
   cache_id   IN  VARCHAR2,
   global     IN  BOOLEAN DEFAULT FALSE); 

パラメータ

表153-12 BLOCK_LIST_REMOVEプロシージャのパラメータ

パラメータ 説明

cache_id

cache_idがブロック・リストから削除されます。

global

TRUE — RACクラスタのすべてのキャッシュに適用されます。

FALSE (デフォルト) — ローカル・インスタンスのキャッシュのみに適用されます。

153.3.23 OBJECT_BLOCK_LISTファンクション

このテーブル・ファンクションは、現在ブロック・リストにあるすべてのオブジェクト番号を戻します。

構文

DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST ()
   RETURN NATURALN;

153.3.24 OBJECT_BLOCK_LIST_ADDプロシージャ

このプロシージャは、オブジェクト・ブロック・リストにオブジェクトを追加します。これらのプロシージャは、すべての場所に一度に影響を及ぼすため、クラスタ内で実行する必要があるのは1回のみとなります。ただし、クラスタの停止と起動をまたいで持続することはありません。

構文

DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST_ADD (
   objNo       IN  BINARY_INTEGER); 
DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST_ADD (
   owner       IN  VARCHAR2,
   name        IN  VARCHAR2); 

パラメータ

表153-13 OBJECT_BLOCK_LIST_ADDプロシージャのパラメータ

パラメータ 説明
objNo オブジェクト番号。
owner オブジェクトの所有者。
name 表の名前。

153.3.25 OBJECT_BLOCK_LIST_CLEARプロシージャ

このプロシージャは、ブロック・リスト全体をクリアします。

構文

DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST_CLEAR ();

153.3.26 OBJECT_BLOCK_LIST_REMOVEプロシージャ

このプロシージャは、オブジェクト・ブロック・リストからオブジェクトを削除します。

構文

DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST_REMOVE (
   objNo       IN  BINARY_INTEGER); 
DBMS_RESULT_CACHE.OBJECT_BLOCK_LIST_REMOVE (
   owner       IN  VARCHAR2,
   name        IN  VARCHAR2); 

パラメータ

表153-14 OBJECT_BLOCK_LIST_REMOVEプロシージャのパラメータ

パラメータ 説明
objNo オブジェクト番号。
owner オブジェクトの所有者。
name 表の名前。