11 データベース・ワークロードの事前処理

ワークロードを取得し、テスト・システムの設定が完了したら、取得したデータを事前処理する必要があります。取得されたワークロードの事前処理によって、ワークロードのリプレイに必要なすべてのメタデータが作成されます。事前処理は、取得したワークロードをリプレイする前に、ワークロードごとに1回行う必要があります。取得したワークロードは、事前処理を行うと、リプレイ・システムで繰り返しリプレイできるようになります。

取得したワークロードを事前処理するには、まず、取得したすべてのデータ・ファイルを取得システムの格納先のディレクトリから、事前処理を実行するインスタンスのディレクトリに移動する必要があります。事前処理は、リソースを大量に必要とするため、次の条件を満たすシステムで実行する必要があります。

  • 本番システムから切り離されている

  • リプレイ・システムと同じバージョンのOracle Databaseが実行されている

Oracle Real Application Clusters(Oracle RAC)では、事前処理用にリプレイ・システムのデータベース・インスタンスを1つ選択します。このインスタンスは、ローカル・ファイル・システムまたは共有ファイル・システムに格納可能な、事前処理を必要とする取得済データ・ファイルにアクセスできる必要があります。取得システムの取得ディレクトリのパスが各インスタンスで別の物理ディレクトリに解決される場合、それらを前処理が実行される1つの取得ディレクトリにマージする必要があります。すべてのディレクトリには、同じディレクトリ・ツリーが必要であり、これらのディレクトリに含まれるすべてのファイルは、取得ディレクトリと同じ相対パスを持つディレクトリに移動される必要があります。

通常、取得したワークロードはリプレイ・システムで事前処理します。取得したワークロードをリプレイ・システムから切り離されたシステムで事前処理する場合は、事前処理完了後に、すべての事前処理済データ・ファイルを、事前処理を行ったシステムの格納先ディレクトリからリプレイ・システムのディレクトリに移動する必要があります。

この章の構成は、次のとおりです。

11.1 Enterprise Managerを使用した単一のデータベース・ワークロードの準備

単一のワークロードの準備には、いくつかのタスクが含まれています。次に例を示します。
  • データベース・リプレイ・タスクの作成

  • リプレイ・タスクからのリプレイの作成

  • テスト・データベースの準備

  • ワークロードの前処理とリプレイ・クライアントのデプロイ

取得したワークロードを事前処理する前に、本番システムでワークロードを取得する必要があります。詳細は、「データベース・ワークロードの取得」を参照してください。

注意:

テスト・データベースの準備が必要なのは、まだ準備を行っていない場合のみです。

この後の各項では、これらのタスクの実行方法について説明します。

11.1.1 データベース・リプレイ・タスクの作成

データベース・リプレイ・タスクを作成する前に、リプレイする取得に取得済ユーザー・コールがあることを確認します。

データベース・リプレイ・タスクを作成するには、次の手順に従います。

  1. データベース・リプレイ・ページで「リプレイ・タスク」タブをクリックし、ツールバーの「作成」をクリックします。

    タスクの作成ページが表示されます。

  2. タスクの名前を指定し、リプレイする取得を選択して、「発行」をクリックします。統合されたリプレイで、2つ以上の取得を選択します。

    データベース・リプレイ・ページが再度表示され、「リプレイ・タスク」タブの表に新しく作成されたリプレイ・タスクが表示されます。

11.1.2 リプレイ・タスクからのリプレイの作成

ここでは、リプレイ・タスクからリプレイを作成する方法について説明します。

リプレイを作成するには、次の手順に従います。

  1. データベース・リプレイ・ページで「リプレイ・タスク」タブをクリックします。

  2. 表の必要なリプレイ・タスクのリンクをクリックします。

    取得のリプレイ・タスク・ページが表示されます。

  3. 「リプレイ」セクションの「作成」をクリックします。

    「リプレイの作成」ポップアップが表示されます。

  4. 必要な名前と説明(オプション)を入力し、「ターゲット・データベース」アイコンをクリックします。

    「検索と選択: ターゲット」ポップアップが表示されます。

  5. 必要なデータベースを選択して、「選択」をクリックします。

  6. 「リプレイの作成」ポップアップの「OK」をクリックします。

    必要なタスクを実行するリンク付きの「タスク・リスト」が含まれるリプレイのデータベース・リプレイ・ページが表示されます。

