183 DBMS_WORKLOAD_REPLAY

DBMS_WORKLOAD_REPLAYパッケージは、ワークロード取得をリプレイするためのインタフェースを提供します。

この章のトピックは、次のとおりです:

参照:

データベース・リプレイの詳細は、『Oracle Database Testingガイド』を参照してください。

183.1 DBMS_WORKLOAD_REPLAYの概要

DBMS_WORKLOAD_REPLAYパッケージでは、DBMS_WORKLOAD_CAPTURE パッケージによって最初に作成されたワークロード取得をリプレイするために使用されるインタフェースが提供されます。

通常、DBMS_WORKLOAD_CAPTUREパッケージは、本番システムで本番ワークロードを取得する場合に使用され、DBMS_WORKLOAD_REPLAYパッケージは、その後、取得された本番ワークロードをテストするためにテスト・システムでリプレイする場合に使用されます。

関連項目

183.2 DBMS_WORKLOAD_REPLAYのセキュリティ・モデル

このセキュリティ・モデルは、DBMS_WORKLOAD_REPLAYの使用に必要な権限を示します。

この項で示すコード・サンプルには、次の操作に必要な最小限の権限が記述されています。

  • ディレクトリ・オブジェクトの作成

  • DBMS_WORKLOAD_CAPTUREおよびDBMS_WORKLOAD_REPLAYパッケージで提供されるインタフェースの操作

  • リプレイ・クライアント・ユーザー(wrc someuser/somepasswordまたはwrc USER=someuser PASSWORD=somepassword)としての動作

DROP USER rom1 CASCADE;
CREATE USER rom1 IDENTIFIED BY rom1;
 
GRANT EXECUTE ON DBMS_WORKLOAD_CAPTURE TO rom1;
GRANT EXECUTE ON DBMS_WORKLOAD_REPLAY TO rom1;
 
GRANT CREATE SESSION TO rom1;
GRANT CREATE ANY DIRECTORY TO rom1;
GRANT SELECT_CATALOG_ROLE TO rom1;
GRANT BECOME USER TO rom1;

取得システムとリプレイ・システムの両方にあるファイルおよびディレクトリに対してアクセスおよび操作を行うには、適切なOS権限が必要です。取得またはリプレイを実行しているOracleプロセスおよびOSユーザーは、インスタンスが実行されているホストからアクセス可能な1つ以上の共通ディレクトリに対してアクセスおよび操作を行うことができる必要があります。

リプレイ・クライアントはマルチスレッド化されたプログラム($ORACLE_HOME/binディレクトリにあるwrcという名の実行可能ファイル)で、スレッドごとに取得済セッションからワークロードを発行します。リプレイを実行しているOSユーザーは、必要に応じてリプレイ・クライアントのホストに取得データをコピーできるように、リプレイ・クライアントで使用されるホスト上でのwrcの実行およびファイル・システムへの適切なアクセスを行うことができる必要があります。

183.3 DBMS_WORKLOAD_REPLAYサブプログラムの要約

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

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

サブプログラム 説明

ADD_CAPTUREファンクション

特定の取得を現在のスケジュールに追加します。

ADD_FILTERプロシージャ

取得されたワークロードのサブセットのみをリプレイするフィルタを追加します。

ADD_SCHEDULE_ORDERINGファンクション

2つの取得間のスケジュール順序を追加します。

ASSIGN_GROUP_TO_INSTANCEプロシージャ

DBA_WORKLOAD_GROUP_ASSIGNMENTSビューを変更します。

BEGIN_REPLAY_SCHEDULEプロシージャ

再使用可能なリプレイ・スケジュールの作成を開始します。

CALIBRATEファンクション

処理されたワークロード取得ディレクトリで動作し、指定したワークロードを正確にリプレイするために必要とされるホストおよびワークロード・リプレイ・クライアントの数を見積もります。

CANCEL_REPLAYプロシージャ

進行中のワークロードのリプレイを取り消します。

\

リプレイとその取得、またはリプレイと同じ取得の別のリプレイを比較するレポートを生成します。

COMPARE_SQLSET_REPORTファンクション

リプレイ中に取得されたsqlsetと、ワークロード取得中に取得されたsqlsetまたは同じ取得の別のリプレイ中に取得されたsqlsetを比較するレポートを生成します。

CREATE_FILTER_SETプロシージャ

追加されたリプレイ・フィルタを使用して、replay_dirのリプレイに対して使用するフィルタ・セットを作成します。

DELETE_FILTERプロシージャ

指定されたフィルタを削除します。

DELETE_REPLAY_INFOプロシージャ

指定したワークロード・リプレイIDに対応するDBA_WORKLOAD_REPLAYS内の行を削除します。

END_REPLAY_SCHEDULEプロシージャ

現在のスケジュールの作成を完了します。

EXPORT_AWRプロシージャ

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをエクスポートします。

GENERATE_CAPTURE_SUBSETプロシージャ

既存のワークロード取得から新しい取得を作成します。

GET_DIVERGING_STATEMENTファンクション

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをエクスポートします。

GET_REPLAY_DIRECTORYファンクション

SET_REPLAY_DIRECTORYプロシージャによって設定された現在のリプレイ・ディレクトリを戻します。

GET_REPLAY_INFOファンクション

ワークロード取得に関する情報と、関連ディレクトリからのすべてのワークロード・リプレイ試行の履歴に関する情報を取得します。

GET_REPLAY_TIMEOUTプロシージャ

リプレイのタイムアウト設定を取得します。

IMPORT_AWRファンクション

指定されたリプレイIDに関連付けられている自動ワークロード・リポジトリ(AWR)のスナップショットをインポートします。

INITIALIZE_CONSOLIDATED_REPLAYプロシージャ

複数の取得リプレイに対してデータベースの状態をINITに設定します。

INITIALIZE_REPLAYプロシージャ

リプレイを初期化し、処理中に生成された特定のデータをデータベースにロードします。

IS_REPLAY_PAUSEDファンクション

リプレイが一時停止中かどうかをレポートします。

PAUSE_REPLAYプロシージャ

進行中のワークロードのリプレイを一時停止します。

POPULATE_DIVERGENCEプロシージャ

特定のコール、ストリームまたはリプレイ全体の相違情報を事前計算して、GET_DIVERGING_STATEMENTファンクションが事前計算されたコールに可能な限り迅速に戻ることができるようにします。

PREPARE_CONSOLIDATED_REPLAYプロシージャ

複数の取得リプレイに対してデータベースを特別な「準備」モードにします。

PREPARE_REPLAYプロシージャ

データベースを特別な「準備」モードにします。

PROCESS_CAPTUREプロシージャ

capture_dir内で検出されたワークロード取得を処理します。

REMAP_CONNECTIONプロシージャ

ワークロードのリプレイ中にユーザー・セッションが希望の方法でデータベースに接続できるように、取得された接続を新しい接続に再マップします。

REMOVE_CAPTUREプロシージャ

現在のスケジュールから特定の取得を削除します。

REMOVE_SCHEDULE_ORDERINGプロシージャ

現在のリプレイ・スケジュールから既存のスケジュール順序を削除します。

REPORTファンクション

特定のワークロードのリプレイに関するレポートを生成します。

RESUME_REPLAYプロシージャ

一時停止しているワークロードのリプレイを再開します。

REUSE_REPLAY_FILTER_SETプロシージャ

指定されたフィルタ・セットの各フィルタを、ADD_SCHEDULE_ORDERINGプロシージャを使用して追加する場合と同じように再利用します。

SET_ADVANCED_PARAMETERプロシージャ

PREPARE_REPLAYプロシージャで使用されるパラメータ以外に、リプレイに対して詳細なパラメータを設定します。

SET_REPLAY_DIRECTORYプロシージャ

複数のワークロード取得を含むディレクトリを現在のリプレイ・ディレクトリとして設定します。

SET_REPLAY_TIMEOUTプロシージャ

リプレイのタイムアウト設定を指定します。

SET_SQL_MAPPINGプロシージャ

データベースのリプレイ操作中にスキップまたは置換するSQL文を指定します。

SET_USER_MAPPINGプロシージャ

取得されたユーザーのかわりに、リプレイ中に使用する新規スキーマまたはユーザー名を設定します。

START_CONSOLIDATED_REPLAYプロシージャ

複数の取得のリプレイを開始します。

START_REPLAYプロシージャ

ワークロードのリプレイを開始します。

USE_FILTER_SETプロシージャ

CREATE_FILTER_SETプロシージャをコールして作成された特定のフィルタ・セットを使用して、現行のリプレイをフィルタ処理します。

183.3.1 ADD_CAPTUREファンクション

このファンクションは、特定の取得を現在のスケジュールに追加します。ディレクトリは、現行データベースのバージョンで処理された、有効な取得である必要があります。このスケジュール内の取得を識別する一意のIDを戻します。

構文

DBMS_WORKLOAD_REPLAY.ADD_CAPTURE (
   capture_dir_name      IN    VARCHAR2,
   start_delay_seconds   IN    NUMBER  DEFAULT 0,
   stop_replay           IN    BOOLEAN FALSE,
   take_begin_snapshot   IN    BOOLEAN TRUE,
   take_end_snapshot     IN    BOOLEAN TRUE,
   query_only            IN    BOOLEAN DEFAULT FALSE)
 RETURN NUMBER;

