この章では、本番システムでデータベース・ワークロードを取得する方法について説明します。 データベース・リプレイを使用するための最初の手順は、本番ワークロードの取得です。 データベース・リプレイのアーキテクチャに適したデータベース・ワークロードの取得方法の詳細は、「ワークロードの取得」を参照してください。
内容は次のとおりです。
ワークロードの取得を開始する前に、テスト・システムでデータベースをリストアするための方針を決定する必要があります。ワークロードをリプレイするには、リプレイ・システムのアプリケーション・データの状態を、リプレイの開始時における取得システムのデータの状態と同じにする必要があります。これを行うには、次のいずれかの方法を使用します。
Recovery Manager(RMAN)のDUPLICATE
コマンド
スナップショット・スタンバイ
データ・ポンプのインポートおよびエクスポート
これにより、リプレイ・システムのデータベースを、ワークロードの取得の開始時と同じ運用の状態までリストアできます。
参照:
|
正確な取得を行い、別の環境でのリプレイ時に役立つように、ワークロードを取得する前に適切な計画を行う必要があります。
データベース・ワークロードを取得する前に、次のオプションを慎重に検討してください。
この手順は必須ではありませんが、ワークロードの取得の開始前に進行中のトランザクションおよび依存トランザクションを確実に完了またはロールバックするために、その取得前にデータベースを再起動することをお薦めします。取得の開始前にデータベースを再起動しないと、進行中のトランザクションまたはコミット前のトランザクションは、ワークロードに完全に取得されません。 進行中のトランザクションは、コールが取得された部分のトランザクションしかリプレイされないため、適切にリプレイされません。これにより、ワークロードのリプレイ時に望ましくないデータの相違が発生する可能性があります。不完全なトランザクションに依存する後続のトランザクションでも、リプレイ時にエラーが発生する場合があります。
データベースを再起動する際は、ワークロードの取得期間に先立って本番データベースを停止する適切なタイミング(システムへの影響が最も少ないとき)を決定します。たとえば、ワークロードの取得を午前8:00から開始する必要があるとしても、通常の営業時間中にサービスが停止しないようにするには、この時刻にデータベースを再起動することを避ける必要があります。この場合は、より早い時間にワークロードの取得を開始することを検討します。これによって、システムへの影響がより少ない時刻にデータベースを再起動できます。
データベースを再起動したら、ユーザー・セッションが再接続してワークロードを発行し始める前に、ワークロードの取得を開始することが重要です。そうしないと、そのユーザー・セッションによって実行されたトランザクションは、その後のデータベース・リプレイで適切にリプレイされません。これは、トランザクションのうち、ワークロードの取得を開始した後に実行されたコールの部分しかリプレイされないためです。 この問題を避けるには、SYSユーザーのみにログインとワークロードの取得開始を許可するように、STARTUP RESTRICT
を使用してRESTRICTED
モードでデータベースを再起動します。デフォルトでは、ワークロードの取得が開始されると、RESTRICTED
モードのデータベース・インスタンスは自動的にUNRESTRICTED
モードに切り替わり、ワークロードの取得中は通常の操作を続行できます。
ワークロードの取得は、常に1回しか実行できません。 Oracle Real Application Clusters(RAC)構成の場合、ワークロードの取得はデータベース全体を対象に実行されます。開始前にクリーンな状態でワークロードを取得できるよう、すべてのインスタンスを再起動する必要があります。これを行うには、次の手順を実行します。
すべてのインスタンスを停止します。
インスタンスの1つを再起動します。
ワークロードの取得を開始します。
残りのインスタンスを再起動します。
参照: 起動時にインスタンスへのアクセスを制限する方法については、『Oracle Database管理者ガイド』を参照してください。 |
デフォルトでは、すべてのユーザー・セッションがワークロードの取得時に記録されます。 ワークロード・フィルタを使用すると、ワークロードに含めるユーザー・セッションとワークロードから除外するユーザー・セッションを指定できます。 ワークロード・フィルタには、包含フィルタおよび除外フィルタの2種類があります。ワークロードの取得では、包含フィルタまたは除外フィルタのいずれか一方を使用できます。両方は使用できません。
包含フィルタでは、ワークロードに取得するユーザー・セッションを指定できます。これは、データベース・ワークロードの一部のみを取得する場合に便利です。
除外フィルタでは、ワークロードに取得しないユーザー・セッションを指定できます。 これは、ワークロードで取得する必要のないセッション・タイプ(テスト・システムですでに実行されている可能性があるバックグラウンド・プロセスなど)を除外する場合に便利です。たとえば、ワークロードをリプレイするシステムでOracle Enterprise Manager(EM)を実行している場合、取得したEMセッションをそのシステムでリプレイすると、ワークロードが重複します。この場合、除外フィルタを使用してEMセッションを除外できます。
取得したワークロードを格納する場所を決定し、ディレクトリを設定します。ワークロードの取得を開始する前に、ディレクトリが空であり、ワークロードを格納するために十分なディスク領域があることを確認します。ワークロードの取得中にディレクトリのディスク領域が不足すると、取得が停止します。
Oracle RACの場合、共有ファイル・システムの使用を検討してください。また、インスタンスごとに別々の物理ディレクトリを指定する取得ディレクトリ・パスを設定することもできますが、これらの各ディレクトリに作成された取得ファイルは、ワークロードの取得を事前処理する前に単一のディレクトリに収集する必要があります。
次のタイプのクライアント・リクエストは、ワークロードに取得されません。
SQL*Loaderなどのユーティリティを使用する、外部ファイルからのデータのダイレクト・パス・ロード
共有サーバー・リクエスト(Oracle MTS)
Oracle Streams
アドバンスト・レプリケーション・ストリーム
PL/SQL以外のアドバンスト・キューイング(AQ)
フラッシュバック問合せ
Oracle Call Interface(OCI)ベースのオブジェクト・ナビゲーション
SQL以外のオブジェクト・アクセス
分散トランザクション(取得された分散トランザクションはすべてローカル・トランザクションとしてリプレイされます。)
Oracle Database 10gリリース2では、Oracle Database 11g以上のリリースへのデータベースのアップグレードのテストに使用可能なデータベース・ワークロードの取得に、データベース・リプレイを使用できます。 この機能を使用するには、Oracle Database 10gリリース2が実行されている取得システムで有効にする必要があります。その後、ワークロードが取得可能になります。 Oracle Database 10gリリース2(10.2)の場合、ワークロードの取得機能はデフォルトでは有効になっていません。 PRE_11G_ENABLE_CAPTURE
初期化パラメータを指定することで、この機能を有効または無効にすることができます。
注意: Oracle Database 10gリリース2が実行されているシステムでデータベース・ワークロードを取得する場合は、ワークロードの取得機能の有効化のみが必要です。Oracle Database 11gリリース1以上のリリースが実行されているシステムでデータベース・ワークロードを取得する場合は、ワークロードの取得機能を有効にする必要はありません。この機能はデフォルトで有効になっています。 また、 |
Oracle Database 10gリリース2が実行されているシステムでワークロードの取得機能を有効にするには、SQLプロンプトでwrrenbl.sql
スクリプトを実行します。
@$ORACLE_HOME/rdbms/admin/wrrenbl.sql
wrrenbl.sql
スクリプトによってSQL文ALTER SYSTEM
がコールされ、PRE_11G_ENABLE_CAPTURE
初期化パラメータがTRUE
に設定されます。サーバー・パラメータ・ファイル(spfile)が使用されている場合、PRE_11G_ENABLE_CAPTURE
初期化パラメータは、現在実行しているインスタンス用に変更された後、spfileに記録されます。これによって、データベースを再起動しても、新しい設定が保持されるようになります。spfileが使用されていない場合、PRE_11G_ENABLE_CAPTURE
初期化パラメータは、現在実行しているインスタンス用に変更されるだけであるため、データベースを再起動すると、新しい設定は保持されません。spfileを使用せずに設定を保持するには、初期化パラメータ・ファイル(init.ora)にパラメータを手動で指定する必要があります。
ワークロードの取得を無効にするには、SQLプロンプトでwrrdsbl.sql
スクリプトを実行します。
@$ORACLE_HOME/rdbms/admin/wrrdsbl.sql
wrrdsbl.sql
スクリプトによってSQL文ALTER SYSTEM
がコールされ、PRE_11G_ENABLE_CAPTURE
初期化パラメータがFALSE
に設定されます。サーバー・パラメータ・ファイル(spfile)が使用されている場合、PRE_11G_ENABLE_CAPTURE
初期化パラメータは、現在実行しているインスタンス用に変更され、さらにspfileに記録されます。これによって、データベースを再起動しても、新しい設定が保持されるようになります。spfileが使用されていない場合、PRE_11G_ENABLE_CAPTURE
初期化パラメータは、現在実行しているインスタンス用に変更されるだけであるため、データベースを再起動すると、新しい設定は保持されません。spfileを使用せずに設定を保持するには、初期化パラメータ・ファイル(init.ora)にパラメータを手動で指定する必要があります。
注意: PRE_11G_ENABLE_CAPTURE 初期化パラメータは、Oracle Database 10gリリース2(10.2)でのみ使用できます。その後のリリースでは、このパラメータは無効です。データベースをアップグレードしたら、このパラメータを、サーバー・パラメータ・ファイル(spfile)または初期化パラメータ・ファイル(init.ora)から削除する必要があります。削除しないと、データベースは起動に失敗します。 |
参照: PRE_11G_ENABLE_CAPTURE 初期化パラメータ・ファイルの詳細は、『Oracle Databaseリファレンス』を参照してください。 |
この項では、Enterprise Managerを使用してデータベース・ワークロードを取得する方法について説明します。データベース・ワークロードを取得するための主要ツールは、Oracle Enterprise Managerです。 なんらかの理由でOracle Enterprise Managerを使用できない場合は、APIを使用してデータベース・ワークロードを取得できます。詳細は、「APIを使用したデータベース・ワークロードの取得」を参照してください。
Enterprise Managerを使用してデータベース・ワークロードを取得するには、次の手順を実行します。
「ソフトウェアとサポート」ページの「Real Application Testing」で、「データベース・リプレイ」をクリックします。
「データベース・リプレイ」ページが表示されます。
「タスクに移動」列で、「ワークロードの取得」タスクに対応するアイコンをクリックします。
「ワークロードの取得: 環境の計画」ページが表示されます。
操作を進める前に、すべての前提条件が満たされていることを確認します。
前提条件の詳細は、「データベース・ワークロードの取得の前提条件」を参照してください。
確認した前提条件ごとに、「確認」列のボックスを選択します。すべての前提条件を確認したら、「次へ」をクリックします。
「ワークロードの取得: オプション」ページが表示されます。
ワークロードの取得のオプションを選択します。
「データベースの再起動オプション」で、ワークロードを取得する前にデータベースを再起動するかどうかを選択します。
ワークロードを取得する前にデータベースを再起動し、クリーンな状態でワークロードを取得できるようにすることをお薦めします。そうしないと、ワークロードのリプレイ時に潜在的な問題が発生する可能性があります。詳細は、「データベースの再起動」を参照してください。
「ワークロード・フィルタ」で、「フィルタ・モード」リストの「除外」を選択して除外フィルタを使用するか、「包含」を選択して包含フィルタを使用します。
フィルタを追加するには、「行の追加」をクリックしてフィルタ名、セッション属性タイプおよび属性値を該当するフィールドに入力します。詳細は、「ワークロード・フィルタの定義」を参照してください。
適切なワークロードの取得のオプションを選択したら、「次へ」をクリックします。
「ワークロードの取得: パラメータ」ページが表示されます。
ワークロードの取得のパラメータを定義します。
「ワークロードの取得パラメータ」で、「取得名」フィールドにワークロードの取得の名前を入力します。「ディレクトリ・オブジェクト」リストで、取得したワークロードを格納するディレクトリを選択します。ワークロードの取得がまだ含まれていないディレクトリを選択する必要があります。詳細は、「取得ディレクトリの設定」を選択してください。
新しいディレクトリ・オブジェクトを作成するには、「ディレクトリ・オブジェクトの作成」をクリックします。「ディレクトリ・オブジェクトの作成」ページが表示されます。「名前」フィールドに、ディレクトリ・オブジェクトの名前を入力します。「パス」フィールドに、ディレクトリ・オブジェクトへのパスを入力します。ディレクトリがファイル・システムに存在するかどうかをテストするには、「テスト・ファイルシステム」をクリックします。ディレクトリが存在しない場合は、最初に作成しておく必要があります。
「データベースの停止パラメータ」で、実行するデータベースの停止方法のタイプを選択します。このオプションは、ワークロードの取得前にデータベースを再起動する場合にのみ表示されます。選択可能なデータベースの停止方法のタイプは、次のとおりです。
即時
即時タイプの停止では、データベースの停止前にすべてのアクティブなトランザクションがロールバックされ、すべての接続済ユーザーが切断されます。
トランザクション
トランザクション・タイプの停止では、データベースの停止前にすべてのアクティブなトランザクションが完了され、次に接続済ユーザーが切断されます。
中断
中断タイプの停止では、すべてのアクティブなトランザクションが中断され、即座にデータベースが停止されます。
「データベースの起動パラメータ」で、データベースの再起動に現在のデフォルトのサーバー・パラメータ・ファイル(spfile)を使用するか、特定のパラメータ・ファイル(pfile)を使用するかを選択します。pfileを選択するには、そのpfileの完全修飾名を入力します。このオプションは、ワークロードの取得前にデータベースを再起動する場合にのみ表示されます。
ワークロードの取得のパラメータを定義したら、「次へ」をクリックします。
「ワークロードの取得: スケジュール」ページが表示されます。
「ジョブ・パラメータ」で、次のようにジョブのパラメータを定義します。
「ジョブ名」フィールドにジョブの名前を入力するか、システムによって生成された名前をそのまま使用します。
「説明」フィールドに、オプションでジョブの説明を入力します。
「ジョブ・スケジュール」で、次のようにワークロードの取得の開始時刻と期間を指定します。
「開始」で、ジョブを即時実行する(「即時」を選択)か、ジョブを後で実行する(「後で」を選択して「日付」および「時間」フィールドで希望するタイミングを指定)かを選択します。
「取得期間」で、「期間」を選択して「時間」および「分」フィールドで適切な期間を指定し、ジョブの実行期間を指定します。取得期間を指定しない場合は、「指定されていません」を選択します。取得期間を指定しない場合、ジョブは手動で停止する必要があります。
「ジョブの資格証明」で、次のようにホストおよびデータベースのログイン資格証明を入力します。
「ホスト資格証明」で、ホスト・システムのユーザー名とパスワードを入力します。
「データベース資格証明」で、ワークロードの取得に使用するデータベースのユーザー名とパスワードを入力します。ワークロードを取得するには、DBA
権限が必要です。
「次へ」をクリックします。
「ワークロードの取得: 確認」ページが表示されます。
定義したワークロードの取得に関するジョブ設定を確認します。
ジョブを実行するには、「発行」をクリックします。変更する場合は、「戻る」をクリックします。変更を保存せずにワークロードの取得を取り消す場合は、「取消」をクリックします。
定義したジョブ設定に応じて、次の操作を行います。
ジョブを即時に開始してデータベースを再起動するようにスケジュールした場合、「確認: データベースの再起動」ページが表示されます。
データベースを再起動するには、「はい」をクリックします。
データベースの再起動中は、「情報: データベースの再起動」ページが表示されます。データベースが再起動すると、ワークロードの取得が自動的に開始されます。「リフレッシュ」をクリックします。
「ワークロードの取得の表示」ページが表示されます。
ジョブを即時に開始し、データベースは再起動されないようにスケジュールした場合、ワークロードの取得が自動的に開始され、「ワークロードの取得の表示」ページが表示されます。
ジョブを後で開始するようスケジュールした場合、ジョブが正常に作成されたことを示す確認とともに「データベース・リプレイ」ページが表示されます。
ワークロードの取得が開始されたら、「ワークロードの取得の表示」ページで取得プロセスを監視できます。詳細は、「Enterprise Managerを使用したワークロードの取得の監視」を参照してください。
この項では、Enterprise Managerを使用してワークロードの取得を監視する方法について説明します。ワークロードの取得を監視するための主要ツールは、Oracle Enterprise Managerです。Enterprise Managerを使用すると、次の操作を実行できます。
アクティブなワークロードの取得の監視または停止
完了したワークロードの取得の表示または削除
なんらかの理由でOracle Enterprise Managerが使用できない場合は、ビューを使用してワークロードの取得を監視できます。詳細は、「ビューを使用したワークロードの取得の監視」を参照してください。
内容は次のとおりです。
この項では、Enterprise Managerを使用してアクティブなワークロードの取得を監視する方法について説明します。
アクティブなワークロードの取得を監視するには、次の手順を実行します。
「ソフトウェアとサポート」ページの「Real Application Testing」で、「データベース・リプレイ」をクリックします。
「データベース・リプレイ」ページが表示されます。
「アクティブな取得とリプレイ」で、監視するワークロードの取得を選択し、「表示」をクリックします。
「ワークロードの取得の表示」ページが表示されます。
「サマリー」に、ワークロードの取得に関する情報が表示されます。
ワークロード・プロファイルを表示するには、「ワークロード・プロファイル」タブをクリックします。
「平均アクティブ・セッション」の「アクティブ・セッション」チャートには、取得されたセッション・アクティビティが取得されていないセッション・アクティビティ(バックグラウンド・アクティビティやフィルタ処理されたセッションなど)と比較されてグラフィカルに表示されます。
「比較」には、ワークロードの取得に関する様々な統計(データベース時間、平均アクティブ・セッション、ユーザー・コール、トランザクション、接続、アプリケーション・エラーなど)が表示されます。合計セッション・アクティビティの統計は「合計」列に、取得されたセッション・アクティビティの統計は「取得」列に表示されます。「合計の割合」列には、ワークロードに取得された合計セッション・アクティビティの割合が表示されます。
ワークロードの取得レポートを表示するには、「ワークロードの取得レポートの表示」をクリックします。
ワークロードの取得で使用されたワークロード・フィルタを表示するには、「ワークロード・フィルタ」タブをクリックします。
ワークロードの取得で使用されたワークロード・フィルタに関する詳細(ワークロード・フィルタ名、タイプ、セッション属性、値など)が表示されます。
「データベース・リプレイ」ページに戻るには、「OK」をクリックします。
この項では、Enterprise Managerを使用してアクティブなワークロードの取得を停止する方法について説明します。
アクティブなワークロードの取得を停止するには、次の手順を実行します。
「ソフトウェアとサポート」ページの「Real Application Testing」で、「データベース・リプレイ」をクリックします。
「データベース・リプレイ」ページが表示されます。
「アクティブな取得とリプレイ」で、停止するワークロードの取得を選択し、「停止」をクリックします。
「確認」ページが表示されます。
ワークロードの取得の停止を確認するには、「はい」をクリックします。
ワークロードの取得を停止すると、「AWRデータのエクスポート」ページが表示されます。
自動ワークロード・リポジトリ(AWR)・データをエクスポートするには、「はい」をクリックします。
「ワークロードの取得の表示」ページが表示されます。
AWRデータをエクスポートすると、ワークロードの詳細な分析が可能になります。このデータは、2つのワークロードの取得(またはリプレイ)に対してAWR期間比較レポートを実行する場合には必須です。AWRデータをエクスポートしない場合、「いいえ」をクリックします。AWRデータは、後から「ワークロードの取得履歴の表示」ページで、完了したワークロードの取得からエクスポートできます。
参照: 自動ワークロード・リポジトリについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
この項では、Enterprise Managerを使用して完了したワークロードの取得を管理する方法について説明します。
完了したワークロードの取得を管理するには、次の手順を実行します。
「ソフトウェアとサポート」ページの「Real Application Testing」で、「データベース・リプレイ」をクリックします。
「データベース・リプレイ」ページが表示されます。
「ワークロードの取得履歴の表示」をクリックします。
「ワークロードの取得履歴の表示」ページが表示されます。
ワークロードの取得を削除するには、ワークロードの取得を選択し、「削除」をクリックします。
ワークロードの取得のAWRデータをエクスポートするには、ワークロードの取得を選択し、「AWRデータのエクスポート」をクリックします。
AWRデータをエクスポートすると、ワークロードの詳細な分析が可能になります。このデータは、2つのワークロードの取得(またはリプレイ)に対してAWR期間比較レポートを実行する場合には必須です。
ワークロードの取得の詳細を表示するには、ワークロードの取得を選択し、「表示」をクリックします。
「ワークロードの取得の表示」ページが表示されます。
「サマリー」に、ワークロードの取得に関する情報が表示されます。
ワークロード・プロファイルを表示するには、「ワークロード・プロファイル」タブをクリックします。
「平均アクティブ・セッション」の「アクティブ・セッション」チャートには、取得されたセッション・アクティビティが取得されていないセッション・アクティビティ(バックグラウンド・アクティビティやフィルタ処理されたセッションなど)と比較されてグラフィカルに表示されます。このチャートは、取得期間に使用可能なアクティブ・セッション履歴(ASH)が存在する場合にのみ表示されます。
「比較」には、ワークロードの取得に関する様々な統計(データベース時間、平均アクティブ・セッション、ユーザー・コール、トランザクション、接続、アプリケーション・エラーなど)が表示されます。合計セッション・アクティビティの統計は「合計」列に、取得されたセッション・アクティビティの統計は「取得」列に表示されます。「合計の割合」列には、ワークロードに取得された合計セッション・アクティビティの割合が表示されます。
ワークロードの取得レポートを表示するには、「ワークロードの取得レポートの表示」をクリックします。
ワークロードの取得で使用されたワークロード・フィルタを表示するには、「ワークロード・フィルタ」タブをクリックします。
ワークロードの取得で使用されたワークロード・フィルタに関する詳細(ワークロード・フィルタ名、タイプ、セッション属性、値など)が表示されます。
「データベース・リプレイ」ページに戻るには、「OK」をクリックします。
参照: アクティブ・セッション履歴については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
この項では、APIを使用してデータベース・ワークロードを取得する方法について説明します。 データベース・ワークロードは、Oracle Enterprise Managerを使用して取得することもできます。詳細は、「Enterprise Managerを使用したデータベース・ワークロードの取得」を参照してください。
DBMS_WORKLOAD_CAPTURE
パッケージを使用してデータベース・ワークロードを取得する手順は、次のとおりです。
参照: DBMS_WORKLOAD_CAPTURE パッケージについては、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
この項では、ワークロード・フィルタを追加および削除する方法について説明します。ワークロード・フィルタの使用については、「ワークロード・フィルタの定義」を参照してください。
ワークロードの取得にフィルタを追加するには、次のようにADD_FILTER
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_CAPTURE.ADD_FILTER ( fname => 'user_ichan', fattribute => 'USER', fvalue => 'ICHAN'); END; /
この例では、ADD_FILTER
プロシージャは、user_ichanというフィルタを追加します。このフィルタは、ユーザー名ICHANに属するすべてのセッションを除外するために使用できます。
この例のADD_FILTER
プロシージャでは、次のパラメータを使用します。
fname
: 追加するフィルタの名前を指定する必須パラメータ。
fattribute
: フィルタを適用する属性を指定する必須パラメータ。有効値は、PROGRAM、MODULE、ACTION、SERVICE、INSTANCE_NUMBERおよびUSERです。
fvalue
: フィルタを適用する属性に対応する値を指定する必須パラメータ。一部の属性(モジュールやアクションなど)には、%などのワイルドカードを使用できます。
ワークロードの取得からフィルタを削除するには、次のようにDELETE_FILTER
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_CAPTURE.DELETE_FILTER (fname => 'user_ichan'); END; /
この例では、DELETE_FILTER
プロシージャは、ワークロードの取得からuser_ichanというフィルタを削除します。
この例のDELETE_FILTER
プロシージャは、必須パラメータfname
を使用します。このパラメータは、削除するフィルタの名前を指定します。
ワークロードの取得を開始するには、データベース・ワークロードを取得するための前提条件を満たしておく必要があります。「データベース・ワークロードの取得の前提条件」を参照してください。また、「ワークロードの取得のオプション」に示されているワークロードの取得のオプションを確認する必要があります。
ワークロードの開始ポイントを適切に定義して、取得したワークロードのリプレイを開始する前に、リプレイ・システムをそのポイントにリストアできるようにすることが重要です。ワークロードの取得の開始ポイントを適切に定義するには、ワークロードの取得が開始されたときにアクティブなユーザー・セッションが存在しないことが理想的です。アクティブ・セッションでトランザクションが進行中の場合、それらのトランザクションはその後のデータベース・リプレイで適切にリプレイされません。これは、トランザクションのうち、ワークロードの取得を開始した後に実行されたコールの部分しかリプレイされないためです。この問題を避けるには、ワークロードの取得を開始する前に、STARTUP_RESTRICTED
を使用してRESTRICTED
モードでデータベースを再起動します。ワークロードの取得が開始されると、データベースは自動的にUNRESTRICTED
モードに切り替わり、ワークロードの取得中は通常の操作を続行できます。ワークロードの取得前にデータベースを再起動する方法の詳細は、「データベースの再起動」を参照してください。
ワークロードの取得を開始するには、次のようにSTART_CAPTURE
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'dec06_peak', dir => 'dec06', duration => 600); END; /
この例では、dec06_peak
というワークロードが600秒間取得され、dec06
というデータベース・ディレクトリ・オブジェクトで定義されたオペレーティング・システムに格納されます。
この例のSTART_CAPTURE
プロシージャでは、次のパラメータを使用します。
name
: 取得するワークロードの名前を指定する必須パラメータ。
dir
: 取得したワークロードを格納するディレクトリを指すディレクトリ・オブジェクトを指定する必須パラメータ。
duration
: ワークロードの取得が終了するまでの時間(秒)を指定する任意パラメータ。値を指定しない場合、ワークロードの取得は、FINISH_CAPTURE
プロシージャがコールされるまで続きます。
ワークロードの取得を停止するには、次のようにFINISH_CAPTURE
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE (); END; /
この例では、FINISH_CAPTURE
プロシージャは、ワークロードの取得を終了し、データベースを通常の状態に戻します。
AWRデータをエクスポートすると、ワークロードの詳細な分析が可能になります。このデータは、2つのワークロードの取得(またはリプレイ)に対してAWR期間比較レポートを実行する場合には必須です。
AWRデータをエクスポートするには、次のようにEXPORT_AWR
プロシージャを使用します。
BEGIN DBMS_WORKLOAD_CAPTURE.EXPORT_AWR (capture_id => 2); END; /
この例では、取得IDが2のワークロードの取得に対応するAWRスナップショットがエクスポートされます。EXPORT_AWR
プロシージャでは、必須パラメータcapture_id
を使用します。このパラメータは、AWRスナップショットをエクスポートする取得のIDを指定します。このプロシージャは、対応するワークロードの取得が現在のデータベースで以前に実行されており、元の取得期間に対応するAWRスナップショットが現在も使用可能である場合にのみ動作します。
この項では、ワークロードの取得を監視するために表示できるビューの概要を示します。 ワークロードの取得は、Oracle Enterprise Managerを使用して監視することもできます。詳細は、「Enterprise Managerを使用したワークロードの取得の監視」を参照してください。
これらのビューにアクセスするには、次のDBA権限が必要です。
DBA_WORKLOAD_CAPTURES
ビュー: 現在のデータベースで取得されたワークロードの取得をすべて示します。
DBA_WORKLOAD_FILTERS
ビュー: 現在のデータベースに定義されたワークロードの取得に対して使用されるワークロード・フィルタをすべて示します。
参照: これらのビューについては、『Oracle Databaseリファレンス』を参照してください。 |