192 DBMS_WORKLOAD_CAPTURE
DBMS_WORKLOAD_CAPTURE
パッケージでは、ワークロード取得システムを構成し、ワークロード取得データを生成します。
この取得のリプレイは、 DBMS_WORKLOAD_REPLAY パッケージによって実装されます。
この章のトピックは、次のとおりです:
参照:
データベース・リプレイの詳細は、『Oracle Database Testingガイド』を参照してください。
192.1 DBMS_WORKLOAD_CAPTUREの概要
取得インフラストラクチャはインスタンス全体(およびOracle Real Application Clusters(Oracle RAC)内)にわたるため、いずれの時点でも生成されるワークロード取得は1つのみです。したがって、いずれかの時点で1つの状態が存在するため、取得インタフェースにステート・オブジェクトをパラメータとして渡す必要はありません。つまり、すべてのサブプログラムはオブジェクトのメソッドにはできませんが、パッケージ全体のPL/SQLサブプログラムとなります。
192.2 DBMS_WORKLOAD_CAPTUREのセキュリティ・モデル
このセキュリティ・モデルは、DBMS_WORKLOAD_CAPTURE
の使用に必要な権限を示します。
この項で示すコードには、次の操作に必要な最小限の権限が記述されています。
-
ディレクトリ・オブジェクトの作成
-
DBMS_WORKLOAD_CAPTURE
およびDBMS_WORKLOAD_REPLAY
パッケージで提供されるインタフェースの操作 -
リプレイ・クライアント・ユーザー(wrc
someuser
/somepassword
またはwrcUSER=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の実行およびファイル・システムへの適切なアクセスを行うことができる必要があります。
192.3 DBMS_WORKLOAD_CAPTUREサブプログラムの要約
次の表に、DBMS_WORKLOAD_CAPTURE
パッケージのサブプログラムをアルファベット順に示します。
表192-1 DBMS_WORKLOAD_CAPTUREパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
指定したフィルタを追加します。 |
|
このプロシージャは、 |
|
特定のワークロード取得IDに対応する |
|
指定したフィルタを削除します。 |
|
このプロシージャは、 |
|
特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。 |
|
接続されたすべてのセッションに対して取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにすることによって、ワークロード取得を終了します。 |
|
規定のディレクトリに存在するワークロード取得に関するすべての情報を取得して、 |
|
特定の取得IDに関連付けられたAWRスナップショットをインポートします。 |
|
1つ以上の異なるソースを使用して、対象とするワークロード取得に関するレポートを戻します。 |
|
すべてのインスタンスでワークロード取得を開始します。 |
192.3.1 ADD_FILTERプロシージャ
このプロシージャは、ワークロードのサブセットを取得するフィルタを追加します。
構文
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);
パラメータ
表192-2 ADD_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
追加するフィルタの名前。後でフィルタが不要になった場合、削除するときに使用できます。(必須) |
|
フィルタを適用する必要がある属性を指定します(必須)。有効な値は、次のとおりです。
|
|
フィルタがアクティブであるとみなされるようにするために、特定の属性と同じとなる値を指定します。 |
使用上のノート
-
ワークロード取得フィルタは、START_CAPTUREプロシージャへの
default_action
入力に従って、DEFAULT
INCLUSION
モードまたはDEFAULT
EXCLUSION
モードのいずれかで機能します。 -
ADD_FILTER
では、次のワークロード取得に影響する新しいフィルタを追加します。フィルタがINCLUSION
フィルタまたはEXCLUSION
フィルタのいずれとみなされるかは、START_CAPTUREプロシージャへのdefault_action入力の値によって決まります。 -
一度指定したフィルタは、次のワークロード取得でのみ有効です。後続の取得に同じ一連のフィルタを使用する必要がある場合は、START_CAPTUREプロシージャの実行前に、毎回それらのフィルタを指定する必要があります。
-
すべてのフィルタは、
DBA_WORKLOAD_FILTERS
ビューに示されています。 -
PDBタイプのフィルタを指定することによって、特定のPDBのワークロードを取得できます。
例
-
デフォルトでは、取得は
INCLUSION
モードで動作し、指定のフィルタの条件を満たすリクエストを除くすべてが記録されます。たとえば、SCOTT
からのリクエストをすべて除外する場合は、取得を開始する前に次のようなフィルタを追加できます。EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user1', 'USER', 'SCOTT');
-
複数のフィルタは、論理和演算子
OR
に従って評価されます。このため、SCOTT
とJOHN
の両方のワークロードを記録する必要がある場合は、さらにフィルタを追加します。EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter user2', 'USER', 'JOHN');
-
CDBでは、次のようなフィルタによって特定のPDBのワークロードを除外します。
EXEC DBMS_WORKLOAD_CAPTURE.ADD_FILTER ('filter pdb workload', 'PDB_NAME', 'CDB1_PDB1');
-
DBMS_APPLICATION_INFOを使用して、データベースに対して発行されたワークロードを識別するには、次のようにします。
DBMS_APPLICATION_INFO.SET_MODULE('ORDER_ENTRY', NULL); -- run some SQL here DBMS_APPLICATION_INFO.SET_ACTION('ORDER_ENTRY_LOG'); -- run logging SQL
-
ワークロードを取得した後、取得内容からロギングSQLを除外する場合は、次のように取得のフィルタを指定します。
DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter logging operations', 'ACTION', 'ORDER_ENTRY_LOG');
-
受注トランザクションの全体をフィルタによって除外するには、次のようなフィルタを定義します。
DBMS_WORKLOAD_CAPTURE.ADD_FILTER('filter order entry', 'MODULE', 'ORDER_ENTRY');
192.3.2 DECRYPT_CAPTUREプロシージャ
このプロシージャは、AES128、AES192、AES256などの各種Advanced Encryption Standardを使用して暗号化されたワークロード取得の機密データを復号化します。
構文
DBMS_WORKLOAD_CAPTURE.DECRYPT_CAPTURE ( src_dir IN VARCHAR2, dst_dir IN VARCHAR2);
パラメータ
表192-3 DECRYPT_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
復号化するワークロード取得を指すディレクトリ・オブジェクト。 このパラメータでは大文字と小文字が区別されます。 |
|
書込み権限があるOSパスを指すディレクトリ・オブジェクト。復号化された取得ファイルはこのディレクトリに書き込まれます このパラメータでは大文字と小文字が区別されます。 |
使用上のノート
このプロシージャは、ソフトウェア・キーストアに依存します。識別子はoracle.rat.database_replay.encryption
です(大/小文字が区別されます)。
192.3.3 DELETE_CAPTURE_INFOプロシージャ
このプロシージャは、特定のワークロード取得IDに対応するDBA_WORKLOAD_CAPTURES
ビューおよびDBA_WORKLOAD_FILTERS
ビュー内の行を削除します。
構文
DBMS_WORKLOAD_CAPTURE.DELETE_CAPTURE_INFO capture_id IN NUMBER);
パラメータ
表192-4 DELETE_CAPTURE_INFOプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する必要があるワークロード取得のID。 |
使用上のノート
進行中の取得のIDを渡すと、まず最初に、その取得が自動的に停止します。
192.3.4 DELETE_FILTERプロシージャ
このプロシージャは、指定したフィルタを削除します。
構文
DBMS_WORKLOAD_CAPTURE.DELETE_FILTER ( filter_name IN VARCHAR2(40) NOT NULL);
パラメータ
表192-5 DELETE_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するフィルタ。 |
使用上のノート
DELETE_FILTER
プロシージャは、以前の取得で使用されなかったフィルタにのみ影響します。したがって、フィルタを削除できるのは、そのフィルタがすべての取得の完了後にADD_FILTERプロシージャによって追加された場合のみです。START_CAPTURE
およびFINISH_CAPTURE
よりも前にADD_FILTER
によって追加されたフィルタは、このサブプログラムによって削除できません。
192.3.5 ENCRYPT_CAPTUREプロシージャ
このプロシージャは、AES128、AES192、AES256などの各種Advanced Encryption Standardを使用して、ワークロード取得の機密データを暗号化します。オンザフライで取得を暗号化するには、START_CAPTUREプロシージャでencryptionパラメータを使用します。
構文
DBMS_WORKLOAD_CAPTURE.ENCRYPT_CAPTURE src_dir IN VARCHAR2, dst_dir IN VARCHAR2, encryption IN VARCHAR2 DEFAULT 'AES256');
パラメータ
表192-6 ENCRYPT_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
暗号化するワークロード取得を指すディレクトリ・オブジェクト。パラメータ値では大/小文字が区別されます。 |
|
書込み権限があるOSパスを指すディレクトリ・オブジェクト。 暗号化された取得ファイルはこのディレクトリに書き込まれます。パラメータ値では大/小文字が区別されます。 |
|
ワークロード取得で機密データが暗号化されるかどうかを指定します。 有効な値は、 デフォルト値は |
使用上のノート
暗号化された取得の場合、ENCRYPT_CAPTURE
プロシージャはソフトウェア・キーストアに依存します。識別子はoracle.rat.database_replay.encryption
です(大/小文字が区別されます)。
192.3.6 EXPORT_AWRプロシージャ
このプロシージャは、特定の取得IDに関連付けられたAWRスナップショットをエクスポートします。
構文
DBMS_WORKLOAD_CAPTURE.EXPORT_AWR ( capture_id IN NUMBER);
パラメータ
表192-7 EXPORT_AWRプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
AWRスナップショットがエクスポートされる取得のID。(必須) |
使用上のノート
このプロシージャは対応するワークロード取得が現行のデータベースで実行され(このことは、DBA_WORKLOAD_CAPTURES
内の対応する行がGET_CAPTURE_INFOファンクションのコールによって作成されていないことを意味します)、元の取得時間に対応するAWRスナップショットが使用可能である場合にのみ機能します。
192.3.7 FINISH_CAPTUREプロシージャ
このプロシージャでは、接続されたすべてのセッションに対してワークロード取得を停止するように信号を送信し、これ以降にデータベースへの要求が取得されないようにします。
構文
DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE timeout IN NUMBER DEFAULT 30 reason IN VARCHAR2 DEFAULT NULL);
パラメータ
表192-8 FINISH_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プロシージャがタイムアウトになるまでの待機時間を秒単位で指定します。現行のワークロード取得を取り消し、セッションによる取得バッファのフラッシュの実行を待機しない場合は、0を指定します。デフォルト値: 30秒 |
|
プロシージャをコールする理由を指定します。理由は、 |
使用上のノート
-
デフォルトでは、
FINISH_CAPTURE
は、タイムアウトになる前に、データベース・クラスタ内のすべてのセッションから正常であることの確認応答を受け取るために30秒待機します。 -
FINISH_CAPTURE
が確認応答を待機しているときに、ユーザーの要求を実行しているセッションまたは新しいユーザーの要求を受け取ったセッションは、いずれもバッファをフラッシュし、FINISH_CAPTURE
に確認応答を返信します。 -
FINISH_CAPTURE
の継続期間中、データベース・セッションがアイドル状態になったままの場合(次のユーザー要求を待機している場合)、そのセッションは取得バッファをフラッシュしていない可能性があるため、FINISH_CAPTURE
に確認応答を送信しません。これを回避するには、
FINISH_CAPTURE
の起動中にアイドル状態になったままのセッション(次のユーザー要求を待機しているセッション)をなくします。FINISH_CAPTURE
を実行する前にデータベース・セッションをクローズするか、またはFINISH_CAPTURE
の期間中にそれらのセッションに新しいデータベース要求を送信します。
192.3.8 GET_CAPTURE_INFOファンクション
このプロシージャは、規定のディレクトリに存在するワークロード取得に関するすべての情報を取得してDBA_WORKLOAD_CAPTURES
ビューおよびDBA_WORKLOAD_FILTERS
ビューにインポートし、適切なDBA_WORKLOAD_CAPTURES
.ID
を戻します。
構文
DBMS_WORKLOAD_CAPTURE.GET_CAPTURE_INFO dir IN VARCHAR2) RETURN NUMBER;
パラメータ
表192-9 GET_CAPTURE_INFOファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
すべてのワークロード取得ファイルが保存される |
使用上のノート
規定のディレクトリでの取得を記述した適切な行がDBA_WORKLOAD_CAPTURES
にすでに存在する場合、GET_CAPTURE_INFOファンクションは、その行のDBA_WORKLOAD_CAPTURES
.ID
を戻します。規定のディレクトリに存在する取得と一致する既存の行が存在しない場合は、DBA_WORKLOAD_CAPTURES
に新しい行が挿入され、その行のID
が戻されます。
192.3.9 IMPORT_AWRファンクション
EXPORT_AWR
プロシージャを使用して元の取得システムからすでにAWRスナップショットがエクスポートされている場合、このプロシージャでは、特定の取得IDに関連付けられたAWRスナップショットがインポートされます。
構文
DBMS_WORKLOAD_CAPTURE.IMPORT_AWR ( capture_id IN NUMBER, staging_schema IN VARCHAR2, force_cleanup IN BOOLEAN DEFAULT FALSE) RETURN NUMBER;
パラメータ
表192-10 IMPORT_AWRファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
AWRスナップショットがインポートされる取得のID。(必須) |
|
取得ディレクトリから |
|
値:
|
戻り値
AWRスナップショットをインポートするときに使用した、ランダムに生成された新しいデータベースIDを戻します。DBA_WORKLOAD_CAPTURES
ビューのAWR_DBID
列に同じ値があります。
使用上のノート
入力として指定したstaging_schema
に、任意のAWR表と同じ名前(WRM$_SNAPSHOT
、WRH$_PARAMETER
など)を持つ表が含まれている場合、IMPORT_AWR
は失敗します。このような表をstaging_schema
から削除してから、IMPORT_AWR
を起動します。
関連トピック
192.3.10 REPORTファンクション
このファンクションは、規定のワークロード取得に関するレポートを生成します。
構文
DBMS_WORKLOAD_CAPTURE.REPORT ( capture_id IN NUMBER, format IN VARCHAR2) RETURN CLOB;
パラメータ
表192-11 REPORTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取得レポートが必要なワークロード取得のID。(必須) これは、レポートを生成する必要があるワークロード取得を含むディレクトリに関連します。ワークロード取得を含む、ホスト・システム内の有効なディレクトリを示す有効な |
|
レポートの書式を指定します。有効な値は、 |
戻り値
指定した形式で表示されたレポート本文。CLOB
として戻されます。
表192-12 Reportファンクションで使用される定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
'HTML' |
HTMLバージョンのレポートを生成します。 |
|
|
'TEXT' |
|
192.3.11 START_CAPTUREプロシージャ
このプロシージャは、すべてのインスタンスでワークロード取得を開始します。
構文
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, capture_sts IN BOOLEAN DEFAULT FALSE, sts_cap_interval IN NUMBER DEFAULT 300, plsql_mode IN VARCHAR2 DEFAULT 'TOP_LEVEL', encryption IN VARCHAR2 DEFAULT NULL);
パラメータ
表192-13 START_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ワークロード取得の名前。後で参照するために、「感謝祭の週末」や「クリスマスの最盛期のワークロード」など、ワークロード取得にラベルを付けることができます。ワークロード取得の名前は、取得されたワークロード・アクションとともに保存されます。(必須) |
|
すべてのワークロード取得ファイルが保存される |
|
ワークロードを取得する必要がある期間(秒単位)を指定するオプションの入力。 |
|
|
|
|
|
このパラメータが SQLセット取得の開始に失敗した場合、ワークロード取得も停止されます。その理由は、 |
|
カーソル・キャッシュからのSQLセット取得の取得間隔を秒単位で指定します。デフォルト値は300です。 |
|
PL/SQLキャプチャ・モードを指定します。
|
|
ワークロード取得で機密データが暗号化されるかどうかを指定します。 有効な値は、次のとおりです。
デフォルト値は |
使用上のノート
-
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
の後に実行されたコールの部分しかリプレイされないためです。 -
暗号化された取得の場合、
START_CAPTURE
プロシージャはソフトウェア・キーストアに依存します。識別子はoracle.rat.database_replay.encryption
です(大/小文字が区別されます)。 -
auto-login
モードでソフトウェア・キーストアを構成する必要があります。そうでないと、取得中にデータベースがバウンスされた場合、取得は自動的に中止されます。