DBMS_WORKLOAD_REPLAY.ADD_CAPTURE (
   capture_dir_name      IN    VARCHAR2,
   start_delay_seconds   IN    NUMBER  DEFAULT 0,
   stop_replay           IN    BOOLEAN FALSE,
   take_begin_snapshot   IN    BOOLEAN TRUE,
   take_end_snapshot     IN    BOOLEAN TRUE,
   query_only            IN    VARCHAR2 DEFAULT 'N')
 RETURN NUMBER;

パラメータ

表183-2 ADD_CAPTUREファンクションのパラメータ

パラメータ 説明

capture_dir_name

リプレイの最上位のディレクトリの下に取得を含むOSディレクトリの名前。

start_delay_seconds

この取得のリプレイが開始されるまでの遅延時間(秒単位)。

stop_replay

リプレイを終了後に停止します。

take_begin_snapshot

この取得のリプレイが開始されるときにAWRスナップショットを取ります。

take_end_snapshot

この取得のリプレイが終了するときにAWRスナップショットを取ります。

query_only

このワークロード取得の読取り専用問合せのみをリプレイします。

使用上のノート

SET_REPLAY_DIRECTORYプロシージャがすでにコールされている必要があります。

183.3.2 ADD_FILTERプロシージャ

このプロシージャは、取得されたワークロードのサブセットのみをリプレイするフィルタを追加します。

プロシージャによって追加される新しいフィルタは、CREATE_FILTER_SETプロシージャで作成される次のリプレイ・フィルタ・セットで使用されます。このフィルタは、フィルタ・セットの作成時にCREATE_FILTER_SETに渡される引数に応じて、「INCLUSION」または「EXCLUSION」フィルタとみなされます。

構文

DBMS_WORKLOAD_REPLAY.ADD_FILTER (
   fname          IN VARCHAR2,
   fattribute     IN VARCHAR2,
   fvalue         IN VARCHAR2);

DBMS_WORKLOAD_REPLAY.ADD_FILTER (
   fname          IN VARCHAR2,
   fattribute     IN VARCHAR2,
   fvalue         IN NUMBER);

パラメータ

表183-3 ADD_FILTERプロシージャのパラメータ

パラメータ 説明

fname

フィルタ名(必須)。後でフィルタが不要になった場合、削除するときに使用できます。

fattribute

STRINGタイプの次のいずれかの値によって、フィルタを定義する属性を指定します(必須)。

  • USER

  • MODULE

  • ACTION

  • PROGRAM

  • SERVICE

  • CONNECTION_STRING

fvalue

フィルタがアクティブであるとみなされるようにするために、特定の属性と同じにする必要のある値を指定します(必須)。STRINGタイプのすべての属性について%のようなワイルドカードを使用できます。現在、fattributeのリストされた値のタイプはすべてSTRINGです。INSTANCE_NUMBERNUMBER属性です。これは現在、取得のみでサポートされています。

183.3.3 ADD_SCHEDULE_ORDERINGファンクション

このファンクションは、2つの取得間のスケジュール順序を追加します。

schedule_capture_idとwaitfor_capture_idを同時に指定することで、以前はADD_SCHEDULE_ORDERINGファンクションにより追加されていたスケジュール順序が構成されます。この順序では、waiting_for_capture_idにより指定された取得のリプレイが終了しないかぎり、schedule_capture_idにより指定された取得のリプレイは開始しません。

構文

DBMS_WORKLOAD_REPLAY.ADD_SCHEDULE_ORDERING (
   schedule_capture_id     IN VARCHAR2,
   waitfor_capture_id      IN VARCHAR2)
  RETURN NUMBER;

パラメータ

表183-4 ADD_SCHEDULE_ORDERINGファンクションのパラメータ

パラメータ 説明

schedule_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。このサブプログラムにより追加された新規のスケジュール順序によると、そのリプレイは、waitfor_capture_idにより指定された別の取得のリプレイが完了するまで開始しません。

waitfor_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。このサブプログラムにより追加された新規のスケジュール順序によると、schedule_capture_idにより指定された取得のリプレイは、この取得のリプレイが完了するまで開始しません。

戻り値

この制約を追加できない場合、ゼロ以外のエラー・コードを返します。

使用上のノート

2つの取得は、リプレイ・スケジュールにすでに追加されている必要があります。

183.3.4 ASSIGN_GROUP_TO_INSTANCEプロシージャ

このプロシージャは、DBA_WORKLOAD_GROUP_ASSIGNMENTSビューを変更します。

構文

DBMS_WORKLOAD_REPLAY.ASSIGN_GROUP_TO_INSTANCE (
   group_id          IN INTEGER,
   instance_number   IN INTEGER);

パラメータ

表183-5 ASSIGN_GROUP_TO_INSTANCEプロシージャのパラメータ

パラメータ 説明

group_id

指定された取得ファイルのグループの識別子。

instance_number

インスタンス登録に使用される番号。

これは、V$INSTANCEINSTANCE_NUMBER列と同等です。

参照:

183.3.5 BEGIN_REPLAY_SCHEDULEプロシージャ

このプロシージャは、再使用可能なリプレイ・スケジュールの作成を開始します。

構文

DBMS_WORKLOAD_REPLAY.BEGIN_REPLAY_SCHEDULE  (
   replay_dir_obj     IN     VARCHAR2,
   schedule_name      IN     VARCHAR2);

パラメータ

表183-6 BEGIN_REPLAY_SCHEDULEプロシージャのパラメータ

パラメータ 説明

replay_dir_obj

スケジュールに関連するすべての取得ディレクトリを含むリプレイ・ディレクトリを指すディレクトリ・オブジェクト。

schedule_name

リプレイするスケジュールの名前。

使用上のノート

  • 作成モードにできるスケジュールは、一度に1つのみです。end_replay_scheduleの前にこのサブプログラムを再度コールすると、エラーが発生します。

  • 前提条件:

    • 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

    • 取得ディレクトリを適切にコピーしておく必要があります。

    • データベースがリプレイ・モードではありません。

    • SET_REPLAY_DIRECTORYプロシージャがすでにコールされています。

183.3.6 CALIBRATEファンクション

このファンクションは、処理されたワークロード取得ディレクトリで動作し、指定したワークロードを正確にリプレイするために必要とされるホストおよびワークロード・リプレイ・クライアントの数を見積もります。このファンクションは、結果をXML CLOBとして戻します。

構文

DBMS_WORKLOAD_REPLAY.CALIBRATE (
   capture_dir          IN VARCHAR2,
   process_per_cpu      IN BINARY_INTEGER DEFAULT 4,
   threads_per_process  IN BINARY_INTEGER DEFAULT 50)
  RETURN CLOB;

パラメータ

表183-7 CALIBRATEファンクションのパラメータ

パラメータ 説明

capture_dir

処理済の取得データが格納されたOSディレクトリを指すディレクトリ・オブジェクトの名前(大/小文字が区別される)。

process_per_cpu

CPUごとに許可される処理の最大数(デフォルトは4)。

threads_per_process

処理ごとに許可されるスレッドの最大数(デフォルトは50)。

戻り値

次の情報が含まれているXML形式のCLOBを戻します。

  • 取得に関する情報

  • 現行のデータベース・バージョン

  • このファンクションへの入力パラメータ

  • 指定したワークロードのリプレイに必要なCPUおよびリプレイ・クライアントの数

  • 取得されたセッションに関する情報(合計数および最大同時実行)

使用上のノート

  • 前提条件: 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、入力ワークロード取得がすでに処理されています。

  • このプロシージャは、calibrateモードでのワークロード・リプレイ・クライアントと同じ結果を戻します。calibrateモードは、次のように実行できます。

    $ wrc mode=calibrate replaydir=

183.3.7 CANCEL_REPLAYプロシージャ

このプロシージャは、進行中のワークロードのリプレイを取り消します。すべての外部リプレイ・クライアント(WRC)は、取得したワークロードの発行を停止し、終了するように自動的に通知されます。

構文

DBMS_WORKLOAD_REPLAY.CANCEL_REPLAY (
   error_msg    IN VARCHAR2 DEFAULT NULL);

パラメータ

表183-8 CANCEL_REPLAYプロシージャのパラメータ

パラメータ 説明

error_msg

リプレイを取り消すオプションの理由を渡すことができ、この理由はDBA_WORKLOAD_REPLAYS.ERROR_MESSAGEに記録されます。

使用上のノート

前提条件: INITIALIZE_REPLAYプロシージャPREPARE_REPLAYプロシージャまたはSTART_REPLAYプロシージャに対するコールがすでに発行されていること。

183.3.8 COMPARE_PERIOD_REPORTプロシージャ

このプロシージャは、リプレイとその取得、またはリプレイと同じ取得の別のリプレイを比較するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.COMPARE_PERIOD_REPORT (
   replay_id1   IN   NUMBER,
   replay_id2   IN   NUMBER,
   format       IN   VARCHAR2,
   result       OUT  CLOB );

パラメータ