次の項で説明されている、「タスク・リスト」の最初のタスクに進みます。

11.1.3 テスト・データベースの準備

ここでは、テスト・データベースの準備に含まれているタスクについて説明します。次に例を示します。
  • テスト・データベースの設定

  • テスト・データベースの分離

注意:

このタスクは任意で実行します。テスト・データベースをすでに設定している場合、「ワークロードの前処理とリプレイ・クライアントのデプロイ」に進みます。

次の手順は、各タスクの実行方法を説明しており、どのような順番で実行してもかまいません。

テスト・データベースを設定するには、次の手順に従います。

  1. 特定のリプレイのリプレイ・ページで、「テスト・データベースの設定」タスクのリンクをクリックします。

    テスト・データベースの設定ページが表示されます。

  2. データベースをアップグレードするかどうかを選択し、クラスタ・データベースであるかどうかを示します。

  3. 「既存データベース・ソフトウェアのクローニング」サブタスクの「タスクに移動」アイコンをクリックするか、先にテスト・データベースを作成する場合は「全タスクの有効化」をクリックします。

  4. ウィザードのオンライン・ヘルプに記載されている指示に従います。

    タスクが完了すると、各タスクの「ステータス」列にチェックマークが表示されます。

  5. データベース・リプレイ・ページに戻るには、「OK」をクリックします。

テスト・データベースを分離するには、次の手順に従います。

  1. 特定のリプレイのリプレイ・ページで、「テスト・データベースの分離」タスクのリンクをクリックします。

    外部システムへの参照はリプレイ中に問題の原因になる可能性があることを説明するページが表示されます。

  2. 表示されるリンクを使用して、可能性のある外部システムへの参照を検証し、無効な参照を変更して「OK」をクリックします。

    リプレイ・サマリー・ページが再度表示されます。

11.1.4 ワークロードの前処理とリプレイ・クライアントのデプロイ

リプレイの最後の準備は、ワークロードの処理およびリプレイ・クライアントのデプロイです。次に例を示します。
  • ワークロードの事前処理

    取得済の各ワークロードに対し、ワークロードをリプレイするデータベースのバージョンごとに1回前処理を実行します。ワークロードを前処理したら、テスト・データベースのバージョンがワークロードを前処理したバージョンと同じであるかぎり、それ以降のリプレイ・タスクでは、再度前処理をする必要なくそれをリプレイできます。たとえば、MyReplay1およびMyReplay2という2つのリプレイ名を持つリプレイ・タスクがある場合、MyReplay1を前処理した後は、ディレクトリ・オブジェクトを直接再使用するだけでMyReplay2をリプレイできます。

    前処理には、ワークロード・アナライザ・レポートを使用できます。

  • リプレイ・クライアントのデプロイ

    リプレイ・クライアント・ホストが、「データベース・ターゲット名」フィールドに指定したテスト・データベースのOracleホームにアクセスできる場合は、リプレイ・クライアントを別のリプレイ・クライアント・ホストにデプロイする必要はありません。

次の手順は、各タスクを完了する方法を説明しています。

