Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトRAT Database Replay機能を利用する(コマンド編)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

11gより追加された「Oracle Real Appliction Testing」は便利そうな機能ではありますが、紹介されている情報はほとんど画面の操作によるものです。
画面での実行でも良いと思うのですが、今回は、コマンドベースで実行してみたいと思います。

今回は、サーバ「orcl11g1」で実行したワークロードをキャプチャし、サーバ「orcl11g2」においてワークロードを再現したいと思います。
「orcl11g1」と「orcl11g2」は全く同じ構成となっています。

【実行した環境】
DB: Oracle 11.1.0.6.0
OS: Oracle Enterprise Linux V5

【実施手順】
1.事前準備
 (1)ワークロード用テーブル作成
 (2)キャプチャ用ディレクトリ作成
2.[orcl11g1] ワークロードの実行とキャプチャ
 (1)ディレクトリオブジェクト作成
 (2)フィルタ設定
 (3)キャプチャ開始
 (4)ワークロード実行
 (5)キャプチャ終了
 (6)AWRエキスポート
3.[orcl11g2] ワークロードのリプレイ
 (1)キャプチャ結果のコピー
 (2)ディレクトリオブジェクト作成
 (3)ワークロードの取得
 (4)リプレイモード準備
 (5)ワークロードのリプレイ
4.結果確認

【詳細手順】

1.事前準備
(1)ワークロード用テーブル作成
事前準備として、サーバ「orcl11g1」と「orcl11g2」の双方のインスタンスに、ワークロードで使用するテスト用テーブルを作成します。

サーバ「orcl11g1」にテスト用テーブルを作成します。
SQL> create table testuser1.testtbl1(col1 number);

同様に、サーバ「orcl11g2」側にもテスト用テーブルを作成します。
SQL> create table testuser1.testtbl1(col1 number);

(2)キャプチャ用ディレクトリ作成
キャプチャ結果を格納するディレクトリを作成します。
oracle[orcl11g1] ~> mkdir /home/oracle/capdir1

同様に、サーバ「orcl11g2」側にもディレクトリを作成します。
oracle[orcl11g2] ~> mkdir /home/oracle/capdir1

2.[orcl11g1] ワークロードの実行とキャプチャ
(1)ディレクトリオブジェクト作成
データベースにディレクトリオブジェクトを作成します。
SQL> CREATE DIRECTORY capdir1 as '/home/oracle/capdir1';

ディレクトリが作成されました。

(2)フィルタ設定
目的のトランザクションのみをキャプチャするために、必要に応じてフィルタ設定を行います。
指定したフィルタは、次のワークロード取得でのみ有効ですので、都度、設定が必要となります。
SQL> select * from dba_workload_filters WHERE STATUS='NEW';;

レコードが選択されませんでした。

SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.ADD_FILTER(
  3   fname => 'Oracle Management Service',
  4   fattribute => 'PROGRAM',
  5   fvalue => 'OMS');
  6  END;
  7  /

PL/SQLプロシージャが正常に完了しました。

SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.ADD_FILTER(
  3   fname => 'Oracle Management Agent',
  4   fattribute => 'PROGRAM',
  5   fvalue => 'EMAgent%');
  6  END;
  7  /

PL/SQLプロシージャが正常に完了しました。

SQL> SELECT * FROM dba_workload_filters WHERE STATUS='NEW';

TYPE      ID STAT NAME                           ATTRIBUT VALUE
-------- --- ---- ------------------------------ -------- ---------- 
CAPTURE    0 NEW  ORACLE MANAGEMENT SERVICE      PROGRAM  OMS
CAPTURE    0 NEW  ORACLE MANAGEMENT AGENT        PROGRAM  EMAgent%

(3)キャプチャ開始
ワークロードのキャプチャを開始します。
SQL> BEGIN
  2  DBMS_WORKLOAD_CAPTURE.START_CAPTURE(
  3   name => 'CAP_TEST1',
  4   dir => 'CAPDIR1',
  5   duration => NULL,
  6   default_action => 'INCLUDE');
  7  END;
  8  /