表183-9 COMPARE_PERIOD_REPORTプロシージャのパラメータ

パラメータ 説明

replay_id1

レポートが必要なワークロード・リプレイの最初のID

replay_id2

レポートが必要なワークロード・リプレイの2番目のID。これがNULLの場合は、取得との比較が実行されます。

format

レポートの書式を指定します。有効な値は、DBMS_WORKLOAD_CAPTURE.TYPE_HTMLおよびDBMS_WORKLOAD_CAPTURE.TYPE_XMLです。

result

レポートの出力(CLOB)

183.3.9 COMPARE_SQLSET_REPORTファンクション

このプロシージャは、リプレイ中に取得されたsqlsetと、ワークロード取得中に取得されたsqlsetまたは同じ取得の別のリプレイ中に取得されたsqlsetを比較するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.COMPARE_SQLSET_REPORT (
   replay_id1    IN NUMBER,
   replay_id2    IN NUMBER,
   format        IN VARCHAR2,
   r_level       IN VARCHAR2 DEFAULT 'ALL',
   r_sections    IN VARCHAR2 DEFAULT 'ALL',
   result        OUT CLOB )
  RETURN VARCHAR2;

パラメータ

表183-10 COMPARE_SQLSET_REPORTファンクションのパラメータ

パラメータ 説明

replay_id1

変更後のワークロード・リプレイを示す1番目のID。

replay_id2

変更前のワークロード・リプレイを示す2番目のID。これがNULLの場合は、取得との比較が実行されます。

format

レポートの書式を指定します。有効な値は、DBMS_WORKLOAD_CAPTURE.TYPE_HTMLDBMS_WORKLOAD_CAPTURE.TYPE_XMLおよびDBMS_WORKLOAD_CAPTURE.TYPE_TEXTです。

r_level

DBMS_SQLPAパッケージのREPORT_ANALYSIS_TASKファンクションlevelパラメータを参照してください。

r_sections

DBMS_SQLPAパッケージのREPORT_ANALYSIS_TASKファンクションsectionパラメータを参照してください。

result

レポートの出力(CLOB)

183.3.10 CREATE_FILTER_SETプロシージャ

このプロシージャは、replay_dirでリプレイに対してフィルタ・セットを新規に作成します。

これには、すでにADD_FILTER Procedureによって追加されたリプレイ・フィルタがすべて含まれます。プロシージャが完了してリプレイが開始された後、新規作成されたフィルタ・セットを使用して、USE_FILTER_SETプロシージャをコールすることでreplay_dirのリプレイをフィルタ処理できます。

構文

DBMS_WORKLOAD_REPLAY.CREATE_FILTER_SET(
   replay_dir       IN  VARCHAR2,
   filter_set       IN  VARCHAR2,
   default_action   IN  VARCHAR2 DEFAULT 'INCLUDE'); 

パラメータ

表183-11 CREATE_FILTER_SETプロシージャのパラメータ

パラメータ 説明

replay_dir

フィルタ処理するリプレイのオブジェクト・ディレクトリ

filter_set

作成するフィルタ・セットの名前(USE_FILTER_SETプロシージャで使用されます)。

default_action

INCLUDEまたはEXCLUDEに設定できます。デフォルトですべての取得コールをリプレイする必要があるかどうかを決定します。また、指定したワークロード・フィルタをINCLUSIONフィルタとみなすか、またはEXCLUSIONフィルタとみなすかも決定されます。

INCLUDEの場合は、フィルタで定義されたワークロードの一部を除き、取得されたすべてのコールがデフォルトでリプレイされます。この場合、ADD_SCHEDULE_ORDERINGファンクションを使用して指定されたすべてのフィルタは、EXCLUSIONフィルタとして処理され、リプレイしないワークロードが決定されます。

EXCLUDEの場合は、フィルタで定義されたワークロードの一部を除き、データベースへの取得コールはデフォルトでリプレイされません。この場合、ADD_SCHEDULE_ORDERINGファンクションを使用して指定されたすべてのフィルタは、INCLUSIONフィルタとして処理され、リプレイされるワークロードが決定されます。

デフォルト: INCLUDE。指定したすべてのフィルタは、EXCLUSIONフィルタとみなされます。

使用上のノート

この操作は、初期化および準備されたリプレイがなく、進行中のリプレイもないときに起動する必要があります。

183.3.11 DELETE_FILTERプロシージャ

このプロシージャは、指定されたフィルタを削除します。

構文

DBMS_WORKLOAD_REPLAY.DELETE_FILTER(
   fname    IN  VARCHAR2);

パラメータ

表183-12 DELETE_FILTERプロシージャのパラメータ

パラメータ 説明

fname

削除する必要のあるフィルタの名前(必須)。

183.3.12 DELETE_REPLAY_INFOプロシージャ

このプロシージャは、指定したワークロード・リプレイIDに対応するDBA_WORKLOAD_REPLAYS内の行を削除します。

構文

DBMS_WORKLOAD_REPLAY.DELETE_REPLAY_INFO (
   replay_id    IN  NUMBER);

パラメータ

表183-13 DELETE_REPLAY_INFOプロシージャのパラメータ

パラメータ 説明

replay_id

削除する必要のあるワークロード・リプレイのID(必須)。DBA_WORKLOAD_REPLAYS.IDに対応します。

183.3.13 END_REPLAY_SCHEDULEプロシージャ

このプロシージャは、現在のスケジュールの作成を完了します。スケジュールが保存され、リプレイ・ディレクトリに関連付けられ、リプレイに使用できるようになります。

構文

DBMS_WORKLOAD_REPLAY.END_REPLAY_SCHEDULE;

使用上のノート

BEGIN_REPLAY_SCHEDULEプロシージャがすでにコールされている必要があります。

183.3.14 EXPORT_AWRプロシージャ

このプロシージャは、規定のリプレイIDに関連付けられたAWRスナップショットをエクスポートします。

構文

DBMS_WORKLOAD_REPLAY.EXPORT_AWR (
   replay_id    IN  NUMBER);

パラメータ

表183-14 EXPORT_AWRファンクションのパラメータ

パラメータ 説明

replay_id

AWRスナップショットがエクスポートされるリプレイのID(必須)。

使用上のノート

  • 各リプレイの最後に、対応するAWRスナップショットが自動的にエクスポートされます。そのため、EXPORT_AWRの自動起動が失敗しないかぎり、ワークロードのリプレイが完了した後に手動でエクスポートする必要はありません。

  • このプロシージャは対応するワークロードのリプレイが現行のデータベースで実行され(このことは、DBA_WORKLOAD_REPLAYS内の対応する行がGET_REPLAY_INFOファンクションのコールによって作成されていないことを意味します)、そのリプレイ時間に対応するAWRスナップショットが使用可能である場合にのみ機能します。

183.3.15 GENERATE_CAPTURE_SUBSETプロシージャ

このプロシージャは、既存のワークロード取得から新しい取得を作成します。

構文

DBMS_WORKLOAD_REPLAY.GENERATE_CAPTURE_SUBSET (
   input_capture_dir          IN   VARCHAR2,
   output_capture_dir         IN   VARCHAR2,
   new_capture_name           IN   VARCHAR2,
   begin_time                 IN   NUMBER,
   begin_include_incomplete   IN   BOOLEAN DEFAULT TRUE,
   end_time                   IN   NUMBER,
   end_include_incomplete     IN   BOOLEAN DEFAULT FALSE,
   parallel_level             IN   NUMBER DEFAULT NULL);

パラメータ

表183-15 GENERATE_CAPTURE_SUBSETプロシージャのパラメータ

パラメータ 説明

input_capture_dir

既存のワークロード取得を指すディレクトリ・オブジェクトの名前(必須)。

output_capture_dir

新しい取得を指すディレクトリ・オブジェクトの名前(必須)。

new_capture_name

新しい取得の名前(必須)。

begin_time

時間範囲の開始: ワークロード取得の開始からの時間オフセット(秒単位)。

begin_include_incomplete

begin_timeが原因の未完了コールを含む列。

end_time

時間範囲の終了: ワークロード取得の開始からの時間オフセット(秒単位)。end_timeがゼロまたはend_timebegin_time以下の場合、この時間範囲は無効です。新しい取得は、入力取得の全期間を使用します。

end_include_incomplete

end_timeが原因の未完了コールを含む列。

parallel_level

入力取得を並行処理するために使用されるOracleプロセスの数。NULL(デフォルト値)ではCPU数に基づいて並列度が自動的に計算され、値が1の場合はシリアル実行が強制的に行われます。

183.3.16 GET_DIVERGING_STATEMENTファンクション

このファンクションは、相違コールに関する情報(文のテキスト、SQL ID、バインドなど)を取得します。記録されたユーザー・コールのリプレイにデータまたはエラーの相違がある場合は、相違コールになります。

構文

DBMS_WORKLOAD_REPLAY.GET_DIVERGING_STATEMENT (
   replay_id    IN NUMBER,
   stream_id    IN NUMBER,
   call_counter IN NUMBER)
  RETURN CLOB;

パラメータ

表183-16 GET_DIVERGING_STATEMENTファンクションのパラメータ

