この項では、ワークロードの縮小を使用して取得したワークロードを3倍にするシナリオを想定し、データベース統合リプレイでワークロードの縮小を使用する方法を説明します。このシナリオでは、スケールアップ・テストでワークロードの縮小を使用する方法を説明します。ワークロードの縮小の詳細は、「ワークロードの縮小について」を参照してください。
このシナリオでは、次を想定しています。
元のワークロードは午前2時から午後8時まで取得され、3つの取得サブセットに縮小されました。
最初の取得のサブセットは、元のワークロードの午前2時から午後8時の部分です。
2つ目の取得のサブセットは、元のワークロードの午前8時から午後2時の部分です。
3つ目の取得のサブセットは、元のワークロードの午後2時から午後8時の部分です。
リプレイ時にワークロードを3倍にするために、3つの取得サブセットを同時にリプレイすることでワークロードの縮小が実行されます。
このシナリオでワークロードの縮小を実行するには、次の手順を実行します。
スケールアップ・テストを実行する計画のあるリプレイ・システムで、取得したワークロードが保存されているルート・ディレクトリにディレクトリ・オブジェクトを作成します。
CREATE OR REPLACE DIRECTORY cons_dir AS '/u01/test/cons_dir';
元のワークロードが保存されているディレクトリにディレクトリ・オブジェクトを作成します。
CREATE OR REPLACE DIRECTORY cap_monday AS '/u01/test/cons_dir/cap_monday';
取得サブセットを保存する予定のディレクトリにディレクトリ・オブジェクトを作成します。
最初の取得サブセットのディレクトリ・オブジェクトを作成します。
CREATE OR REPLACE DIRECTORY cap_mon_2am_8am AS '/u01/test/cons_dir/cap_monday_2am_8am';
2つ目の取得サブセットのディレクトリ・オブジェクトを作成します。
CREATE OR REPLACE DIRECTORY cap_mon_8am_2pm AS '/u01/test/cons_dir/cap_monday_8am_2pm';
3つ目の取得サブセットのディレクトリ・オブジェクトを作成します。
CREATE OR REPLACE DIRECTORY cap_mon_2pm_8pm AS '/u01/test/cons_dir/cap_monday_2pm_8pm';
取得サブセットを作成します。
午前2時から午前8時の期間の1つ目の取得サブセットを生成します。
EXEC DBMS_WORKLOAD_REPLAY.GENERATE_CAPTURE_SUBSET ('CAP_MONDAY', 'CAP_MON_2AM_8AM', 'mon_2am_8am_wkld', 0, TRUE, 21600, FALSE, 1);
午前8時から午後2時の期間の2つ目の取得サブセットを生成します。
EXEC DBMS_WORKLOAD_REPLAY.GENERATE_CAPTURE_SUBSET ('CAP_MONDAY', 'CAP_MON_8AM_2PM', 'mon_8am_2pm_wkld', 21600, TRUE, 43200, FALSE, 1);
午後2時から午後8時の期間の3つ目の取得サブセットを生成します。
EXEC DBMS_WORKLOAD_REPLAY.GENERATE_CAPTURE_SUBSET ('CAP_MONDAY', 'CAP_MON_2PM_8PM', 'mon_2pm_8pm_wkld', 43200, TRUE, 0, FALSE, 1);
取得サブセットを事前処理します。
EXEC DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE ('CAP_MON_2AM_8AM'); EXEC DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE ('CAP_MON_8AM_2PM'); EXEC DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE ('CAP_MON_2PM_8PM');
ルート・ディレクトリをリプレイ・ディレクトリに設定します。
EXEC DBMS_WORKLOAD_REPLAY.SET_REPLAY_DIRECTORY ('CONS_DIR');
リプレイ・スケジュールを作成し、取得サブセットを追加します。
EXEC DBMS_WORKLOAD_REPLAY.BEGIN_REPLAY_SCHEDULE ('monday_folded_schedule'); SELECT DBMS_WORKLOAD_REPLAY.ADD_CAPTURE ('CAP_MON_2AM_8AM') FROM dual; SELECT DBMS_WORKLOAD_REPLAY.ADD_CAPTURE ('CAP_MON_8AM_2PM') FROM dual; SELECT DBMS_WORKLOAD_REPLAY.ADD_CAPTURE ('CAP_MON_2PM_8PM') FROM dual; EXEC DBMS_WORKLOAD_REPLAY.END_REPLAY_SCHEDULE;
統合リプレイを初期化します。
EXEC DBMS_WORKLOAD_REPLAY.INITIALIZE_CONSOLIDATED_REPLAY ( 'monday_folded_replay', 'monday_folded_schedule');
接続を再マッピングします。
DBA_WORKLOAD_CONNECTION_MAP
ビューに接続マッピング情報を問い合せます。
SELECT schedule_cap_id, conn_id, capture_conn, replay_conn FROM dba_workload_connection_map;
接続を再マッピングします。
EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 1, conn_id => 1, replay_connection => 'inst1'); EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 1, conn_id => 2, replay_connection => 'inst1'); EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 2, conn_id => 1, replay_connection => 'inst2'); EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 2, conn_id => 2, replay_connection => 'inst2'); EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 3, conn_id => 1, replay_connection => 'inst3'); EXEC DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION (schedule_cap_id => 3, conn_id => 2, replay_connection => 'inst3');
replay_connection
パラメータは、テスト・システムに定義したサービスを示します。
接続の再マッピングを確認します。
SELECT schedule_cap_id, conn_id, capture_conn, replay_conn FROM dba_workload_connection_map;
統合リプレイを準備します。
EXEC DBMS_WORKLOAD_REPLAY.PREPARE_CONSOLIDATED_REPLAY;
リプレイ・クライアントを起動します。
必要なリプレイ・クライアントの数を見積もります。
wrc mode=calibrate replaydir=/u01/test/cons_dir/cap_monday_2am_8am wrc mode=calibrate replaydir=/u01/test/cons_dir/cap_monday_8am_2pm wrc mode=calibrate replaydir=/u01/test/cons_dir/cap_monday_2pm_8pm
必要なリプレイ・クライアントの数を判断するために出力を追加します。
統合したワークロードに含まれるワークロード取得ごとに、最低1つのリプレイ・クライアントを開始する必要があります。
このコマンドを繰り返し、必要な数のリプレイ・クライアントを起動します。
wrc username/password mode=replay replaydir=/u01/test/cons_dir
replaydir
パラメータは、ワークロード取得が格納されているルート・ディレクトリに設定されています。
統合リプレイを開始します。
EXEC DBMS_WORKLOAD_REPLAY.START_CONSOLIDATED_REPLAY;