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、パーティション(パーティション・オブジェクトの場合)およびサブパーティション(コンポジット・パーティション・オブジェクトの場合)に適用できます。
パーティション化されていないオブジェクトの場合、入力(schema
とobj
は、DBA_OBJECTS
のOWNER
とOBJECT_NAME
に対応していて、セグメントを一意に定義する必要があります。 これは、たとえばDBA_OBJECTS
に有効なDATA_OBJECT_ID
が含まれている必要があるということです。
パーティション・オブジェクトまたはコンポジット・パーティション・オブジェクトの場合、入力(schema
、obj
およびpartition
)は、DBA_OBJECTS
のOWNER
、OBJECT_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 |
|
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 |
|
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 |
|
grab_index |
依存索引に対するアフィニティを取得するには、TRUE を使用します。
|
active_drm |
内部使用のみに対応しています。 使用しないでください。 |
45.3.4 GRAB_READMOSTLYプロシージャ
GRAB_READMOSTLY
は、Oracle RAC環境内でオブジェクトをread-mostlyに設定します。
これは、特定のワークロードについて、オブジェクトへのほとんどのアクセスがINSERT
やUPDATE
ではなく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 |
|
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 |
|
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 |
|
関連トピック
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 |
|
関連トピック