パラメータ 説明

replay_id

コールが異なったリプレイのID

stream_id

相違コールのストリームID

call_counter

相違コールのコール・カウンタ

使用上のノート

  • 次の情報が含まれているXML形式のCLOBを戻します。

    • SQL ID

    • SQLテキスト

    • バインド情報(位置、名前、値)

  • このファンクションは、POPULATE_DIVERGENCEプロシージャを黙示的に起動して、取得ファイルから情報を読み取ります。そのため、相違が移入されていない場合には、特定の相違コールに対してこのファンクションを最初にコールする際に時間がかかることがあります(特に、取得が大規模な場合には時間がかかる可能性があります)。

183.3.17 GET_REPLAY_DIRECTORYファンクション

このファンクションは、SET_REPLAY_DIRECTORYプロシージャによって設定された現在のリプレイ・ディレクトリを戻します。リプレイ・ディレクトリが設定されていない場合、NULLが戻されます。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_DIRECTORY
   RETURN VARCHAR2;

183.3.18 GET_REPLAY_INFOファンクション

このファンクションは、ワークロード取得に関する情報と、規定のディレクトリからのすべてのワークロード・リプレイ試行の履歴に関する情報を取得します。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO (
   replay_dir    IN VARCHAR2,
   load_details  IN BOOLEAN DFAULT FALSE)
 RETURN NUMBER;

パラメータ

表183-17 GET_REPLAY_INFOファンクションのパラメータ

パラメータ 説明

replay_dir

ワークロード・リプレイ・ディレクトリ・オブジェクトの名前(大/小文字が区別される)(必須)。

load_details

相違および追跡されたコミット・データをロードします。デフォルト値はFALSEです。

戻り値

このプロシージャは、インポートされた情報にアクセスするためにDBA_WORKLOAD_CAPTURES.IDDBA_WORKLOAD_REPLAYS.CAPTURE_IDの両方に関連付けることのできるCAPTURE_IDを返します。

使用上のノート

  • このプロシージャはまず、取得に関する情報が含まれるDBA_WORKLOAD_CAPTURESを行にインポートします。次に、リプレイ試行が指定されたリプレイ・ディレクトリから取得されるたびに、DBA_WORKLOAD_REPLAYSに行をインポートします。

  • 指定したディレクトリに存在する取得およびリプレイの履歴について記述する行が、DBA_WORKLOAD_CAPTURESおよびDBA_WORKLOAD_REPLAYSにすでに含まれている場合、このプロシージャはこれらのビューに新しい行を挿入しません。

183.3.19 GET_REPLAY_TIMEOUTプロシージャ

このプロシージャは、リプレイのタイムアウト設定を取得します。

構文

DBMS_WORKLOAD_REPLAY.GET_REPLAY_TIMEOUT (
   enabled       OUT  BOOLEAN, 
   min_delay     OUT  NUMBER,
   max_delay     OUT  NUMBER,
   delay_factor  OUT  NUMBER);

パラメータ

表183-18 GET_REPLAY_TIMEOUTプロシージャのパラメータ

パラメータ 説明

enabled

タイムアウト・アクションが有効にされている場合はTRUE、そうでない場合はFALSEです。

min_delay

コール遅延の下限(分単位)。リプレイ・アクションは、遅延がmin_delay以上の場合にのみアクティブ化されます。

max_delay

コール遅延の上限(分単位)。遅延がmax_delayを超えると、タイムアウト・アクションによってORA-15569がスローされます。

delay_factor

min_delaymax_delayの間にあるコール遅延の係数。現行のリプレイの経過時間が取得の経過時間とdelay_factorの積を超えると、タイムアウト・アクションによってORA-15569がスローされます。

使用上のノート

このプロシージャは、リプレイ中にいつでもコールできます。

183.3.20 IMPORT_AWRファンクション

このプロシージャは、指定したリプレイからAWRスナップショットをインポートします。

構文

DBMS_WORKLOAD_REPLAY.IMPORT_AWR (
   replay_id       IN   NUMBER,
   staging_schema  IN   VARCHAR2)
  RETURN NUMBER;

パラメータ

表183-19 IMPORT_AWRファンクションのパラメータ

パラメータ 説明

replay_id

(必須)AWRスナップショットをインポートする必要のあるリプレイのID。

staging_schema

リプレイ・ディレクトリからSYS AWRスキーマにAWRスナップショットをインポートする間に、ステージング領域として使用できる現行データベース内の有効なスキーマの名前(必須)。SYSスキーマは有効な入力ではありません。

戻り値

AWRスナップショットをインポートするときに使用した、ランダムに生成された新しいデータベースIDを戻します。DBA_WORKLOAD_REPLAYSビューのAWR_DBID列に同じ値があります。

使用上のノート

  • このプロシージャは、それらのAWRスナップショットがEXPORT_AWRプロシージャを使用して、元のリプレイ・システムから事前にエクスポートされていた場合に機能します。

  • 入力として指定したstaging_schemaに、任意のAWR表と同じ名前(WRM$_SNAPSHOTWRH$_PARAMETERなど)を持つ表が含まれている場合、IMPORT_AWRは失敗します。このような表をstaging_schemaから削除してから、IMPORT_AWRを起動します。

183.3.21 INITIALIZE_CONSOLIDATED_REPLAYプロシージャ

このプロシージャは、複数の取得リプレイに対してデータベースの状態をINITに設定します。

SET_REPLAY_DIRECTORYプロシージャによって定義されたreplay_dirを使用し、スケジュール関連のすべての取得ディレクトリを含むディレクトリを指します。スケジュールschedule_nameに関するデータをディレクトリから読み取り、必要な接続データをリプレイ・システムにロードします。

構文

DBMS_WORKLOAD_REPLAY.INITIALIZE_CONSOLIDATED_REPLAY (
   replay_name        IN    VARCHAR2,
   schedule_name      IN    VARCHAR2,
   plsql_mode         IN    VARCHAR2 DEFAULT 'TOP_LEVEL');

パラメータ

表183-20 INITIALIZE_CONSOLIDATED_REPLAYプロシージャのパラメータ

パラメータ 説明

replay_name

ワークロード・リプレイの名前(必須)。処理済のワークロード取得のすべてのリプレイに名前を付けることができます。

schedule_name

リプレイするスケジュールの名前。これは、リプレイ・ディレクトリreplay_dirBEGIN_REPLAY_SCHEDULEプロシージャを使用して作成されている必要があります。

plsql_mode

PL/SQLコールのリプレイ・オプションを指定します。

  • TOP_LEVEL - トップ・レベルのPL/SQLコールのみがリプレイされます

  • EXTENDED - PL/SQLから実行されたSQL、またはPL/SQL内に記録されているSQLがない場合は最上位レベルのPL/SQLがリプレイされます。通常、取得はすべて'EXTENDED' PL/SQLモードで実行されています。

使用上のノート

前提条件:

  • 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

  • データベースの状態は、元のワークロード取得の開始時点の状態に論理的にリストアされています。

  • SET_REPLAY_DIRECTORYプロシージャがコールされています。

183.3.22 INITIALIZE_REPLAYプロシージャ

このプロシージャはデータベースの状態をREPLAYモードのINITに設定し、(PAUSE_REPLAYプロシージャを実行して)リプレイの準備をする前に、必要なリプレイ・システムにデータをロードします。

構文

DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY (
   replay_name     IN  VARCHAR2,
   replay_dir      IN  VARCHAR2,
   plsql_mode      IN  VARCHAR2 DEFAULT 'TOP_LEVEL',
   rac_inst_list   IN  VARCHAR2 DEFAULT NULL);

パラメータ

表183-21 INITIALIZE_REPLAYプロシージャのパラメータ

パラメータ 説明

replay_name

ワークロード・リプレイの名前(必須)。処理済のワークロード取得のすべてのリプレイに名前を付けることができます。

replay_dir

処理済の取得データが格納されたOSディレクトリを指すディレクトリ・オブジェクトの名前(大/小文字が区別される)。

plsql_mode

PL/SQLコールのリプレイ・オプションを指定します。

  • TOP_LEVEL - トップ・レベルのPL/SQLコールのみがリプレイされます

  • EXTENDED - PL/SQLから実行されたSQL、またはPL/SQL内に記録されているSQLがない場合は最上位レベルのPL/SQLがリプレイされます。通常、取得はすべて'EXTENDED' PL/SQLモードで実行されています。

rac_inst_list

リプレイに使用するOracle Real Application Clusters (Oracle RAC)インスタンスのリストを指定します。パラメータは、カンマで区切られたインスタンス番号の文字列です。次に例を示します。
rac_inst_list='1,3,5'

