この記事はAndy Rivenesによる”New In-Memory Eligibility Test“の日本語翻訳版したものです。
2023年7月21日
Oracle Database RU 19.20がリリースされ、新たにIn-Memory Eligibility Testが利用可能になりました。 この新機能はDBMS_INMEMORY_ADVISEというパッケージでデータベースの一部になっており、詳細はDatabase In-Memory Guideに記載されています。 適格性テストの目的は、データベースのワークロードがDatabase In-Memoryの恩恵を受けられるかどうかを確認する簡単な方法を提供することです。 データベースが”eligible”と判定された場合は、Oracle Database In-Memory Advisorを実行して分析対象のワークロードに関する詳細情報を取得する候補となります。
In-Memory Eligibility Testは、自動ワークロード・リポジトリ(AWR)のスナップショット範囲に基づいてワークロードを分析します。 適格性テストはデータベースの一部であるため実行するために何かをインストールする必要はありません。 相応しいワークロードが見つかった場合、Oracle Database In-Memory Advisorをダウンロードして詳細を確認できます。
RU 19.20を適用したOracle DatabaseでIn-Memory Eligibility Testを実行した例を記載します。
DBMS_INMEMORY_ADVISEパッケージに、種々のパラメータを設定できるIS_INMEMORY_ELIGIBLEというプロシージャがあります:
SQL> desc dbms_inmemory_advise PROCEDURE IS_INMEMORY_ELIGIBLE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- START_SNAP_ID NUMBER IN END_SNAP_ID NUMBER IN INMEM_ELIGIBLE BOOLEAN OUT ANALYSIS_SUMMARY VARCHAR2 OUT SNAP_DBID NUMBER IN DEFAULT PROCEDURE IS_INMEMORY_ELIGIBLE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- START_TIME TIMESTAMP IN END_TIME TIMESTAMP IN INMEM_ELIGIBLE BOOLEAN OUT ANALYSIS_SUMMARY VARCHAR2 OUT SNAP_DBID NUMBER IN DEFAULT PROCEDURE IS_INMEMORY_ELIGIBLE Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- TIME_WINDOW_DAYS NUMBER IN INMEM_ELIGIBLE BOOLEAN OUT ANALYSIS_SUMMARY VARCHAR2 OUT SNAP_DBID NUMBER IN DEFAULT SQL>
次の例は、AWRスナップショットの範囲を指定してIS_INMEMORY_ELIGIBLEプロシージャを実行し、適格なワークロードを見つけています:
SQL> set serveroutput on;
SQL>
SQL> variable analysis_summary VARCHAR2(1000)
SQL>
SQL> declare
2 v_inmem_eligible boolean;
3 begin
4 dbms_inmemory_advise.is_inmemory_eligible(74, 76, v_inmem_eligible, :analysis_summary);
5 --
6 if v_inmem_eligible then
7 dbms_output.put_line('Database is eligible');
8 else
9 dbms_output.put_line('Database is NOT eligible');
10 end if;
11 end;
12 /
Database is eligible
PL/SQL procedure successfully completed.
SQL>
SQL> print analysis_summary
ANALYSIS_SUMMARY
--------------------------------------------------------------------------------
Observed Analytic Workload Percentage is 31.67% is greater than target Analytic
Workload Percentage 20%
SQL>
この例は、分析対象ワークロードについてより詳細な情報を取得するためにOracle Database In-Memory Advisorの実行が必要です。
最後の例では、分析対象ワークロードを持たないスナップショット範囲していしています:
SQL> set serveroutput on;
SQL>
SQL> variable analysis_summary VARCHAR2(1000)
SQL>
SQL> declare
2 v_inmem_eligible boolean;
3 begin
4 dbms_inmemory_advise.is_inmemory_eligible(70, 71, v_inmem_eligible, :analysis_summary);
5 --
6 if v_inmem_eligible then
7 dbms_output.put_line('Database is eligible');
8 else
9 dbms_output.put_line('Database is NOT eligible');
10 end if;
11 end;
12 /
Database is NOT eligible
PL/SQL procedure successfully completed.
SQL>
SQL> print analysis_summary
ANALYSIS_SUMMARY
--------------------------------------------------------------------------------
Snapshot range cannot be analyzed as it has insufficient activity.
SQL>
このケースでは、ワークロードのDB Timeが5%以下のため、アクティビティが不十分だというメッセージが表示されます。 アクティビティが20%以下の場合は対象外とされます。その際は、以下のようなメッセージが表示されます。:
Observed Analytic Workload Percentage is 10% is less than target Analytic Workload Percentage 20%
このように、分析対象のワークロードが十分かどうかは簡単に判別できます。
たくさんのデータベースがあると想像してください。In-Memory Eligibility Testを利用するとデータベース毎にOracle Database In-Memory Advisorをダウンロードし、インストールする必要がなくなるため、分析対象のワークロードに関するデータベース評価がとても簡単になります。In-Memory Eligibility Testを単に実行するだけで分析対象のワークロードを評価することができます。