ワークロードを事前処理するには、次の手順に従います。

  1. 特定のリプレイのリプレイ・ページで、「ワークロードの事前処理」タスクのリンクをクリックします。

    「取得されたワークロードの前処理: ワークロードの検索」ページが表示されます。

  2. 必要なワークロードの場所オプションを選択して、「次」をクリックします。

    注意:

    最初はコピー・オプションを選択する必要があります。

    「取得されたワークロードの前処理: ワークロードのコピー」ページが表示されます。

  3. 必要な資格証明およびワークロードのコピーおよび前処理先の新しい場所を指定し、「次」をクリックします。

    システムは処理中に進捗状況の棒グラフを表示して応答し、コピー操作が終了した後に取得されたワークロードの前処理: ディレクトリを選択ページが表示されます。

  4. ディレクトリ・オブジェクトを指定するかワークロードが含まれる場所をポイントする新しいディレクトリ・オブジェクトを作成します。前の手順でワークロードを新しい場所にコピーするよう選択をした場合、ディレクトリ・オブジェクトが「ワークロード・ディレクトリの新しい場所」で指定した正しい場所を確実にポイントするようにします。

    システムは取得サマリーを表示して応答します。「詳細の取得」セクションを展開して、ワークロード・プロファイルとワークロード・フィルタを表示できます。統合されたリプレイに取得サマリーは表示されません。

    「次へ」をクリックして、「取得されたワークロードの前処理: スケジュール」ページを表示します。

  5. 前処理ジョブのスケジュールを入力します。

    1. 必要な独自のジョブ名を指定するか、システム提供の名前をそのまま使用します。ジョブ・システムは、自動的に大文字でジョブに名前を付けます。

    2. ジョブを発行後すぐに実行するか、または後で実行するかを示します。

    3. ホスト資格証明を指定します。これは、オペレーティング・システムでの前処理ジョブの実行に使用されます。

    「次へ」をクリックし、「取得されたワークロードの前処理: 確認」ページを表示します。

  6. 意図したとおりに設定されていることを確認して、「発行」をクリックします。

    データベース・リプレイ・ページが表示され、入力にエラーがないものと見なされ、ページ上部の確認メッセージに「ワークロードの準備ジョブJOBNAMEは正常に作成されました。」と表示されます。

  7. 「JOBNAME」リンクをクリックして、ジョブのステータスを確認します。「ワークロード・リプレイ」タスクに進む前に、ジョブが完了している必要があります。

    注意:

    試行後に期間比較レポートを生成するには、テスト・データベースに追加のPL/SQLパッケージをインストールする必要があるという内容のメッセージが、「タスク・リスト」に表示される場合があります。「ワークロード・リプレイ」タスクに進む前に、この問題を解決するには、「PL/SQLパッケージのインストール」をクリックします。

    ヒント:

    取得したワークロードを事前処理したら、テスト・システムでリプレイできます。詳細は、「データベース・ワークロードのリプレイ」を参照してください。

リプレイ・クライアントをデプロイするには、次の手順に従います。

  1. 特定のリプレイのリプレイ・ページで、「リプレイ・クライアントのデプロイ」タスクのリンクをクリックします。

    リプレイ・クライアントのデプロイ・ページが表示されます。

  2. 関連するワークロード取得に定義されているデフォルト値をそのまま使用するか、それらの値をオーバーライドして「続行」をクリックします。

    Oracleデータベース・クライアントのプロビジョニング・ウィザードが表示されます。

  3. ウィザードの各ステップのオンライン・ヘルプに記載されている指示に従います。

    「確認」ステップで「発行」をクリックすると、設定したスケジュールに従ってデプロイメント・プロシージャが実行され、リプレイ・サマリー・ページが再度表示されます。

11.2 APIを使用したデータベース・ワークロードの事前処理

この項では、DBMS_WORKLOAD_REPLAYパッケージを使用して取得したワークロードを事前処理する方法について説明します。また、「Enterprise Managerを使用した単一のデータベース・ワークロードの準備」で説明されているように、Oracle Enterprise Managerを使用して取得済ワークロードを前処理することも可能です。
取得したワークロードを事前処理する前に、本番システムでワークロードを取得する必要があります。詳細は、「データベース・ワークロードの取得」を参照してください。

取得済のワークロードを処理するには、次の手順に従います。

  • PROCESS_CAPTUREプロシージャを使用します。

    BEGIN
      DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE (capture_dir => 'dec06',
                                 plsql_mode => 'extended');
    END;
    /
    

    この例では、dec06ディレクトリに格納されている取得済ワークロードが事前処理されます。

    この例のPROCESS_CAPTUREプロシージャでは、必須パラメータcapture_dirを使用します。このパラメータは、事前処理する取得済ワークロードが含まれているディレクトリを指定します。

    オプションのplsql_modeパラメータで、PL/SQLの処理モードを指定します。

    plsql_modeパラメータには次の2つの値を設定できます。

    • top_level: メタデータは最上位レベルのPL/SQLコールに対してのみ生成されます。これはリプレイの唯一のオプションになります。これがデフォルト値です。

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

      extended値は、plsql_modeパラメータをextendedに設定して取得されたワークロードにのみ設定できます。extendedを指定しても、取得がextendedモードで実行されなかった場合は、エラー・メッセージが表示されます。