使用上のノート

  • 前提条件:

    • 同じデータベース・バージョンで、PROCESS_CAPTUREプロシージャを使用して、ワークロード取得がすでに処理されています。

    • データベースの状態は、元のワークロード取得の開始時点の状態に論理的にリストアされています。

  • サブプログラムは、PAUSE_REPLAYプロシージャをコールしてリプレイの準備をする前に、必要なリプレイ・システムにデータをロードします。

    たとえば、取得中に、ユーザーは各セッションでサーバーへの接続に使用された接続文字列を記録することがあります。INITIALIZE_REPLAYプロシージャはこのデータをロードして、記録された接続文字列を、ユーザーが新しい接続文字列やサービス・ポイントに再マップできるようにします。

    ユーザーは、PROCESS_CAPTUREプロシージャに示した例を詳細に指定して、次のようなコマンドを起動できます。

    DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY('replay foo #1', 'rec_dir');
    

    このコマンドは接続マップをロードし、デフォルトで、リプレイ時接続文字列をすべてNULLと同じに設定します。NULLのリプレイ時接続文字列は、ワークロード・リプレイ・クライアント(WRC)が、リプレイ・クライアントのランタイム環境設定によって決定されるデフォルトのホストに接続することを意味します。ユーザーは、REMAP_CONNECTIONプロシージャを使用して、特定の接続文字列をリプレイ用の新しい接続文字列(または新しいサービス・ポイント)に変更できます。

183.3.23 IS_REPLAY_PAUSEDファンクション

このファンクションは、リプレイが一時停止中かどうかをレポートします。

構文

DBMS_WORKLOAD_REPLAY.IS_REPLAY_PAUSED
   RETURN BOOLEAN;

戻り値

PAUSE_REPLAYプロシージャが正常にコールされ、RESUME_REPLAYプロシージャがまだコールされていない場合は、TRUEが戻されます。

使用上のノート

前提条件として、START_REPLAYプロシージャに対するコールが発行されている必要があります。

183.3.24 PAUSE_REPLAYプロシージャ

このプロシージャは、進行中のワークロードのリプレイを一時停止します。

リプレイ・クライアントからの後続のすべてのコールは、RESUME_REPLAYプロシージャへのコールが発行されるか、またはリプレイが取り消されるまで停止状態になります。

構文

DBMS_WORKLOAD_REPLAY.PAUSE_REPLAY;

使用上のノート

  • 前提条件: START_REPLAYプロシージャに対するコールがすでに発行されています。

  • このプロシージャを起動したときにすでに進行中であるユーザー・コールは、完了するまで実行できます。後続のユーザー・コールのみが、発行された場合に一時停止されます。

183.3.25 POPULATE_DIVERGENCEプロシージャ

このプロシージャは特定のコール、ストリームまたはリプレイ全体の相違情報を事前計算して、GET_DIVERGING_STATEMENTファンクションが事前計算されたコールに可能な限り迅速に戻ることができるようにします。

構文

DBMS_WORKLOAD_REPLAY.POPULATE_DIVERGENCE (
   replay_id    IN   NUMBER,
   stream_id    IN   NUMBER DEFAULT NULL,
   call_counter IN   NUMBER DEFAULT NULL);

パラメータ

表183-22 POPULATE_DIVERGENCEプロシージャのパラメータ

パラメータ 説明

replay_id

リプレイのID

stream_id

相違コールのストリームID。NULLの場合は、特定のリプレイにおけるすべての相違コールについて相違情報が事前計算されます。

call_counter

相違コールのコール・カウンタ。NULLの場合は、特定のストリームにおけるすべての相違コールについて相違情報が事前計算されます。

183.3.26 PREPARE_CONSOLIDATED_REPLAYプロシージャ

PREPARE_REPLAYプロシージャと同様に、このプロシージャは、複数の取得リプレイに対してデータベースを特別な「準備」モードにします。このサブプログラムは統合されたリプレイのみに使用される点が異なります。

構文

DBMS_WORKLOAD_REPLAY.PREPARE_CONSOLIDATED_REPLAY (
   synchronization           IN BOOLEAN,
   connect_time_scale        IN NUMBER    DEFAULT 100,
   think_time_scale          IN NUMBER    DEFAULT 100,
   think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
   capture_sts               IN BOOLEAN   DEFAULT FALSE,
   sts_cap_interval          IN NUMBER    DEFAULT 300);

DBMS_WORKLOAD_REPLAY.PREPARE_CONSOLIDATED_REPLAY (
   synchronization           IN VARCHAR2  DEFAULT 'OBJECT_ID',,
   connect_time_scale        IN NUMBER    DEFAULT 100,
   think_time_scale          IN NUMBER    DEFAULT 100,
   think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
   capture_sts               IN BOOLEAN   DEFAULT FALSE,
   sts_cap_interval          IN NUMBER    DEFAULT 300);

パラメータ

表183-23 PREPARE_CONSOLIDATED_REPLAYプロシージャのパラメータ

パラメータ 説明

synchronization

リプレイの同期モードを設定します。

  • 'TIME' - 同期は取得時のアクションの実行時間に基づきます(時計ベースの時間)。

  • 'SCN' - 同期は取得時のコミットに基づきます。コミット順序はリプレイ時に保持されます。これがデフォルト・モードです。

  • 'OBJECT_ID' - リプレイされるすべてのアクションは、関連するコミットの実行が完了したにのみ実行されます。関連するコミットとは、取得されたワークロードで指定されたアクションの前に発行され、そのアクションが(明示的または黙示的に)参照している1つ以上のデータベース・オブジェクトを変更したコミットのことです。この同期モードは、リプレイ・アクションが取得中に接したデータと同じデータに接するようにするとともに、同じオブジェクト/表に接しない他のアクションに対してより多くの同時実行を認めるようにします。

    この値は非推奨です。

互換性を保つために、このプロシージャのオーバーロード・バージョンではこのパラメータにブール値を使用します。

  • TRUEは'SCN'を意味します。

  • FALSEは'TIME'を意味します。

connect_time_scale

ワークロード取得が開始されてから、指定した値でセッションが接続されるまでの経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。例183-1を参照してください。

think_time_scale

同じセッションからの2つの連続したユーザー・コール(例183-1)間の経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。例183-2を参照してください。

think_time_auto_correct

リプレイでのユーザー・コールの完了にかかる時間が、元の取得でかかった時間よりも長くなる場合に、コール間の思考時間を適切に自動修正します。DEFAULTTRUEでは、リプレイが取得よりも遅くなった場合に思考時間が短縮されます。例183-3を参照してください。

capture_sts

このパラメータがTRUEの場合、ワークロード・リプレイと並行してSQLチューニング・セット取得も開始されます。取得されたSQLチューニング・セットは、EXPORT_AWRプロシージャを使用して、自動ワークロード・リポジトリ(AWR)データとともにエクスポートできます。現在、Oracle RAC環境でパラレルSQLチューニング・セット(STS)取得はサポートされていません。そのため、このパラメータをそのような状況で使用しても効果は得られません。コール・ユーザーは、適切な権限('ADMINISTER SQL TUNING SET')を持っている必要があります。デフォルト値はFALSEです。

sts_cap_interval

カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。

使用上のノート

統合されたリプレイでは、1回のリプレイで複数の取得がリプレイされます。取得ごとに異なるシステムの変更番号(SCN)値が記録されます。このため、統合されたリプレイではSCNベースの同期化はサポートされていません。統合されたリプレイでは、非同期モードとオブジェクトIDベースの同期化のみがサポートされていて、SCNベースの同期化は現在はサポートされていません。

183.3.27 PREPARE_REPLAYプロシージャ

このプロシージャは、データベースの状態をPREPARE FOR REPLAYモードに設定します。

構文

DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (
   synchronization           IN BOOLEAN   DEFAULT TRUE,
   connect_time_scale        IN NUMBER    DEFAULT 100,
   think_time_scale          IN NUMBER    DEFAULT 100,
   think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
   scale_up_multiplier       IN NUMBER    DEFAULT 1,
   capture_sts               IN BOOLEAN   DEFAULT FALSE,
   sts_cap_interval          IN NUMBER    DEFAULT 300,
   rac_mode                  IN NUMBER    DEFAULT GLOBAL_SYNC,
   query_only                IN BOOLEAN   DEFAULT FALSE);

DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (
   synchronization           IN VARCHAR2  DEFAULT 'OBJECT_ID',
   connect_time_scale        IN NUMBER    DEFAULT 100,
   think_time_scale          IN NUMBER    DEFAULT 100,
   think_time_auto_correct   IN BOOLEAN   DEFAULT TRUE,
   scale_up_multiplier       IN NUMBER    DEFAULT 1,
   capture_sts               IN BOOLEAN   DEFAULT FALSE,
   sts_cap_interval          IN NUMBER    DEFAULT 300),
   rac_mode                  IN NUMBER    DEFAULT GLOBAL_SYNC,
   query_only                IN BOOLEAN   DEFAULT FALSE);

パラメータ

表183-24 PREPARE_REPLAYプロシージャのパラメータ

パラメータ 説明

synchronization

リプレイの同期モードを設定します。

  • 'TIME' - 同期は取得時のアクションの実行時間に基づきます(時計ベースの時間)。

  • 'SCN' - 同期は取得時のコミットに基づきます。コミット順序はリプレイ時に保持されます。これがデフォルト・モードです。

  • 'OBJECT_ID' - リプレイされるすべてのアクションは、関連するコミットの実行が完了したにのみ実行されます。関連するコミットとは、取得されたワークロードで指定されたアクションの前に発行され、そのアクションが(明示的または黙示的に)参照している1つ以上のデータベース・オブジェクトを変更したコミットのことです。この同期モードは、リプレイ・アクションが取得中に接したデータと同じデータに接するようにするとともに、同じオブジェクト/表に接しない他のアクションに対してより多くの同時実行を認めるようにします。

    この値は非推奨です。

