DBMS_WORKLOAD_CAPTURE
パッケージでは、ワークロード取得システムを構成し、ワークロード取得データを生成します。 この取得のリプレイは、DBMS_WORKLOAD_REPLAYパッケージによって実装されます。
関連項目: データベース・リプレイの詳細は、『Oracle Database Real Application Testingユーザーズ・ガイド』を参照してください。 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
取得インフラストラクチャはインスタンス全体(およびRAC全体)にわたるため、いずれの時点でも生成されるワークロード取得は1つのみです。したがって、いずれかの時点で1つの状態が存在するため、取得インタフェースにステート・オブジェクトをパラメータとして渡す必要はありません。つまり、すべてのサブプログラムはオブジェクトのメソッドにはできませんが、パッケージ全体のPL/SQLサブプログラムとなります。
この項で示すコードには、次の操作に必要な最小限の権限が記述されています。
ディレクトリ・オブジェクトの作成
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つ以上の共通ディレクトリに対してアクセスおよび操作を行うことができる必要があります。また、リプレイを実行しているOSユーザーは、必要に応じてリプレイ・クライアントのホストに取得データをコピーできるように、リプレイ・クライアントで使用されるホスト上でのwrcの実行およびファイル・システムへの適切なアクセスを行うことができる必要があります。
次の表に、このパッケージのすべてのサブプログラムをアルファベット順に示します。
表144-1 DBMS_WORKLOAD_CAPTUREパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
指定したフィルタを追加します。 |
|
特定のワークロード取得IDに対応する |
|
指定したフィルタを削除します。 |
|
特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。 |
|
接続されたすべてのセッションに対して取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにすることによって、ワークロード取得を終了します。 |
|
規定のディレクトリに存在するワークロード取得に関するすべての情報を取得して、 |
|
特定の取得IDに関連付けられたAWRスナップショットをインポートします。 |
|
capture_dir内で検出されたワークロード取得を処理および分析し、指定したワークロード取得のリプレイに必要となる新しいワークロード・リプレイ固有のメタデータ・ファイルを作成します。 |
|
1つ以上の異なるソースを使用して、対象とするワークロード取得に関するレポートを戻します。 |
すべてのインスタンスでワークロード取得を開始します。 |
このプロシージャは、ワークロードのサブセットを取得するフィルタを追加します。
構文
DBMS_WORKLOAD_CAPTURE.ADD_FILTER ( fname IN VARCHAR2 NOT NULL, fattribute IN VARCHAR2 NOT NULL, fvalue IN VARCHAR2 NOT NULL);
DBMS_WORKLOAD_CAPTURE.ADD_FILTER ( fname IN VARCHAR2 NOT NULL, fattribute IN VARCHAR2 NOT NULL, fvalue IN NUMBER NOT NULL);
パラメータ
表144-2 ADD_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
追加するフィルタの名前。後でフィルタが不要になった場合、削除するときに使用できます。(必須) |
|
フィルタを適用する必要がある属性を指定します(必須)。有効な値は、次のとおりです。
|
|
フィルタがアクティブであるとみなされるようにするために、特定の属性と同じとなる値を指定します。 |
使用上の注意
ワークロード取得フィルタは、START_CAPTUREプロシージャへのdefault_action
入力に従って、DEFAULT
INCLUSION
モードまたはDEFAULT
EXCLUSION
モードのいずれかで機能します。
ADD_FILTER
では、次のワークロード取得に影響する新しいフィルタを追加します。フィルタがINCLUSION
フィルタまたはEXCLUSION
フィルタのいずれとみなされるかは、START_CAPTUREプロシージャへのdefault_action入力の値によって決まります。
一度指定したフィルタは、次のワークロード取得でのみ有効です。 後続の取得に同じ一連のフィルタを使用する必要がある場合は、START_CAPTUREプロシージャの実行前に、毎回それらのフィルタを指定する必要があります。
すべてのフィルタは、DBA_WORKLOAD_FILTERS
ビューに示されています。
このプロシージャは、特定のワークロード取得IDに対応するDBA_WORKLOAD_CAPTURES
ビューおよびDBA_WORKLOAD_FILTERS
ビュー内の行を削除します。
構文
DBMS_WORKLOAD_CAPTURE.DELETE_CAPTURE_INFO capture_id IN NUMBER);
パラメータ
表144-3 DELETE_CAPTURE_INFOプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する必要があるワークロード取得のID。 |
使用上の注意
進行中の取得のIDを渡すと、まず最初に、その取得が自動的に停止します。
このプロシージャは、指定したフィルタを削除します。
構文
DBMS_WORKLOAD_CAPTURE.DELETE_FILTER ( filter_name IN VARCHAR2(40) NOT NULL);
パラメータ
このプロシージャは、特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。
構文
DBMS_WORKLOAD_CAPTURE.EXPORT_AWR ( capture_id IN NUMBER);
パラメータ
使用上の注意
このプロシージャは対応するワークロード取得が現行のデータベースで実行され(このことは、DBA_WORKLOAD_CAPTURES
内の対応する行がGET_CAPTURE_INFOファンクションのコールによって作成されていないことを意味します)、元の取得時間に対応するAWRスナップショットが使用可能である場合にのみ機能します。
このプロシージャでは、接続されたすべてのセッションに対してワークロード取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにします。
構文
DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE timneout IN NUMBER DEFAULT 30 reason IN VARCHAR2 DEFAULT NULL);
パラメータ
表144-6 FINISH_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロシージャがタイムアウトになるまでの待機時間を秒単位で指定します。現行のワークロード取得を取り消し、セッションによる取得バッファのフラッシュの実行を待機しない場合は、0を指定します。デフォルト値は30秒です。 |
|
プロシージャをコールする理由を指定します。 理由は、 |
使用上の注意
デフォルトでは、FINISH_CAPTURE
は、タイムアウトになる前に、データベース・クラスタ内のすべてのセッションから正常であることの確認応答を受け取るために30秒待機します。
FINISH_CAPTURE
が確認応答を待機しているときに、ユーザーの要求を実行しているセッションまたは新しいユーザーの要求を受け取ったセッションは、いずれもバッファをフラッシュし、FINISH_CAPTURE
に確認応答を返信します。
FINISH_CAPTURE
の継続期間中、データベース・セッションがアイドル状態になったままの場合(次のユーザー要求を待機している場合)、そのセッションは取得バッファをフラッシュしていない可能性があるため、FINISH_CAPTURE
に確認応答を送信しません。
これを回避するには、FINISH_CAPTURE
の起動中にアイドル状態になったままのセッション(次のユーザー要求を待機しているセッション)をなくします。 FINISH_CAPTURE
を実行する前にデータベース・セッションをクローズするか、またはFINISH_CAPTURE
の期間中にそれらのセッションに新しいデータベース要求を送信します。
このファンクションは、規定のディレクトリに存在するワークロード取得に関するすべての情報を取得してDBA_WORKLOAD_CAPTURES
ビューおよびDBA_WORKLOAD_FILTERS
ビューにインポートし、適切なDBA_WORKLOAD_CAPTURES
.ID
を戻します。
構文
DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO dir IN VARCHAR2) RETURN NUMBER;
パラメータ
表144-7 GET_CAPTURE_INFOファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
すべてのワークロード取得ファイルが保存される |
使用上の注意
規定のディレクトリでの取得を記述した適切な行がDBA_WORKLOAD_CAPTURES
にすでに存在する場合、GET_CAPTURE_INFOファンクションは、その行のDBA_WORKLOAD_CAPTURES
.ID
を戻します。 規定のディレクトリに存在する取得と一致する既存の行が存在しない場合は、DBA_WORKLOAD_CAPTURES
に新しい行が挿入され、その行のID
が戻されます。
EXPORT_AWRプロシージャを使用して元の取得システムからすでにAWRスナップショットがエクスポートされている場合、このプロシージャでは、特定の取得IDに関連付けられたAWRスナップショットがインポートされます。
構文
DBMS_WORKLOAD_CAPTURE.IMPORT_AWR ( capture_id IN NUMBER, staging_schema IN VARCHAR2) RETURN NUMBER;
パラメータ
表144-8 IMPORT_AWRファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
AWRスナップショットがインポートされる取得のID。(必須) |
|
取得ディレクトリから |
戻り値
AWRスナップショットをインポートするときに使用した、ランダムに生成された新しいデータベースIDを戻します。 DBA_WORKLOAD_CAPTURES
ビューのAWR_DBID
列に同じ値があります。
使用上の注意
入力として指定したstaging_schema
に、任意のAWR表と同じ名前(WRM$_SNAPSHOT
、WRH$_PARAMETER
など)を持つ表が含まれている場合、IMPORT_AWR
は失敗します。このような表をstaging_schema
から削除してから、IMPORT_AWR
を起動します。
このプロシージャは、capture_dir
内で検出されたワークロード取得を処理および分析し、指定したワークロード取得のリプレイに必要となる新しいワークロード・リプレイ固有のメタデータ・ファイルを作成します。
構文
DBMS_WORKLOAD_CAPTURE.PROCESS_CAPTURE ( capture_dir IN VARCHAR2, parallel_level IN NUMBER DEFAULT NULL);
パラメータ
表144-9 PROCESS_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ワークロード取得ディレクトリ・オブジェクトの名前(大/小文字が区別される)。ディレクトリ・オブジェクトは、適切な権限を持つ有効なOSディレクトリを指している必要があります。このディレクトリに新しいファイルが追加されます。(必須) |
|
取得のパラレル処理に使用されるOracleプロセスの数。 デフォルト値の |
使用上の注意
このプロシージャは、同じ取得ディレクトリで複数回実行できるため、プロシージャに予期しないエラーが発生した場合またはユーザーによって取り消された場合に役立ちます。
このプロシージャが正常に実行されると、capture_dir
に存在する取得済ワークロードをリプレイするために、capture_dir
をDBMS_WORKLOAD_REPLAYパッケージ内のINITIALIZE_REPLAYプロシージャへの入力として使用できます。
このファンクションは、規定のワークロード取得に関するレポートを生成します。
構文
DBMS_WORKLOAD_CAPTURE.REPORT ( capture_id IN NUMBER, format IN VARCHAR2) RETURN CLOB;
パラメータ
表144-10 REPORTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取得レポートが必要なワークロード取得のID。(必須) このIDは、レポートを生成する必要があるワークロード取得を含むディレクトリに関連します。ワークロード取得を含む、ホスト・システム内の有効なディレクトリを示す有効な |
|
レポートの書式を指定します。 有効な値は、 |
戻り値
指定した形式で表示されたレポート本文。CLOB
として戻されます。
表144-11 Reportファンクションで使用される定数
定数 | 型 | 値 | 説明 |
---|---|---|---|
|
|
'HTML' |
HTMLバージョンのレポートを生成します。 |
|
|
'TEXT' |
テキスト・バージョンのレポートを生成するには、これを |
このプロシージャは、すべてのインスタンスでワークロード取得を開始します。
構文
DBMS_WORKLOAD_CAPTURE.START_CAPTURE ( name IN VARCHAR2, dir IN VARCHAR2, duration IN NUMBER DEFAULT NULL, default_action IN VARCHAR2 DEFAULT 'INCLUDE', auto_unrestrict IN BOOLEAN DEFAULT TRUE);
パラメータ
表144-12 START_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ワークロード取得の名前。後で参照するために、「感謝祭の週末」や「クリスマスの最盛期のワークロード」など、ワークロード取得にラベルを付けることができます。ワークロード取得の名前は、取得されたワークロード・アクションとともに保存されます。(必須) |
|
すべてのワークロード取得ファイルが保存される |
|
ワークロードを取得する必要がある期間(秒単位)を指定するオプションの入力。 |
|
|
|
|
使用上の注意
START_CAPTUREの正常な起動後にデータベースに送信されるすべてのユーザー要求は、期間を指定されている場合、その特定の期間特定のdir
ディレクトリに記録されます。 期間が指定されていない場合は、取得はFINISH_CAPTUREプロシージャが実行されるまで無制限に続行されます。
開始されたワークロード取得では、指定された期間の終了(データベース・インスタンスの停止および起動をまたぐ)、またはFINISH_CAPTURE
の実行のいずれかが先に発生するまで、ユーザー要求を記録し続けます。
ワークロード・フィルタ(ADD_FILTERプロシージャを参照)を使用すると、データベースに送信されたユーザー要求のサブセットのみを取得できます。デフォルトでは、ワークロード・フィルタが定義されていないと、すべてのユーザー要求が取得されます。
Oracle Databaseのバックグラウンド・プロセス(SMON
、PMON
、MMON
など)およびOracle Database Schedulerジョブ(DBMS_SCHEDULERパッケージを参照)から開始されたワークロードは、ワークロード・フィルタの定義に関係なく取得されません。これらのアクティビティは、適切に構成されたリプレイ・システムで自動的に行われる必要があります。
STARTUP
RESTRICT
を使用してRESTRICTED
モードで起動されたすべてのデータベース・インスタンスは、デフォルトでは、START_CAPTUREが正常に起動すると、UNRESTRICTED
になります。このように動作させない場合は、auto_unrestrict
入力パラメータにFALSE
を使用します。
取得されたワークロードのリプレイを開始する前にリプレイ・システムを開始ポイントにリストアできるように、適切に定義されたワークロードの開始ポイントを取得することが重要です。 適切に定義されたワークロード取得の開始ポイントを取得するには、START_CAPTURE
の実行時に、アクティブなユーザー・セッションが存在しないようにします。 継続中のセッションでトランザクションが実行されている場合、これらのトランザクションは後続のデータベース・リプレイでは正しくリプレイされません。これは、START_CAPTURE
の実行後にコールが行われたトランザクションのみがリプレイされるためです。