PL/SQLプロシージャが正常に完了しました。

(4)ワークロード実行
ワークロードとして、事前準備で作成した「testuser1.testtbl1」テーブルへ10万行をINSERTします。
SQL> DECLARE
  2  BEGIN
  3
  4      FOR i IN 1..100000 LOOP
  5          INSERT INTO testuser1.testtbl1 VALUES(i);
  6          COMMIT;
  7      END LOOP;
  8
  9  END;
 10  /

(5)キャプチャ終了
ワークロードのキャプチャを終了します。
SQL> EXEC DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE;

PL/SQLプロシージャが正常に完了しました。

(6)AWRエキスポート
AWRのエキスポートに必要なCAPTURE_IDを取得します。
SQL> SELECT DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO('CAPDIR1') FROM DUAL;

DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO('CAPDIR1')
------------------------------------------------- 
                                              251

AWRのエキスポートを行います。
SQL> EXEC DBMS_WORKLOAD_CAPTURE.EXPORT_AWR(251);

PL/SQLプロシージャが正常に完了しました。

3.[orcl11g2] ワークロードのリプレイ
(1)キャプチャ結果のコピー
キャプチャ結果ファイルをリプレイ先にコピーします。
 ■コピー元
  サーバ:orcl11g1
  ディレクトリ:/home/oracle/capdir1

 ■コピー先
  サーバ:orcl11g2
  ディレクトリ:/home/oracle/capdir1

(2)ディレクトリオブジェクト作成
キャプチャ結果を読み取るため、ディレクトリオブジェクトを作成します。
SQL> CREATE DIRECTORY capdir1 as '/home/oracle/capdir1';

ディレクトリが作成されました。

(3)ワークロードの取得
ワークロードの取得を行います。
SQL> EXEC DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE('CAPDIR1');

PL/SQLプロシージャが正常に完了しました。

(4)リプレイモード準備
データベースの状態を「PREPARE FOR REPLAY」モードに変更します。
SQL> EXEC DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY('REPLAY1','CAPDIR1');

PL/SQLプロシージャが正常に完了しました。

SQL> EXEC DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY;

PL/SQLプロシージャが正常に完了しました。

(5)ワークロードのリプレイ
コマンドラインより、wrcコマンドを実行します。
この際、「Wait for the replay to start」のメッセージを出力し、待機状態となります。
oracle[orcl11g2] ~> wrc REPLAYDIR=/home/oracle/capdir1 USERID=system PASSWORD=oracle;

Workload Replay Client: Release 11.1.0.6.0 - Production on 日 11月 9 23:19:15 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Wait for the replay to start (23:19:15)

別のターミナルより、SQL*Plusを起動し、以下のようにワークロードのリプレイを開始します。
SQL> EXEC DBMS_WORKLOAD_REPLAY.START_REPLAY;

PL/SQLプロシージャが正常に完了しました。

上記を実行すると、wrcコマンドの実行結果に「Replay started」のメッセージが追加され、ワークロードが実行し終わると、「Replay finished」のメッセージが追加され、コマンドが終了します。
oracle[orcl11g2] ~> wrc REPLAYDIR=/home/oracle/capdir1 USERID=system PASSWORD=oracle;

Workload Replay Client: Release 11.1.0.6.0 - Production on 日 11月 9 23:19:15 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Wait for the replay to start (23:19:15)
Replay started (23:20:11)
Replay finished (23:22:28)

4.結果確認
サーバ「orcl11g2」でワークロードにリプレイが行われたかを確認します。
以下の結果より、10万行INSERTのワークロードがリプレイされたことが分かります。
SQL> SELECT COUNT(1) FROM testuser1.testtbl1;

  COUNT(1)
---------- 
    100000


【関連リンク】
既存DBからCREATE DATABASE文を作成する方法
Oracle Performance Tuning - Myth and Legend
Oracleパートナーカンファレンス 秋の陣
Oracle自動インストール
LOB形式の書き出し



以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:RAT Database Replay機能を利用する(GUI編)
次ページへ:RAT Database Replay機能のレポートを生成する(コマンド編)

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。