互換性を保つために、このプロシージャのオーバーロード・バージョンではこのパラメータにブール値を使用します。

  • TRUEは'SCN'を意味します

  • FALSEは'TIME'を意味します

connect_time_scale

ワークロード取得が開始されてから、指定した値でセッションが接続されるまでの経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。例183-1を参照してください。

think_time_scale

同じセッションからの2つの連続したユーザー・コール間の経過時間を変更します。入力は、%値として解釈されます。ワークロードのリプレイ中に同時ユーザー数を増加または削減する場合に使用できます。DEFAULT VALUEは100です。例183-2を参照してください。

think_time_auto_correct

元の取得時よりもリプレイ時にユーザー・コールの完了に時間がかかる場合、コール間の思考時間を適切に自動修正します。DEFAULTTRUEでは、リプレイが取得よりも遅くなった場合に思考時間が短縮されます。例183-3を参照してください。

scale_up_multiplier

リプレイ中に問合せワークロードを拡大する回数を定義します。取得された各セッションは、scale_up_multiplierの値と同じ回数だけ同時にリプレイされます。ただし、各同一リプレイ・セッション・セット内の1つのセッションのみが問合せと更新の両方を実行できます。その他のセッションは問合せのみを実行できます。

capture_sts

このパラメータがTRUEの場合、ワークロード・リプレイと並行してSQLチューニング・セット取得も開始されます。取得されたSQLチューニング・セットは、EXPORT_AWRプロシージャを使用してAWRデータとともにエクスポートできます。現在、Oracle RAC環境でパラレルSQLチューニング・セット(STS)取得はサポートされていません。そのため、このパラメータをそのような状況で使用しても効果は得られません。コール・ユーザーは、適切な権限('ADMINISTER SQL TUNING SET')を持っている必要があります。デフォルト値はFALSEです。

sts_cap_interval

カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。

rac_mode

Oracle Real Application Cluster (Oracle RAC)環境でのリプレイ・オプションを指定します。このパラメータには次の値を使用できます。

  • GLOBAL_SYNC - すべてのOracle RACインスタンスに渡って同期。これはデフォルト値です。

  • PER_INSTANCE_CLIENT - 同期はグローバルに行われ、各WRCクライアントは1つのインスタンスのみに送信されるワークロードの一部を処理します。

  • PER_INSTANCE_SYNC - 同期はローカル(各インスタンス内のみ)で行われ、各WRCクライアントは1つのインスタンスのみに送信されるワークロードの一部を処理します。

query_only

ワークロード取得の読取り専用問合せのみをリプレイします。デフォルト値はFALSEです。

使用上のノート

  • 前提条件:

  • PREPARE_REPLAYプロシージャを実行すると、1つ以上の外部リプレイ・クライアント(WRC)を開始できます。

  • scale_up_multiplierの関連事項:

    • 各同一セッション・セットの1つのリプレイ・セッション(ベース・セッション)が、通常どおり取得からすべてのコールをリプレイします。

    • その他のセッション(拡大セッション)は、読取り専用のコールのみをリプレイします。したがって、データベースを変更したDDL、DMLおよびPL/SQLコールは省略されます。SELECT FOR UPDATE文も省略されます。

    • 拡大セッションの読取り専用コールは適切に同期化され、think_time_scaleconnect_time_scaleおよびthink_time_auto_correctによって定義されたタイミングに従います。また、問合せは適切なコミットを待機します。

    • 拡大セッションに対しては、リプレイ・データもエラー相違記録も生成されません。

    • 同じ取得ファイルをリプレイするベース・セッションや拡大セッションはすべて、同じワークロード・リプレイ・クライアントから接続します。

例183-1 connect_time_scaleパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : Capture was started
12:10 : First session connect  (10m after)
12:30 : Second session connect (30m after)
12:42 : Third session connect  (42m after)

connect_time_scaleが50の場合、セッション接続は次のようになります。

12:00 : Replay was started with 50% connect time scale
12:05 : First session connect  ( 5m after)
12:15 : Second session connect (15m after)
12:21 : Third session connect  (21m after)

connect_time_scaleが200の場合、セッション接続は次のようになります。

12:00 : Replay was started with 200% connect time scale
12:20 : First session connect  (20m after)
13:00 : Second session connect (60m after)
13:24 : Third session connect  (84m after)

例183-2 think_time_scaleパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : User SCOTT connects
12:10 : First user call issued (10m after completion of prevcall)
12:14 : First user call completes in 4mins
12:30 : Second user call issued (16m after completion of prevcall)
12:40 : Second user call completes in 10m
12:42 : Third user call issued ( 2m after completion of prevcall)
12:50 : Third user call completes in 8m

ワークロードのリプレイ時にthink_time_scaleが50の場合、ユーザー・コールは次のようになります。

12:00 : User SCOTT connects
12:05 : First user call issued 5 mins (50% of 10m) after the completion of 
        previous call
12:10 : First user call completes in 5m (takes a minute longer)
12:18 : Second user call issued 8 mins (50% of 16m) after the completion of prev 
        call
12:25 : Second user call completes in 7m (takes 3 minutes less)
12:26 : Third user call issued 1 min  (50% of 2m) after the completion of prev 
        call
12:35 : Third user call completes in 9m (takes a minute longer)

例183-3 think_time_auto_correctパラメータの適用

元のワークロード取得中に次のことが確認されたとします。

12:00 : User SCOTT connects
12:10 : First user call issued (10m after completion of prevcall)
12:14 : First user call completes in 4m
12:30 : Second user call issued (16m after completion of prevcall)
12:40 : Second user call completes in 10m
12:42 : Third user call issued ( 2m after completion of prevcall)
12:50 : Third user call completes in 8m

ワークロードのリプレイ時にthink_time_scaleが100で、think_time_auto_correctがTRUEの場合、ユーザー・コールは次のようになります。

12:00 : User SCOTT connects
12:10 : First user call issued 10 mins after the completion of prev call
12:15 : First user call completes in 5m (takes 1 minute longer)
12:30 : Second user call issued 15 mins (16m minus the extra time of 1m the prev 
        call took) after the completion of prev call
12:44 : Second user call completes in 14m (takes 4 minutes longer)
12:44 : Third user call issued immediately (2m minus the extra time of 4m the prev 
        call took) after the completion of prev call
12:52 : Third user call completes in 8m

183.3.28 PROCESS_CAPTUREプロシージャ

このプロシージャは、capture_dir内で検出されたワークロード取得を処理します。

構文

DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE (
   capture_dir            IN   VARCHAR2,
   parallel_level         IN   NUMBER DEFAULT NULL,
   synchronization        IN   VARCHAR2 DEFAULT 'SCN',
   plsql_mode             IN   VARCHAR2 DEFAULT 'TOP_LEVEL');

パラメータ

表183-25 PROCESS_CAPTUREプロシージャのパラメータ

パラメータ 説明

capture_dir

ワークロード取得ディレクトリ・オブジェクトの名前(大/小文字が区別される)(必須)。ディレクトリ・オブジェクトは、適切な権限を持つ有効なOSディレクトリを指している必要があります。このディレクトリに新しいファイルが追加されます。

parallel_level

取得を並行処理するために使用されるOracleプロセスの数。NULL(デフォルト値)では並列度が自動的に計算され、値が1の場合はシリアル実行が強制的に行われます。

synchronization

ユーザーがリプレイで使用できる同期モードを指定します。

  • 'TIME' - 'TIME'が選択された場合、リプレイで使用できるのは'TIME'同期モードのみです。

    リプレイに'TIME'同期モードを使用する場合、同期は取得時のアクションの実行時間に基づきます(時計ベースの時間)。

  • 'SCN' - 'SCN'が選択された場合、リプレイでは'TIME'または'SCN'同期モードを使用できます。これはデフォルトです。

    リプレイに'SCN'同期モードを使用する場合、同期は取得時のコミットに基づきます。コミット順序はリプレイ時に保持されます。これがデフォルト・モードです。

  • 'OBJECT_ID' - 'OBJECT_ID'が選択された場合、リプレイでは'TIME'SCN'または'OBJECT_ID'同期モードを使用できます。

    リプレイに'OBJECT_ID'同期モードを使用する場合、リプレイされるすべてのアクションは、関連するコミットの実行が完了したにのみ実行されます。関連するコミットとは、取得されたワークロードで指定されたアクションの前に発行され、そのアクションが(明示的または黙示的に)参照している1つ以上のデータベース・オブジェクトを変更したコミットのことです。この同期モードは、リプレイ・アクションが取得中に接したデータと同じデータに接するようにするとともに、同じオブジェクト/表に接しない他のアクションに対してより多くの同時実行を認めるようにします。

    この同期モードは非推奨です。

plsql_mode