注意:

暗号化されたワークロード取得でPROCESS_CAPTUREを実行するには、識別子oracle.rat.database_replay.encryption (大/小文字を区別)を使用してパスワードを設定する必要があります。パスワードはソフトウェア・キーストアに格納されます。ワークロード取得が暗号化されているかどうかは、DBA_WORKLOAD_CAPTURESビューから確認できます。

ヒント:

取得したワークロードを事前処理したら、テスト・システムでリプレイできます。詳細は、「データベース・ワークロードのリプレイ」を参照してください。

関連項目:

11.2.1 ワークロード・アナライザのコマンドライン・インタフェースの実行

ワークロード・アナライザは、ワークロード取得ディレクトリを分析して、取得ワークロードのうち、データ不足、ワークロード取得中に発生したエラー、データベース・リプレイによってサポートされていない使用機能などのために正確にリプレイできない部分を識別するJavaプログラムです。ワークロード分析の結果は、分析対象である取得ディレクトリ内に置かれるwcr_cap_analysis.htmlという名前のHTMLレポートに保存されます。エラーを防ぐことができる場合、ワークロード分析レポートにはリプレイ前に実行できる予防措置が示されます。エラーを修正できない場合はワークロード分析レポートにそのエラーに関する記述が加えられるので、リプレイ時にそのエラーを考慮しておくことができます。ワークロード・アナライザの実行はデフォルトのオプションであり、実行することを強く推奨します。

注意:

Oracle Enterprise Managerを使用してワークロードの取得を事前処理する場合は、コマンドライン・インタフェースでワークロード・アナライザを実行する必要はありません。Oracle Enterprise Managerでは、ワークロードの事前処理の一環としてワークロード・アナライザを実行できます。

ワークロード・アナライザは、Oracle Database Enterprise Editionリリース11.2.0.2以上が実行されているシステムの$ORACLE_HOME/rdbms/jlib/ディレクトリにある2つのJARファイル(dbranalyzer.jarおよびdbrparser.jar)で構成されます。ワークロード・アナライザには、Java 1.5以上および$ORACLE_HOME/jdbc/lib/ディレクトリにojdbc6.jarファイルが必要です。

ワークロード・アナライザを実行するには、次の手順に従います。

  1. コマンドライン・インタフェースで、1行で次のjavaコマンドを実行します。

    java -classpath
    $ORACLE_HOME/jdbc/lib/ojdbc6.jar:$ORACLE_HOME/rdbms/jlib/dbrparser.jar:
    $ORACLE_HOME/rdbms/jlib/dbranalyzer.jar:
    oracle.dbreplay.workload.checker.CaptureChecker
    <capture_directory> <connection_string>
    

    capture_directoryパラメータには、取得ディレクトリのオペレーティング・システム・パスを入力します。このディレクトリには、ワークロード取得のAWRデータもエクスポートされている必要があります。connection_stringパラメータには、リリース11.1以上のOracle Databaseの接続文字列を入力します。

    このコマンドの例は次のとおりです。

    java -classpath
    $ORACLE_HOME/jdbc/lib/ojdbc6.jar:$ORACLE_HOME/rdbms/jlib/dbrparser.jar:
    $ORACLE_HOME/rdbms/jlib/dbranalyzer.jar:
    oracle.dbreplay.workload.checker.CaptureChecker /scratch/capture
    jdbc:oracle:thin:@myhost.mycompany.com:1521:orcl
    
  2. 求めらたら、ターゲット・データベースのDBMS_WORKLOAD_CAPTUREパッケージのEXECUTE権限およびターゲット・データベースのSELECT_CATALOGロールを持つデータベース・ユーザーのユーザー名とパスワードを入力します。