機械翻訳について

45 DBMS_CACHEUTIL

DBMS_CACHEUTILパッケージは、Oracle Real Application Clusters (Oracle RAC)環境内でオブジェクト・レベルのキャッシュ・フュージョン・ロック・ポリシーを制御し、Oracle True CacheのKEEPバッファ・プールへの割当てを管理するためのインタフェースを提供します。

45.1 DBMS_CACHEUTILの概要

DBMS_CACHEUTILは、Oracle Real Application Clusters (Oracle RAC)とOracle True Cacheに関連する一連のプロシージャを提供します。

DBMS_CACHEUTILを使用して、次を実行できます:

  • Oracle RAC環境内で、オブジェクトのアフィニティ、read-mostly、オブジェクトのダウンコンバートなど、オブジェクト・レベルのキャッシュ・フュージョン・ロック・ポリシーを制御します。

    たとえば、特定の構成またはワークロードに対してオブジェクト・レベルでキャッシュ・フュージョン・ロック・ポリシーを微調整できます。 これにより、Oracle RAC環境内でロックのオーバーヘッドが減少して、パフォーマンスが向上する可能性があります。

    • アフィニティは、インスタンスに対してオブジェクトの排他ロックを暗黙的に指定するため、このインスタンス上のオブジェクトに対する読取りアクセスと更新の最適化が向上します。 ただし、その他のインスタンス上のオブジェクトに対する更新の最適化は低下します。
    • Read-mostlyは、クラスタ内のオブジェクトに対する暗黙的な共有ロックを指定するため、オブジェクトへの読取りアクセスの最適化が向上します。 ただし、更新については、どのインスタンス上のオブジェクトに対しても最適化が低下します。
    • ダウンコンバートは、Oracle RAC環境のすべてのインスタンスに対して、インスタンス上のオブジェクトの排他ロックを共有モードに変換します。

    ノート:

    オブジェクトのアフィニティとread-mostlyのロック最適化はプライマリRACデータベースに対してのみ機能し、Oracle Active Data Guardでは機能しません。
  • Oracle True CacheインスタンスのKEEPバッファ・キャッシュへのオブジェクト割当てを管理します。 True Cacheは、Oracle Databaseのためのインメモリーで一貫性が保たれた自動的に管理されるSQLとキー値(オブジェクトまたはJSON)のキャッシュです。

このパッケージ内のプロシージャは、表、索引、LOB、パーティション(パーティション・オブジェクトの場合)およびサブパーティション(コンポジット・パーティション・オブジェクトの場合)に適用できます。