PL/SQLの処理モードを指定します。

  • 'TOP_LEVEL' - メタデータはトップ・レベルのPL/SQLコールに対してのみ生成されます。'TOP_LEVEL'がリプレイの唯一のオプションになります。

  • 'EXTENDED' - メタデータはトップ・レベルのPL/SQLコールおよびPL/SQLからコールされたSQLの両方に対して生成されます。新しいディレクトリppe_X.X.X.X (Xは現行のOracleバージョンを表します)が取得ルート・ディレクトリの下に作成されます。取得は、plsql_modeパラメータのこの同じ値で実行されている必要があります。リプレイでは'TOP_LEVEL'または‘EXTENDED’のいずれかを使用できます。

使用上のノート

  • このサブプログラムは、capture_dirにあるワークロードの取得を分析し、指定したワークロード取得のリプレイに必要となる新しいワークロード・リプレイ固有のメタデータ・ファイルを作成します。これは新しいファイルを作成するだけであり、ワークロード取得中に最初に作成されたファイルは変更しません。したがって、このプロシージャは、プロシージャに予期しないエラーが発生したり、ユーザーによって取り消された場合などに、同じ取得ディレクトリで複数回実行できます。

  • このプロシージャが正常に実行されると、capture_dirに存在する取得済ワークロードをリプレイするために、capture_dirをINITIALIZE_REPLAYプロシージャへの入力として使用できます。

  • 特定のデータベース・バージョンでワークロード取得をリプレイする前に、PROCESS_CAPTUREを使用して、同じデータベース・バージョンで取得を処理しておく必要があります。処理済のワークロード取得を作成すると、取得されたワークロードを同じデータベース・バージョンでリプレイする場合に複数回使用できます。

    たとえば、ワークロードfooがOracle Databaseバージョン10.2.0.5のrec_dirで取得されたとします。ワークロードfooをバージョン11.1.0.1でリプレイするには、このワークロードをバージョン11.1.0.1で処理する必要があります。取得ディレクトリrec_dirを処理するには、次のプロシージャを11.1.0.1のデータベースで実行する必要があります。

    DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE('rec_dir');
    

    これで、rec_dirに有効な11.1.0.1の処理済ワークロード取得が含まれます。この処理済ワークロード取得を使用して、ワークロードfooを11.1.0.1のデータベースで必要な回数だけリプレイできます。

183.3.29 REMAP_CONNECTIONプロシージャ

このプロシージャは、ワークロードのリプレイ中にユーザー・セッションが希望の方法でデータベースに接続できるように、取得された接続を新しい接続に再マップします。

構文

DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (
   connection_id         IN  NUMBER,
   replay_connection     IN  VARCHAR2);

DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (
   capture_number        IN  VARCHAR2,
   connection_id         IN  NUMBER,
   replay_connection     IN  VARCHAR2);

パラメータ

表183-26 REMAP_CONNECTIONプロシージャのパラメータ

パラメータ 説明

capture_number

現在のリプレイ・スケジュールの取得を指定します。

connection_id

再マップする接続のID。DBA_WORKLOAD_CONNECTION_MAP.CONN_IDに対応します。

replay_connection

リプレイ中に使用する新しい接続文字列。

使用上のノート

  • REMAP_CONNECTIONをコールする前に、すべてのリプレイ接続文字列がデフォルトでNULLに設定されます。replay_connectionNULLの場合、リプレイ・セッションは、リプレイ・クライアントのランタイム環境によって決定される接続先に接続されます。たとえば、環境変数TNS_ADMINが定義され、ユーザーがREMAP_CONNECTIONプロシージャをコールしない場合、wrc実行可能ファイルは、TNS_ADMINが指すtnsnames.oraファイルで指定されたサーバーに接続します。

  • 有効なreplay_connectionは、接続識別子またはサービス・ポイントを指定する必要があります。接続識別子(ネット・サービス名、データベース・サービス名、ネット・サービスの別名など)を指定する方法、および接続識別子を接続記述子に解決する場合に使用できる命名方法については、『Oracle Database Net Servicesリファレンス』を参照してください。

  • 指定したconnection_idに一致する行がない場合、エラーが戻されます。

  • 後続のワークロード・リプレイで使用されるすべての接続文字列を確認したり、以前のワークロード・リプレイに使用された接続文字列の再マッピングを調べるには、DBA_WORKLOAD_CONNECTION_MAPビューを使用します。

183.3.30 REMOVE_CAPTUREプロシージャ

このプロシージャは、現在のスケジュールから特定の取得を削除します。

構文

DBMS_WORKLOAD_REPLAY.REMOVE_CAPTURE (
   schedule_capture_number    IN     NUMBER);

パラメータ

表183-27 REMOVE_CAPTUREプロシージャのパラメータ

パラメータ 説明

schedule_capture_number

このスケジュール内の取得を識別する一意のID。

183.3.31 REMOVE_SCHEDULE_ORDERINGプロシージャ

このプロシージャは、現在のリプレイ・スケジュールから既存のスケジュール順序を削除します。

schedule_capture_idwaitfor_capture_idを同時に指定することで、以前はADD_SCHEDULE_ORDERINGファンクション(schedule_capture_idwaitfor_capture_id)により追加されたスケジュール順序が構成されます。この順序では、waiting_for_capture_idにより指定された取得のリプレイが終了しないかぎり、schedule_capture_idにより指定された取得のリプレイは開始しません。

構文

DBMS_WORKLOAD_REPLAY.REMOVE_SCHEDULE_ORDERING (
   schedule_capture_id     IN         NUMBER,
   waitfor_capture_id      IN         NUMBER);

パラメータ

表183-28 REMOVE_SCHEDULE_ORDERINGプロシージャのパラメータ

パラメータ 説明

schedule_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします(プロシージャの説明を参照してください)。

waitfor_capture_id

現在のリプレイ・スケジュールに追加された取得をポイントします。

使用上のノート

前提条件:

183.3.32 REPORTファンクション

このファンクションは、規定のワークロード・リプレイに関するレポートを生成します。

構文

DBMS_WORKLOAD_REPLAY.REPORT (
   replay_id          IN NUMBER,
   format             IN VARCHAR2)
  RETURN CLOB;

パラメータ

表183-29 REPORTファンクションのパラメータ

パラメータ 説明

replay_id

レポートが必要なワークロード・リプレイのIDを指定します(必須)。

format

レポートの書式を指定します(必須)。有効な値は次のとおりです。

  • HTML: HTMLバージョンのレポートを生成します。

  • XML: - XMLバージョンのレポートを生成します。

  • TEXT: テキスト・バージョンのレポートを生成します。

戻り値

指定した形式で表示されたレポート本文。CLOBとして戻されます。

183.3.33 RESUME_REPLAYプロシージャ

このプロシージャは、一時停止しているワークロードのリプレイを再開します。

構文

DBMS_WORKLOAD_REPLAY.RESUME_REPLAY;

使用上のノート

前提条件: PAUSE_REPLAYプロシージャに対するコールがすでに発行されています。

183.3.34 REUSE_REPLAY_FILTER_SETプロシージャ

このプロシージャは、指定されたフィルタ・セットの各フィルタを、ADD_SCHEDULE_ORDERINGプロシージャを使用して追加する場合と同じように再利用します。

1回のコールで1つのフィルタ・セットが追加されますが、このフィルタ・セットは、様々な属性に対する個別フィルタのコレクションです。また、新規フィルタ・ルールを追加することや、CREATE_FILTER_SETプロシージャを起動して新規フィルタ・セットを作成する前に既存のフィルタを削除することもできます。

構文

DBMS_WORKLOAD_REPLAY.REUSE_REPLAY_FILTER_SET( 
   replay_dir  IN VARCHAR2,
   filter_set  IN VARCHAR2);

パラメータ

表183-30 REUSE_REPLAY_FILTER_SETプロシージャのパラメータ

パラメータ 説明

replay_dir

関連付けられている既存のフィルタ・セットの取得ID。

filter_set

再利用するフィルタ・セットの名前。

183.3.35 SET_ADVANCED_PARAMETERプロシージャ

このプロシージャは、PREPARE_REPLAYプロシージャで使用されるパラメータ以外に、リプレイに対して詳細なパラメータを設定します。

この詳細パラメータによって、リプレイのより特殊な側面を制御できます。詳細パラメータは、リプレイの完了後にデフォルト値にリセットされます。

構文

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER( 
   pname    IN   VARCHAR2,
   pvalue   IN   VARCHAR2);

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER( 
   pname    IN   VARCHAR2,
   pvalue   IN   NUMBER);

DBMS_WORKLOAD_REPLAY.SET_ADVANCED_PARAMETER( 
   pname    IN   VARCHAR2,
   pvalue   IN   BOOLEAN);

パラメータ

表183-31 SET_ADVANCED_PARAMETERプロシージャのパラメータ

パラメータ 説明

pname

パラメータ名(大/小文字区別)

pvalue

パラメータの値

使用上のノート

使用可能な現行のパラメータおよび値:

'DO_NO_WAIT_COMMITS': (default: FALSE)

