この項では、ワークロード・リプレイのタイムアウト・アクションを設定する方法について説明します。リプレイのタイムアウト・アクションを設定すると、リプレイ時の極端に遅いユーザー・コールや、リプレイがハングする原因となるユーザー・コールを中断できます。リプレイのタイムアウト・アクションの設定が必要になるのは、たとえば、データベースのアップグレードの後で、最適でない実行計画によって生じるメモリー集中型問合せを中断するような場合です。
リプレイのタイムアウト・アクションが有効な場合、リプレイ・タイムアウト・アクションで指定された条件を超えてユーザー・コールが遅延すると、ORA-15569
エラーでユーザー・コールが終了します。中断されたコールとそのエラーは、エラーの相違として報告されます。
リプレイ・タイムアウトを設定するには、次の手順に従います。
SET_REPLAY_TIMEOUT
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_REPLAY.SET_REPLAY_TIMEOUT ( enabled => TRUE, min_delay => 20, max_delay => 60, delay_factor => 10); END; /
この例のSET_REPLAY_TIMEOUT
プロシージャで定義されるリプレイ・タイムアウト・アクションでは、リプレイ時の遅延が60分を超えるか、リプレイ時の遅延が20分を超えかつその経過時間が取得経過時間の10倍より大きいと、ユーザー・コールが中断されます。
この例のSET_REPLAY_TIMEOUT
プロシージャでは、次のパラメータを使用します。
enabled
: リプレイのタイムアウト・アクションが有効か無効かを指定するパラメータ。デフォルト値はTRUE
です。
min_delay
: コールの遅延の下限を分単位で定義するパラメータ。リプレイのタイムアウト・アクションは、遅延がこの値を超えた場合にのみ実行されます。デフォルト値は10です。
max_delay
: コールの遅延の上限を分単位で定義するパラメータ。遅延がこの値を超えると、リプレイのタイムアウト・アクションが実行され、エラーが発行されます。デフォルト値は120です。
delay_factor
: min_delay
とmax_delay
の間のコール遅延について、その係数を定義するパラメータ。現在のリプレイの経過時間が、取得の経過時間とこの値を掛けた値より大きい場合、リプレイのタイムアウト・アクションがエラーを発行します。デフォルト値は8です。
リプレイ・タイムアウト・アクションを取得するには、次の手順に従います。
GET_REPLAY_TIMEOUT
プロシージャを使用します。
DECLARE enabled BOOLEAN; min_delay NUMBER; max_delay NUMBER; delay_factor NUMBER; BEGIN DBMS_WORKLOAD_REPLAY.GET_REPLAY_TIMEOUT(enabled, min_delay, max_delay, delay_factor); END; /
この例のGET_REPLAY_TIMEOUT
プロシージャは、次のパラメータを返します。
enabled
: リプレイのタイムアウト・アクションが有効か無効かを返すパラメータ。
min_delay
: コールの遅延の下限を分単位で返すパラメータ。
max_delay
: コールの遅延の上限を分単位で返すパラメータ。
delay_factor
: 遅延係数を返すパラメータ。