パーティション化されていないオブジェクトの場合、入力(schemaobjは、DBA_OBJECTSOWNEROBJECT_NAMEに対応していて、セグメントを一意に定義する必要があります。 これは、たとえばDBA_OBJECTSに有効なDATA_OBJECT_IDが含まれている必要があるということです。

パーティション・オブジェクトまたはコンポジット・パーティション・オブジェクトの場合、入力(schemaobjおよびpartition)は、DBA_OBJECTSOWNEROBJECT_NAMEおよびSUBOBJECT_NAMEに対応していて、セグメントを一意に定義する必要があります。 これは、DBA_OBJECTSに有効なDATA_OBJECT_IDが含まれている必要があるということです。

依存されている索引を除いて、このプロシージャは、LOBやパーティション、サブパーティションのセグメントなどの依存オブジェクトのセグメントには適用されません。 必要に応じて、セグメントに対して明示的にコールする必要があります。

45.2 DBMS_CACHEUTILのセキュリティ・モデル

このセキュリティ・モデルは、DBMS_CACHEUTILパッケージを使用するために必要な権限を示します。

このパッケージには次を使用します:

CREATE OR REPLACE PUBLIC SYNONYM dbms_cacheutil FOR sys.dbms_cacheutil
GRANT EXECUTE ON dbms_cacheutil TO dba

45.3 DBMS_CACHEUTILのサブプログラムの要約

次の表に、このパッケージのサブプログラムをアルファベット順に示します。

表45-1 DBMS_CACHEUTILパッケージのサブプログラム

サブプログラム 説明
DISSOLVE_AFFINITYプロシージャ このプロシージャは、Oracle RAC環境内でノードからオブジェクトのアフィニティを解除します。
DISSOLVE_READMOSTLYプロシージャ このプロシージャは、Oracle RAC環境内でオブジェクトのread-mostly設定を解除します。
GRAB_AFFINITYプロシージャ このプロシージャは、Oracle RAC環境内でオブジェクトのアフィニティをノードに設定します。
GRAB_READMOSTLYプロシージャ このプロシージャは、Oracle RAC環境内でオブジェクトのread-mostly設定を取得します。
LIST_READMOSTLYプロシージャ このプロシージャは、Oracle RAC環境内でread-mostlyプロパティが設定されているオブジェクトをリストします。
OBJECT_DOWNCONVERTプロシージャ このプロシージャは、Oracle RAC環境のすべてのインスタンスに対して、インスタンス上のオブジェクトの排他ロックを共有モードにダウンコンバートします。
TRUE_CACHE_KEEPプロシージャ このプロシージャをTrue Cacheインスタンスに対してコールすると、そのインスタンスのKEEPバッファ・プールにオブジェクトが割り当てられます。
TRUE_CACHE_UNKEEPプロシージャ True CacheインスタンスのオブジェクトがKEEPバッファ・プールに存在している必要がなくなった場合は、このプロシージャを使用してオブジェクトのKEEP割当てを削除します。

45.3.1 DISSOLVE_AFFINITYプロシージャ

DISSOLVE_AFFINITYは、Oracle RAC環境内でノードからオブジェクトのアフィニティを解除します。

構文

DBMS_CACHEUTIL.DISSOLVE_AFFINITY(
   schema             IN VARCHAR2,
   obj                IN VARCHAR2,
   partition          IN VARCHAR2 := NULL,
   dissolve_index     IN BOOLEAN := TRUE,
   active_drm         IN BOOLEAN := FALSE);

パラメータ

表45-2 DISSOLVE_AFFINITYプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。
dissolve_index 依存索引に対するアフィニティを解除するには、TRUEを使用します。
active_drm 内部使用のみに対応しています。 使用しないでください。

45.3.2 DISSOLVE_READMOSTLYプロシージャ

DISSOLVE_READMOSTLYは、Oracle RAC環境でオブジェクトのread-mostly設定を解除します。

構文

DBMS_CACHEUTIL.DISSOLVE_READMOSTLY(
   schema             IN VARCHAR2,
   obj                IN VARCHAR2,
   partition          IN VARCHAR2 := NULL,
   dissolve_index     IN BOOLEAN := TRUE);

パラメータ

表45-3 DISSOLVE_READMOSTLYプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。
dissolve_index 依存索引に対するread-mostlyを解除するには、TRUEを使用します。

45.3.3 GRAB_AFFINITYプロシージャ

GRAB_AFFINITYは、Oracle RAC環境内でオブジェクトのアフィニティをノードに設定します。

これは、特定のワークロードで、あるオブジェクトが1つの特定のOracle RACノードから頻繁にアクセスされることがわかっている場合に役立ちます。 そのノードへのオブジェクトのアフィニティを取得すると、ロックのオーバーヘッドが減少して、パフォーマンスが向上する可能性があります。

ノート:

このプロシージャが取得するアフィニティは、アフィニティを保持することが最適ではないと自動オブジェクト・アフィニティ・ポリシーが判断した場合、そのポリシーによって変更される可能性があります。 V$GCSPFMASTER_INFOビューのCURRENT_MASTER列に、特定のオブジェクト・セグメントの現在のアフィニティが示されます。

ノート:

オブジェクトのアフィニティ・ロック最適化は、プライマリRACデータベースに対してのみ機能し、Oracle Active Data Guardでは機能しません。

構文

DBMS_CACHEUTIL.GRAB_AFFINITY(
   schema             IN VARCHAR2,
   obj                IN VARCHAR2,
   partition          IN VARCHAR2 := NULL,
   grab_index         IN BOOLEAN := TRUE,
   active_drm         IN BOOLEAN := FALSE);

パラメータ

表45-4 GRAB_AFFINITYプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。
grab_index 依存索引に対するアフィニティを取得するには、TRUEを使用します。
active_drm 内部使用のみに対応しています。 使用しないでください。

45.3.4 GRAB_READMOSTLYプロシージャ

GRAB_READMOSTLYは、Oracle RAC環境内でオブジェクトをread-mostlyに設定します。

これは、特定のワークロードについて、オブジェクトへのほとんどのアクセスがINSERTUPDATEではなくREADであることがわかっている場合に役立ちます。 オブジェクトに対するread-mostlyを取得すると、ロックのオーバーヘッドが減少して、パフォーマンスが向上する可能性があります。

ノート:

このプロシージャが取得するread-mostlyは、read-mostlyの設定を保持することが最適ではないと自動read-mostlyポリシーが判断した場合、そのポリシーによって変更される可能性があります。 read-mostlyプロパティは、インスタンスの存続期間にわたって保持されます。 このパッケージに含まれるLIST_READMOSTLYプロシージャは、read-mostlyが設定されたオブジェクト・セグメントの現在のセットをリストするために使用できます。

ノート:

Read-mostlyロック最適化は、プライマリRACデータベースに対してのみ機能し、Oracle Active Data Guardでは機能しません。

構文

DBMS_CACHEUTIL.GRAB_READMOSTLY(
   schema             IN VARCHAR2,
   obj                IN VARCHAR2,
   partition          IN VARCHAR2 := NULL,
   grab_index         IN BOOLEAN := TRUE);

パラメータ

表45-5 GRAB_READMOSTLYプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。
grab_index 依存索引に対するread-mostlyを取得するには、TRUEを使用します。

45.3.5 LIST_READMOSTLYプロシージャ

このプロシージャは、Oracle RAC環境内でread-mostlyプロパティが設定されているオブジェクトをリストします。

構文

DBMS_CACHEUTIL.LIST_READMOSTLY;

45.3.6 OBJECT_DOWNCONVERTプロシージャ

OBJECT_DOWNCONVERTは、Oracle RAC環境のすべてのインスタンスについて、インスタンス上のオブジェクトの排他ロックを共有モードにダウンコンバートします。

これは、特定のオブジェクトがOracle RACノードによってバッファ・キャッシュを通じてロードされ、このノードがこのオブジェクトに対する多数の排他ロックを保持していることで余分なロックのオーバーヘッドが発生している場合に役立ちます。 このオブジェクトのロックをRACノード上の共有ロックにダウンコンバートすると、ロックのオーバーヘッドが減少して、パフォーマンスが向上する可能性があります。

構文

DBMS_CACHEUTIL.OBJECT_DOWNCONVERT(
   schema                 IN VARCHAR2,
   obj                    IN VARCHAR2,
   partition              IN VARCHAR2 := NULL,
   downconvert_index      IN BOOLEAN := TRUE);

パラメータ

表45-6 OBJECT_DOWNCONVERTプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。
downconvert_index 依存索引をダウンコンバートするには、TRUEを使用します。

45.3.7 TRUE_CACHE_KEEPプロシージャ

このプロシージャをTrue Cacheに対してコールすると、そのキャッシュのKEEPバッファ・プールにオブジェクトが割り当てられます。

このプロシージャを使用するには、True CacheでDB_KEEP_CACHE_SIZE初期化パラメータが構成されている必要があります。

構文

DBMS_CACHEUTIL.TRUE_CACHE_KEEP(
   schema                 IN VARCHAR2,
   obj                    IN VARCHAR2,
   partition              IN VARCHAR2 := NULL);

パラメータ

表45-7 TRUE_CACHE_KEEPプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。

45.3.8 TRUE_CACHE_UNKEEPプロシージャ

True CacheのオブジェクトがKEEPバッファ・プールに存在している必要がなくなった場合は、このプロシージャを使用してオブジェクトのKEEP割当てを削除します。

構文

DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP(
   schema                 IN VARCHAR2,
   obj                    IN VARCHAR2,
   partition              IN VARCHAR2 := NULL);

パラメータ

表45-8 TRUE_CACHE_UNKEEPプロシージャのパラメータ

パラメータ 説明
schema オブジェクトのスキーマの名前。
obj オブジェクトの名前。
partition
  • オブジェクトがパーティション化されていない場合、これはNULLです。
  • オブジェクトがパーティション化されている場合は、パーティション・セグメントの名前を使用します。
  • コンポジット型パーティション・オブジェクトの場合は、サブパーティション・セグメントの名前を使用します。