このパラメータは、リプレイ・セッションにより発行されるCOMMITNOWAITかどうかを制御します。このパラメータのデフォルト値はFALSEです。その場合、COMMITは取得されたモードで発行されます(waitno-waitbatchno-batch)。このパラメータをTRUEに設定すると、COMMITno-waitモードで発行されます。これは、同時COMMITの量が多いためリプレイが非常に遅くなっている場合に役立ちます。パラメータをTRUEに設定すると、取得に関するリプレイ中に'log file sync'イベントでの待機を大幅に短縮できます。

183.3.36 SET_REPLAY_DIRECTORYプロシージャ

このプロシージャは、複数のワークロード取得を含むディレクトリを現在のリプレイ・ディレクトリとして設定します。

構文

DBMS_WORKLOAD_REPLAY.SET_REPLAY_DIRECTORY (
   replay_dir    IN    VARCHAR2);

パラメータ

表183-32 SET_REPLAY_DIRECTORYプロシージャのパラメータ

パラメータ 説明

replay_dir

ワークロード統合のための取得を含むOSディレクトリの名前。

183.3.37 SET_REPLAY_TIMEOUTプロシージャ

このプロシージャは、リプレイのタイムアウト設定を指定します。リプレイを極度に遅くしたり、リプレイをハングさせる可能性のあるユーザー・コールを中断する目的で使用します。

構文

DBMS_WORKLOAD_REPLAY.SET_REPLAY_TIMEOUT (
   enabled       OUT  BOOLEAN DEFAULT TRUE, 
   min_delay     OUT  NUMBER DEFAULT 10,
   max_delay     OUT  NUMBER DEFAULT 120,
   delay_factor  OUT  NUMBER DEFAULT 8);

パラメータ

表183-33 SET_REPLAY_TIMEOUTプロシージャのパラメータ

パラメータ 説明

enabled

タイムアウト・アクションを有効にする場合はTRUE、無効にする場合はFALSE

min_delay

コール遅延の下限(分単位)。リプレイ・アクションは、遅延がmin_delay以上の場合にのみアクティブ化されます。デフォルトは10です。

max_delay

コール遅延の上限(分単位)。遅延がmax_delayを超えると、タイムアウト・アクションによってORA-15569がスローされます。デフォルトは120です。

delay_factor

min_delaymax_delayの間にあるコール遅延の係数。現行のリプレイの経過時間が取得の経過時間とdelay_factorの積を超えると、タイムアウト・アクションによってORA-15569がスローされます。デフォルトは8です。

使用上のノート

  • このプロシージャは、リプレイ中にいつでもコールできます。

  • コール遅延は、リプレイの経過時間がコールの経過時間より長い場合に、リプレイと取得の間の差異として定義されます。

  • リプレイのタイムアウト・アクションが有効になると、ユーザー・コールは、リプレイ・アクションによって指定された条件を超えて遅延した場合、ORA-15569が発生して終了します。コールとそのエラーは、エラーの相違として報告されます。

  • リプレイのタイムアウトは、次のように動作します。

    • タイムアウト・アクションは、有効にしないと効果はありません。

    • コール遅延(分単位)がmin_delayパラメータで指定された下限未満の場合、タイムアウト・アクションは動作しません。

    • 遅延(分単位)がmax_delayパラメータで指定された上限を超えると、タイムアウト・アクションによってユーザー・コールが中断され、ORA-15569がスローされます。

    • 遅延が下限と上限の間にある状態では、現行のリプレイの経過時間が取得の経過時間とdelay_factorパラメータの積を超える場合にのみ、ORA-15569が発生してユーザー・コールは中断されます。

183.3.38 SET_SQL_MAPPINGプロシージャ

このプロシージャは、データベースのリプレイ操作中にスキップまたは置換するSQL文を指定します。

構文

PROCEDURE SET_SQL_MAPPING (
   schedule_cap_id      IN NUMBER,
   sql_id               IN VARCHAR2,
   operation            IN VARCHAR2,
   replacement_sql_text IN VARCHAR2 DEFAULT NULL);

PROCEDURE SET_SQL_MAPPING (
   sql_id               IN VARCHAR2,
   operation            IN VARCHAR2,
   replacement_sql_text IN VARCHAR2 DEFAULT NULL);

パラメータ

表183-34 SET_SQL_MAPPINGプロシージャのパラメータ

パラメータ 説明

schedule_cap_id

予定されている取得のID

sql_id

取得時のSQL文のSQL識別子

operation

データベース・リプレイ中に指定された文に対して次のいずれかのアクションを実行するように指示します。

  • 'SKIP' - sql_idによって指定されたSQL文をスキップします。

  • 'REPLACE' - sql_idによって指定されるこのSQL文を、replacement_sql_textパラメータで指定されるSQL文で置換します。

使用上のノート

  • replacement_sql_text: operationパラメータに'SKIP'が指定されている場合、このパラメータはNULLです。operationパラメータに'REPLACE'が指定されている場合、このパラメータの値が使用されるSQL文になります。

  • schedule_cap_idは統合リプレイに使用されます。

183.3.39 SET_USER_MAPPINGプロシージャ

このプロシージャは、取得されたユーザーのかわりに、リプレイ中に使用する新規スキーマまたはユーザー名を設定します。

構文

DBMS_WORKLOAD_REPLAY.SET_USER_MAPPING (
   schedule_cap_id      IN NUMBER,
   capture_user         IN VARCHAR2,
   replay_user          IN VARCHAR2);

DBMS_WORKLOAD_REPLAY.SET_USER_MAPPING (
   capture_user         IN VARCHAR2,
   replay_user          IN VARCHAR2);

パラメータ

表183-35 SET_USER_MAPPINGプロシージャのパラメータ

パラメータ 説明

schedule_cap_id

予定されている取得のID

capture_user

ワークロード取得時のユーザー名

replay_user

取得されたユーザーがリプレイ時に再マッピングされるユーザー名

使用上のノート

  • NULLschedule_cap_idは、通常の非統合リプレイに使用されます。

  • リプレイは初期化が必要ですが、このサブプログラムを使用するために準備する必要はありません。

  • replay_userNULLに設定されている場合、マッピングは無効になります。

  • 同じcapture_userを使用して複数回コールした後、常に最後のコールが有効になります。

  • 後続のリプレイ中に有効になるマッピングをすべてリストするには、次のように実行します。

    SELECT * FROM DBA_WORKLOAD_ACTIVE_USER_MAP
    
  • schedule_cap_idを指定しないオーバーロードのバージョンでは、NULLを渡すことによってschedule_cap_id引数のあるものがコールされます。

  • マッピングは、ビューDBA_WORKLOAD_USER_MAPを介して公開された表に格納されます。古いマッピングを削除するには、次のように実行します。

    DELETE * FROM DBA_WORKLOAD_USER_MAP

183.3.40 START_CONSOLIDATED_REPLAYプロシージャ

このプロシージャは、複数の取得のリプレイを開始します。これは、統合されたリプレイのみに使用してください。

構文

DBMS_WORKLOAD_REPLAY.START_CONSOLIDATED_REPLAY;

使用上のノート

前提条件:

  • PREPARE_REPLAYプロシージャに対するコールがすでに発行されています。

  • 取得されたワークロードを正確にリプレイできる十分な数の外部リプレイ・クライアント(WRC)が、すでに起動されています。このような外部リプレイ・クライアントのステータスは、V$WORKLOAD_REPLAY_CLIENTSを使用して監視できます。

183.3.41 START_REPLAYプロシージャ

このプロシージャは、ワークロードのリプレイを開始します。

現在リプレイ・データベースに接続されているすべての外部リプレイ・クライアント(WRC)が自動的に通知され、それらのリプレイ・クライアント(WRC)は取得されたワークロードの発行を開始します。これは、統合されたリプレイのみに使用してください。

構文

DBMS_WORKLOAD_REPLAY.START_REPLAY;

使用上のノート

  • 前提条件:

    • PREPARE_REPLAYプロシージャに対するコールがすでに発行されています。

    • 取得されたワークロードを正確にリプレイできる十分な数の外部リプレイ・クライアント(WRC)が、すでに起動されています。このような外部リプレイ・クライアントのステータスは、V$WORKLOAD_REPLAY_CLIENTSを使用して監視できます。

  • 取得されたワークロードを正確にリプレイするために必要なリプレイ・クライアントの数を決定するには、WRCのCALIBRATEモードを使用します。次に例を示します。

    $ wrc mode=calibrate replaydir=.

183.3.42 USE_FILTER_SETプロシージャ

このプロシージャは、フィルタ・セットを現在のリプレイ・スケジュールの取得に適用します。

このフィルタは、CREATE_FILTER_SETプロシージャをコールして作成されている必要があります。

構文

DBMS_WORKLOAD_REPLAY.USE_FILTER_SET( 
   capture_number   IN    VARCHAR2,
   filter_set       IN    VARCHAR2);

DBMS_WORKLOAD_REPLAY.USE_FILTER_SET( 
   filter_set       IN    VARCHAR2);

パラメータ

表183-36 USE_FILTER_SETプロシージャのパラメータ

パラメータ 説明

capture_number

現在のリプレイ・スケジュールの取得を指定します。

filter_set

フィルタ・セットの名前。

使用上のノート

このフィルタは、CREATE_FILTER_SETプロシージャをコールして作成されている必要があります。