153 DBMS_RESULT_CACHE
DBMS_RESULT_CACHE
パッケージでは、DBAが、SQL結果キャッシュおよびPL/SQLファンクション結果キャッシュによって使用される共有プールのその部分を管理できるインタフェースが提供されます。
これらのキャッシュは同じインフラストラクチャを使用します。このため、たとえば、DBMS_RESULT_CACHE
.BYPASS
では、両方のキャッシュに対してバイパスまたは使用が設定され、DBMS_RESULT_CACHE
.FLUSH
では、SQL文の問合せおよびPL/SQLファンクションの両方について、キャッシュされた結果がすべてフラッシュされます。
この章のトピックは、次のとおりです:
参照:
-
結果キャッシュの概念の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』,を参照してください。
-
PL/SQLファンクションの結果キャッシュのPL/SQLファンクションの結果キャッシュを使用する方法の詳細は、Oracle Database PL/SQL言語リファレンスを参照してください
-
結果キャッシュ管理の詳細は、Oracle Database PL/SQL言語リファレンスを参照してください。
153.2 DBMS_RESULT_CACHEの定数
DBMS_RESULT_CACHE
パッケージは、パラメータ値の指定に使用するいくつかの定数を定義します。
次の表に、これらの定数を示します。
表153-1 DBMS_RESULT_CACHEの定数
定数 | 定義 | 説明 |
---|---|---|
|
|
キャッシュは一時的に利用できませんでした。 |
|
|
結果キャッシュは使用不可の状態です。 |
|
|
キャッシュは使用できません。 |
|
|
キャッシュは使用できます。 |
|
|
キャッシュは使用できますが、Oracle RACノードと同期化されます。 |
153.3 DBMS_RESULT_CACHEサブプログラムの要約
この表は、DBMS_RESULT_CACHE
サブプログラムを示し、簡単に説明しています。
表153-2 DBMS_RESULT_CACHEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ブロック・リストに記載された、ローカル・インスタンスのすべてのキャッシュIDを戻します。 |
|
ブロック・リストに |
|
ブロック・リストからすべてのcache_idを削除します。 |
|
該当する |
|
結果キャッシュのバイパス・モードを設定します。 |
|
結果キャッシュからすべてのオブジェクトを削除しようとします。引数に応じて、メモリーを保持または解放し、統計を保持またはクリアします。 |
|
このテーブル・ファンクションは、無視リストに追加されている各エントリの行を戻します。 |
|
このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を無視リストに追加します。 |
|
このプロシージャは、無視リスト全体を削除します。 |
|
このプロシージャは、オブジェクト番号によって、または所有者と表名によって指定された表を削除します。 |
|
指定した依存オブジェクトに依存するすべての結果セットのオブジェクトを無効化します。 |
|
指定した結果セットのオブジェクトを無効化します。 |
|
結果キャッシュのメモリー使用量のレポートを作成します。 |
|
現在ブロック・リストにあるすべてのオブジェクト番号を戻します |
|
オブジェクト・ブロック・リストにオブジェクトを追加します |
|
ブロック・リスト全体をクリアします |
|
オブジェクト・ブロック・リストからオブジェクトを削除します。 |
|
結果キャッシュのステータスをチェックします。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
使用上のノート
この操作は、データベース・インスタンス固有です。
例
この操作は、実行中のシステムでPL/SQLコードにホット・パッチを適用する必要がある場合に使用できます。結果がキャッシュされたファンクションが直接または推移的に依存しているPL/SQLモジュールにコード・パッチが適用された場合、結果キャッシュのファンクションに関連付けられているキャッシュされた結果は自動的にはフラッシュされません(インスタンスが再開またはバウンスしない場合)。フラッシュは手動で行う必要があります。
パッチ・プロセスを正常に行うには、次のステップを実行します。
-
結果キャッシュをバイパス・モードに設定し、既存の結果をフラッシュします。
BEGIN DBMS_RESULT_CACHE.BYPASS(TRUE); DBMS_RESULT_CACHE.FLUSH; END; /
Oracle Real Application Clusters環境では、インスタンスごとにこのステップを実行する必要があります。
-
PL/SQLコード・パッチを適用します。
-
キャッシュのバイパス・モードを無効にして、結果キャッシュの使用を再開します。
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ファンクションおよびプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
戻り値
すべてのオブジェクトの削除が成功した場合は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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
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ファンクションおよびプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマ名。 |
|
オブジェクト名 |
|
ディクショナリのオブジェクト番号 |
戻り値
無効化されているオブジェクトの名前。
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ファンクションおよびプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
結果キャッシュ内のキャッシュ・オブジェクトのアドレス。 |
|
SQLカーソルまたはPL/SQLファンクションの結果キャッシュ識別子。 |
戻り値
無効化されているオブジェクトの名前。
153.3.13 MEMORY_REPORTプロシージャ
このプロシージャは、結果キャッシュのメモリー使用量のレポートを作成します。
構文
DBMS_RESULT_CACHE.MEMORY_REPORT ( detailed IN BOOLEAN DEFAULT FALSE);
パラメータ
表153-9 MEMORY_REPORTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
使用上のノート
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
153.3.21 BLOCK_LIST_CLEARプロシージャ
このプロシージャは、ブロック・リストからすべてのcache_idを削除します。
構文
DBMS_RESULT_CACHE.BLOCK_LIST_CLEAR ( global IN BOOLEAN DEFAULT FALSE);
パラメータ
表153-11 BLOCK_LIST_CLEARプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
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 |
表の名前。 |