96.3 IS_INMEMORY_ELIGIBLEプロシージャ
このプロシージャは、データベースからの自動ワークロード・リポジトリ(AWR)スナップショットを調べて、データベース・インメモリー・テクノロジに対するワークロードの適格性を判別します。
多くのワークロードにはデータベース・インメモリーが有効ですが、そうでないワークロードもあります。IS_INMEMEMORY_ELIGIBLE
は、ワークロードについて、データベース・インメモリーの効果があるかどうかを判別し、適格とみなすか不適格とみなすかを決定します。適格性は、ワークロードにおける分析アクティビティの割合で判別されます。データベース・インメモリーを実装する予定の場合は、このツールを使用すると、分析アクティビティが少なくデータベース・インメモリーを使用しても実質的なメリットを見込めない不適格なデータベースを迅速に特定し除外できます。それにより、ワークロードに分析アクティビティがより多く含まれているために大きなメリットを得られるデータベースを、データベース・インメモリー・デプロイメントの対象にできます。
IS_INMEMEMORY_ELIGIBLEで使用される基準
ワークフローがデータベース・インメモリーに適格か不適格かの判別は、システムで定義されているしきい値に基づきます。分析アクティビティに関連するワークロードの割合がこのしきい値を下回っている場合、データベース・インメモリーを使用してもパフォーマンスはあまり向上しません。アクティビティのレベルが、目標の分析ワークロード割合のしきい値より高ければ高いほど、データベース・インメモリーの使用によって得られる可能性があるメリットは大きくなります。
IS_INMEMORY_ELIGIBLEプロシージャの構文
IS_INMEMORY_ELIGIBLE
には3つのオーバーロードがあり、これにより、適格性テストの範囲をどのように定義するかを選択できます。出力パラメータは3つすべてで同じです。オプションの入力パラメータSNAP_DBIDも共通です。
入力パラメータは、次の構文で示すように、各オーバーロードに対して相互に排他的です。1つのプロシージャ・コールにおいてそれらを組み合せることはできません。
構文1: 今日を含む直近n日として入力
DBMS_INMEMORY_ADVISE.IS_INMEMORY_ELIGIBLE (
TIME_WINDOW_DAYS IN NUMBER,
INMEM_ELIGIBLE OUT BOOLEAN,
ANALYSIS_SUMMARY OUT VARCHAR2,
SNAP_DBID IN NUMBER DEFAULT NULL
);
構文2: スナップショット範囲として入力
DBMS_INMEMORY_ADVISE.IS_INMEMORY_ELIGIBLE (
START_SNAP_ID IN NUMBER,
END_SNAP_ID IN NUMBER,
INMEM_ELIGIBLE OUT BOOLEAN,
ANALYSIS_SUMMARY OUT VARCHAR2,
SNAP_DBID IN NUMBER DEFAULT NULL
);
構文3: 時間間隔(開始時間と終了時間)として入力
DBMS_INMEMORY_ADVISE.IS_INMEMORY_ELIGIBLE (
START_TIME IN TIMESTAMP,
END_TIME IN TIMESTAMP,
INMEM_ELIGIBLE OUT BOOLEAN,
ANALYSIS_SUMMARY OUT VARCHAR2,
SNAP_DBID IN NUMBER DEFAULT NULL
);
パラメータ
表96-2 IS_INMEMORY_ELIGIBLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
TIME_WINDOW_DAYS | 今日を含め過去n日以内に発生しているすべてのスナップショット。 |
START_TIME | スナップショット分析の期間の開始時間を指定します。START_TIME からEND_TIME まで(この時間も含む)に作成されたすべてのAWRスナップショットが確認されます。
|
END_TIME | スナップショット分析の期間の終了時間を指定します。作成された時間がEND_TIME より前でSTART_TIME 以降であるすべてのAWRスナップショットが確認されます。
|
START_SNAP_ID | 一連のスナップショットにおける最初のスナップショット。これは、分析するワークロードの開始点です。 |
END_SNAP_ID | 一連のスナップショットの最後。 |
INMEM_ELIGIBLE | ワークフローがデータベース・インメモリーに適格(それによるメリットがある)かどうかの判別結果。可能な値: True 、False 。
|
ANALYSIS_SUMMARY | INMEM_ELIGIBLEの評価を説明する分析。例: 測定された分析ワークロード割合は3%であり、目標の分析ワークロード割合である20%を下回っています 分析アクティビティの割合が目標より少ないワークロードは不適格とみなされます。
|
SNAP_DBID | AWRデータのエクスポート元のデータベースのデータベースID。これを使用すると、別のデータベース上のワークロードを分析できます。現行データベースで適格性をテストしている場合は、このパラメータを除外してください。 |
使用上のノート
指定のワークロード内で、一連のスナップショットにわたり分析アクティビティのレベルが変わる場合があります。使用可能なすべてのスナップショットのうちどのサブセットをテスト用に選択しているかで、IS_INMEMORY_ELIGIBLE
で算出される分析ワークロード割合が変わる可能性があります。そのため、異なる入力パラメータを使用して複数の評価を実行することもできます。TIME_WINDOW_DAYS
パラメータを使用すると、その時間枠に基づいてワークロードの簡潔な概要が示されます。その後、スナップショットIDに基づきパラメータを使用して特定の期間を詳しく調べると、ワークロードにおけるパターンを把握できます。
- 候補データベースでインメモリー適格性テストを実行して、データベース・インメモリーを効果的に使用できるデータベースとそうでないデータベースを確認します。
- インメモリー適格性テストで不適格と判別されたものを除き、任意のOracle 19cデータベースでインメモリー・アドバイザを実行します。
例
例1: 入力された過去n日間の時間枠での適格性をテストします。
set serverout on;
set lines 200;
DECLARE
inmem_eligible BOOLEAN;
analysis_summary VARCHAR2(200);
BEGIN
dbms_inmemory_advise.is_inmemory_eligible(1, inmem_eligible, analysis_summary);
DBMS_OUTPUT.PUT_LINE(
CASE WHEN inmem_eligible = TRUE
THEN 'Eligibile for In Memory'
ELSE 'Not Eligible for In Memory'
END
);
DBMS_OUTPUT.PUT_LINE(analysis_summary);
END;
/
例2: スナップショットIDの範囲を入力として使用して適格性をテストします。
set serverout on;
set lines 200;
DECLARE
inmem_eligible BOOLEAN;
analysis_summary VARCHAR2(200);
BEGIN
dbms_inmemory_advise.is_inmemory_eligible(355, 356, inmem_eligible, analysis_summary);
DBMS_OUTPUT.PUT_LINE(
CASE WHEN inmem_eligible = TRUE
THEN 'Eligibile for In Memory'
ELSE 'Not Eligible for In Memory'
END
);
DBMS_OUTPUT.PUT_LINE(analysis_summary);
END;
/
例3: 時間間隔を入力として使用して適格性をテストします。その時間間隔内で開始し終了しているすべてのスナップショットが含まれます。
set serverout on;
set lines 200;
DECLARE
inmem_eligible BOOLEAN;
analysis_summary VARCHAR2(120);
BEGIN
dbms_inmemory_advise.is_inmemory_eligible(TO_TIMESTAMP('21-JUN-23 05.22.27.262 PM', 'DD-Mon-RR HH:MI:SS.FF AM'),
TO_TIMESTAMP('21-JUN-23 05.26.04.446 PM', 'DD-Mon-RR HH:MI:SS.FF AM'),
inmem_eligible, analysis_summary
);
DBMS_OUTPUT.PUT_LINE(
CASE WHEN inmem_eligible = TRUE
THEN 'Eligibile for In Memory'
ELSE 'Not Eligible for In Memory'
END
);
DBMS_OUTPUT.PUT_LINE(analysis_summary);
END;
/