10 データベース・ワークロードの取得
この章の構成は、次のとおりです。
関連項目:
データベース・リプレイのアーキテクチャに適したデータベース・ワークロードの取得方法の詳細は、「ワークロードの取得」を参照してください
10.1 データベース・ワークロードの取得の前提条件
-
Recovery Manager(RMAN)の
DUPLICATE
コマンド -
スナップショット・スタンバイ
-
データ・ポンプのインポートおよびエクスポート
これにより、リプレイ・システムのデータベースを、ワークロードの取得の開始時と同じ運用の状態までリストアできます。
データベースがDatabase Vaultにより保護されている場合、データベース・リプレイを使用するには、Database Vault環境においてDBMS_WORKLOAD_CAPTURE
およびDBMS_WORKLOAD_REPLAY
パッケージの使用が承認されている必要があります。
関連項目:
-
Database Vault環境でのデータベース・リプレイの使用の詳細は、『Oracle Database Vault管理者ガイド』を参照してください。
-
RMANを使用したデータベースの複製については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
-
スナップショット・スタンバイ・データベースの管理の詳細は、Oracle Data Guard概要および管理を参照
-
データ・ポンプの使用の詳細は、Oracle Databaseユーティリティを参照
10.2 取得ディレクトリの設定
Oracle RACの場合、共有ファイル・システムの使用を検討してください。また、インスタンスごとに別々の物理ディレクトリを指定する1つの取得ディレクトリ・パスを設定することもできますが、これらの各ディレクトリに作成されたファイルは、単一のディレクトリに統合する必要があります。Enterprise Managerでは、Oracle RACデータベースに対する取得については、共有ファイル・システムで構成されたOracle RACのみをサポートしています。事前処理に使用できるようにするには、(取得ファイルのみでなく)各インスタンスのローカル取得ディレクトリのコンテンツ全体を共有ディレクトリにコピーする必要があります。たとえば、次のように想定します。
-
host1
およびhost2
という名前の2つのデータベース・インスタンスをLinuxのOracle RAC環境で実行します。 -
両方のインスタンスで、
/$ORACLE_HOME/rdbms/capture
に解決される、CAPDIR
という取得ディレクトリ・オブジェクトを使用しています。 -
/nfs/rac_capture
にある共有ディレクトリを使用しています。
各ホストにログインして次のコマンドを実行する必要があります。
cp -r /$ORACLE_HOME/rdbms/capture/* /nfs/rac_capture
両方のインスタンスでこの処理を実行すると、/nfs/rac_capture
共有ディレクトリで前処理またはマスキングが可能になります。
10.3 ワークロードの取得のオプション
正確な取得を行い、別の環境でのリプレイ時に役立つように、ワークロードを取得する前に適切な計画を行う必要があります。
10.3.1 データベースの再起動
そのため、データベースを再起動する前に、本番データベースを停止する適切なタイミング(システムへの影響が最も少ない時間)について検討するようにしましょう。たとえば、ワークロードの取得を午前8:00から開始しようと思った場合でも、営業時間中にサービスが停止することを避けるためには、その時間帯にデータベースが再起動されないようにする必要があります。そのような場合は、ワークロードの取得開始をもっと早い時間にずらすなどして、なるべく不都合のない時間にデータベースが再起動されるようにしましょう。
データベースを再起動したら、ユーザー・セッションが再接続してワークロードを発行し始める前に、ワークロードの取得を開始することが重要です。そうしないと、そのユーザー・セッションによって実行されたトランザクションは、その後のデータベース・リプレイで適切にリプレイされません(これは、トランザクションのうち、ワークロードの取得を開始した後に実行されたコールの部分しかリプレイされないためです)。この問題を避けるには、SYS
ユーザーのみにログインとワークロードの取得開始を許可するように、STARTUP RESTRICT
を使用してRESTRICTED
モードでデータベースを再起動します。デフォルトでは、ワークロードの取得が開始されると、RESTRICTED
モードのデータベース・インスタンスは自動的にUNRESTRICTED
モードに切り替わり、ワークロードの取得中は通常の操作を続行できます。
ワークロードの取得は、常に1回しか実行できません。Oracle Real Application Clusters(Oracle RAC)構成の場合、ワークロードの取得はデータベース全体を対象に実行されます。いずれかのOracle RACノードで取得を有効にすると、すべてのデータベース・インスタンスのワークロードの取得が開始されます(ワークロードを取得するプロセスは、Oracle RACを認識します)。必須ではありませんが、ワークロードの取得が開始される前にOracle RAC構成のすべてのインスタンスを再起動し、進行中のトランザクションは取得されないようにすることをお薦めします。
ワークロードの取得前にOracle RAC構成のすべてのインスタンスを再起動するには、次の手順を実行します。
- すべてのインスタンスを停止します。
- すべてのインスタンスを再起動します。
- ワークロードの取得を開始します。
- アプリケーションを接続し、ユーザー・ワークロードを再起動します。
関連項目:
-
起動時のインスタンスへのアクセス制限の詳細は、Oracle Database管理者ガイドを参照
10.3.2 ワークロードの取得時のフィルタの使用
包含フィルタでは、ワークロードに取得するユーザー・セッションを指定できます。これは、データベース・ワークロードの一部のみを取得する場合に便利です。
除外フィルタでは、ワークロードに取得しないユーザー・セッションを指定できます。これは、インフラストラクチャ(Oracle Enterprise Manager(EM)、Statspackなど)を監視するセッションやテスト・システムですでに実行中のプロセスなど、ワークロードで取得する必要がないセッション・タイプを除外する場合に便利です。たとえば、ワークロードをリプレイするシステムでEMを実行している場合、取得したEMセッションをそのシステムでリプレイすると、ワークロードが重複します。この場合、除外フィルタを使用してEMセッションを除外できます。
10.4 ワークロードの取得の制限事項
特定のタイプのユーザー・セッションおよびクライアント・リクエストは、ワークロードに取得されてもデータベース・リプレイによってサポートされない場合があります。これらのセッションおよびリクエストのタイプをワークロードで取得すると、ワークロード・リプレイ中にエラーが発生する場合があります。
次のタイプのユーザー・セッションおよびクライアント・リクエストはデータベース・リプレイによってサポートされません。
-
SQL*Loaderなどのユーティリティを使用する、外部ファイルからのデータのダイレクト・パス・ロード
-
PL/SQL以外のアドバンスト・キューイング(AQ)
-
フラッシュバック問合せ
-
Oracle Call Interface(OCI)ベースのオブジェクト・ナビゲーション
-
SQL以外のオブジェクト・アクセス
-
分散トランザクション
取得された分散トランザクションはすべてローカル・トランザクションとしてリプレイされます。
-
XAトランザクション
XAトランザクションは取得もリプレイもされません。すべてのローカル・トランザクションは取得されます。
-
JAVA_XA
トランザクションワークロードで
JAVA_XA
パッケージが使用される場合、JAVA_XA
ファンクション・コールおよびプロシージャ・コールは通常のPL/SQLワークロードとして取得されます。ワークロード・リプレイ中の問題を回避するには、リプレイを正常に完了できるように、リプレイ・システム上のJAVA_XA
パッケージの削除を検討してください。 -
データベース常駐接続プーリング(DRCP)
-
OUTバインドを使用したワークロード
-
同期モードを
OBJECT_ID
に設定したマルチスレッド・サーバー(MTS)および共有サーバーのセッション -
移行されたセッション
移行されたセッションのワークロードは取得されます。ただし、ユーザーのログインやセッションの移行操作は取得されません。ユーザー・ログインやセッションの移行が有効でない場合、ワークロードが不正なユーザーによってリプレイされる可能性があるため、リプレイでエラーが発生する可能性があります。
通常、データベース・リプレイでは、これらのタイプのサポートされていないユーザー・セッションおよびクライアント・リクエストの取得は行われません。取得された場合でも、データベース・リプレイによってリプレイされることはありません。そのため、サポートされていないユーザー・セッションおよびクライアント・リクエストを手動で除外する必要は、通常はありません。これらが取得され、リプレイ中にエラーが発生することがわかった場合は、ワークロードからこれらを除外するワークロード取得フィルタの使用を検討してください。
関連項目:
-
ワークロード取得フィルタの使用の詳細は、「ワークロード取得でのフィルタの使用」を参照してください
-
ワークロード・リプレイ・フィルタの使用の詳細は、「ワークロード・リプレイでのフィルタの使用」を参照してください
10.5 ワークロードの取得機能の有効化および無効化
PRE_11G_ENABLE_CAPTURE
初期化パラメータを指定することで、この機能を有効または無効にすることができます。
注意:
Oracle Database 10gリリース2が実行されているシステムでデータベース・ワークロードを取得する場合は、ワークロードの取得機能の有効化のみが必要です。
Oracle Database 11gリリース1以上が実行されているシステムでデータベース・ワークロードを取得する場合は、ワークロードの取得機能はデフォルトで有効になっているため、この機能を有効にする必要はありません。また、PRE_11G_ENABLE_CAPTURE
初期化パラメータはOracle Database 10gリリース2(10.2)のみで有効で、その後のリリースでは使用できません。
Oracle Database 10gリリース2が実行されているシステムでワークロードの取得機能を有効にするには、SQLプロンプトでwrrenbl.sql
スクリプトを実行します。
@$ORACLE_HOME/rdbms/admin/wrrenbl.sql
wrrenbl.sql
スクリプトでは、ALTER SYSTEM
SQL文がコールされ、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
スクリプトでは、ALTER SYSTEM
SQL文がコールされ、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
)からパラメータを削除する必要があり、削除しないと、データベースは起動に失敗します。
10.6 Enterprise Managerの権限およびロール
次の項で説明する2つのセキュリティ・ロールを使用すると、データベース・リプレイ・エンティティに関連する権限の付与および取消しが簡単になります。
10.6.1 データベース・リプレイ・ビューア・ロール
データベース・リプレイ・ビューア・ロールは、データベース・リプレイ・ビューア(リソース・タイプ)権限で構成されています。
10.6.2 データベース・リプレイ・オペレータ・ロール
データベース・リプレイ・オペレータ・ロールには、次の権限があります。
-
データベース・リプレイ・オペレータ(リソース・タイプ権限)
-
名前付き資格証明の新規作成(リソース・タイプ権限)
-
新規ジョブの作成(リソース・タイプ権限)
-
表示可能な任意のターゲットに接続(ターゲット・タイプ権限)
-
任意の場所でのコマンドの実行(ターゲット・タイプ権限)
データベース・ターゲットでワークロードを取得またはリプレイする場合、Enterprise Managerユーザーにはデータベース・リプレイ・オペレータ・ロールのすべての権限に加え、ターゲット・データベースのターゲット・オペレータ権限が必要です。
10.7 Enterprise Managerを使用したデータベース・ワークロードの取得
この項では、Enterprise Managerを使用してデータベース・ワークロードを取得する方法について説明します。データベース・ワークロードを取得するための主要ツールは、Oracle Enterprise Managerです。
ヒント:
Oracle Enterprise Managerを使用できない場合は、「APIを使用したデータベース・ワークロードの取得」で説明されているように、APIを使用してデータベース・ワークロードを取得できます。
Enterprise Managerを使用してデータベース・ワークロードを取得するには、次の手順を実行します。
ヒント:
本番システムでワークロードを取得したら、取得したワークロードを事前処理する必要があります。詳細は、「データベース・ワークロードの事前処理」を参照してください。
10.8 複数のデータベースからのワークロードの同時取得
同時取得とは、複数のデータベースからワークロードを同時に取得することです。
データベース・リプレイ・ワークロードを同時に取得するには、次の手順に従います。
-
Enterprise Manager Cloud Controlコンソールの「エンタープライズ」メニューで、「クオリティ管理」、「データベース・リプレイ」の順に選択します。
「データベース・ログイン」ページが表示されたら、管理者権限のあるユーザーとしてログインします。
「データベース・リプレイ」ページが表示されます。
-
データベース・リプレイ・ページの「取得済ワークロード」タブをクリックし、ツールバーの「作成」をクリックします。
取得の作成: 環境の計画ページが表示されます。
-
このページに説明されているどちらの前提条件も満たしていることを確認してから、両方のチェック・ボックスを選択し、「次へ」をクリックします。
取得の作成: データベース・ページが表示されます。
ヒント:
前提条件の詳細は、「データベース・ワークロードの取得の前提条件」を参照してください。
-
「追加」をクリックします。
「追加」ポップアップが表示されます。
-
取得名と説明(オプション)を入力し、「ターゲット・データベース」検索アイコンをクリックします。
「検索と選択: ターゲット」ポップアップが表示されます。
-
リストからターゲット・データベースを選択し、「選択」をクリックします。
「データベース資格証明」および「データベース・ホスト資格証明」にセクションが追加された状態で、「追加」ポップアップが再度表示されます。
-
データベース資格証明、データベース・ホスト資格証明、データベース取得の中間記憶域の場所を入力し、「OK」をクリックします。
-
取得後、中間記憶域の場所を最終の記憶域の場所として使用しないかぎり、ファイルは記憶域の場所にコピーされます。
これで、選択したターゲット・データベースが、本番データベースの選択表のデータベース・リストに表示されます。
-
-
同時取得する別のデータベースを追加します。
-
ワークロードの取得のオプションを選択します。
-
「SQLパフォーマンス・アナライザ」セクションで、ワークロードの取得時に、SQL文をSQLチューニング・セットに取得するかどうかを選択します。
データベースのリプレイでは、変更がシステム全体に及ぼす影響が分析されますが、SQLパフォーマンス・アナライザとともにSQLチューニング・セットを使用すれば、変更がSQL文と実行計画にどのように影響するか、SQLを中心とした分析を行うことができます。
ワークロードの取得時にはSQLチューニング・セットを取得し、ワークロードのリプレイ時には別のSQLチューニング・セットを取得することで、SQL文を再実行することなく、SQLパフォーマンス・アナライザを使用してこれらのSQLチューニング・セットを相互に比較できます。これにより、データベース・リプレイを実行しながら、SQLパフォーマンス・アナライザ・レポートを生成して、変化の前後のSQLパフォーマンスを比較できます。
注意:
SQLチューニング・セットへのSQL文の取得はデフォルトで実行されます。これは、推奨されるワークロード取得オプションです。
-
「ワークロード・フィルタ」セクションで、「フィルタ・モード」リストの「除外」を選択して除外フィルタを使用するか、「包含」を選択して包含フィルタを使用します。
フィルタを追加するには、「追加」をクリックしてフィルタ名、セッション属性および値を該当するフィールドに入力します。
適切なワークロードの取得のオプションを選択したら、「次へ」をクリックします。
取得の作成: 記憶域ページが表示されます。
-
-
「記憶域ホスト」アイコンをクリックし、リストからターゲットを選択して、「選択」をクリックします。
記憶域ページで、ホスト資格証明と記憶域の場所をリクエストされます。
-
ホスト資格証明を入力し、記憶域を選択するために「参照」をクリックし、「次」をクリックします。
取得の作成: スケジュール・ページが表示されます。
-
取得の開始時間と期間をスケジュールし、AWRデータのエクスポートをスケジュールして、「次へ」をクリックします。
-
デフォルトの取得期間は5分です。テストが必要な対象期間の代理アクティビティを取得する取得期間を変更します。
取得の作成: 確認ページが表示されます。
-
-
すべてのパラメータが意図したとおりに設定されたら、「発行」をクリックして取得ジョブを開始します。
-
デフォルトでは、「ワークロード取得中にSQL文をSQLチューニング・セットに取り込みます。」オプションが有効です。リプレイ終了時にSQLチューニング・セットを比較しない場合は、このオプションの選択を解除します。
データベース・リプレイ・ページが再度表示され、取得が正常に作成されたというメッセージと、「スケジュール済」などの取得のステータスが「取得」リストに表示されます。
-
-
取得の詳細は、取得名をダブルクリックしてください。
取得サマリー・ページが表示され、平均アクティブ・セッション、ワークロードの比較、関連する同時取得など、複数の属性が表示されます。
10.9 Enterprise Managerを使用したワークロードの取得の監視
-
アクティブなワークロードの取得の監視または停止
-
完了したワークロード取得の表示
ヒント:
Oracle Enterprise Managerが使用できない場合は、「ビューを使用したワークロードの取得の監視」で説明されているように、ビューを使用してワークロードの取得を監視できます。
この項では、次の項目について説明します。
10.9.1 アクティブなワークロードの取得の監視
この項では、Enterprise Managerを使用してアクティブなワークロードの取得を監視する方法について説明します。
アクティブなワークロードの取得を監視するには、次の手順を実行します。
10.9.2 アクティブなワークロードの取得の停止
この項では、Enterprise Managerを使用したアクティブなワークロードの取得の停止方法について説明します。
アクティブなワークロードの取得を停止するには、次の手順を実行します。
10.9.3 完了したワークロード取得の表示
この項では、Enterprise Managerを使用したワークロード取得全体の管理方法について説明します。
完了したワークロードの取得を表示するには、次の手順を実行します。
ヒント:
ワークロードの取得レポートへのアクセスの詳細は、「取得およびリプレイ済ワークロードの分析」を参照してください。
10.10 Enterprise Manager外部のワークロードのインポート
この機能は、Cloud Control Databaseプラグイン12.1.0.5以降のリリースで利用できます。
Enterprise Manager外部にデータベース・ワークロードをインポートするには、次の手順に従います。
-
「データベース・リプレイ」ページの「取得済ワークロード」タブをクリックし、ツールバーの「インポート」をクリックします。
「ワークロードのインポート: ソース」ページが表示されます。
-
次の3つの選択肢のいずれかを選択して、取得されたワークロードをインポートし、「次へ」をクリックします。
-
取得が完了したワークロードをファイル・システムのディレクトリからインポート
このオプションは、通常APIを使用して作成されたワークロードに適用され、後続の処理用にEnterprise Managerにインポートします。この場合、Enterprise Managerは取得データベースを管理していない可能性があります。
-
取得が完了したワークロードをデータベース・ターゲットからインポート
この場合、Enterprise Managerは取得データベースをすでに管理している可能性があります。取得は、このデータベースで実行された可能性があるか、前述のオプションの場合と同様にロードされた可能性があります。
-
データベース・ターゲットで実行中の取得にアタッチ
このオプションは前述のオプションと似ていますが、すでに完了している取得ではなく、実行中の取得である点が異なります。
「ワークロードのインポート: データベース」ページが表示されます。
-
-
「データベース・ターゲット」フィールドの横の検索アイコンをクリックして、表示されるポップアップからデータベースを選択します。
注意:
ワークロードをロードするデータベースのターゲット・バージョンは、ワークロードの取得に使用したバージョン以上である必要があります。たとえば、Oracle Database 12xを使用して取得した場合、取得の読取りで選択するデータベースはバージョン12x以上である必要があります。
-
データベースおよびホスト資格証明が要求されます。
-
前述の手順で、取得が完了したワークロードをファイル・システムのディレクトリからインポートを選択した場合は、ワークロードの場所も要求されます。
-
統合リプレイは、少なくとも2つの取得ディレクトリを含む別のディレクトリ構造を持っています。したがって、ワークロード・ディレクトリに統合リプレイが含まれている場合は、インポート操作中にEnterprise Managerが統合リプレイを認識できるように、チェック・ボックスを有効にする必要があります。
-
-
前述の手順で必要な入力を行い、「次へ」をクリックします。
「ワークロードのインポート: ワークロード」ページが表示されます。
-
手順2の選択に従って表示されるボタンに応じて、ワークロードのロードまたはワークロードの検出のいずれかをクリックします。
ワークロードが見つかった場合は、検出されたワークロード表に表示されます。
-
「次へ」をクリックして、ワークロードをロードするか、ワークロードの1つを選択し、「次へ」をクリックしてワークロードのインポートを継続します。
「ワークロードのインポート: リプレイ」ページが表示されるのは、次の条件の場合のみです。
-
手順2で、「完了した取得済ワークロードをファイル・システムのディレクトリからインポートします。」を選択した場合。
-
1つ以上のリプレイがワークロードに含まれている場合。
-
-
オプション: 必要に応じて1つ以上のリプレイを選択し、リプレイ・タスク名を選択して、「次へ」をクリックします。
「ワークロードのインポート: 確認」ページが表示されます。
-
すべてが目的どおりに表示されたら、「送信」をクリックします。
「データベース・リプレイ」ページには、ジョブが正常に送信されたことを示すメッセージが表示されます。「取得済ワークロード」表で、ロードまたはインポートされたワークロードの「ステータス」列に「進行中」と表示されます。
ヒント:
「確認」ステップで送信した取得済ワークロード名をクリックして、ジョブの進行状況を確認できます。「取得サマリー」ページが表示され、データベース・リプレイ・インポート・ジョブ・リンクをクリックして、ジョブ実行ステップの進行状況を確認できます。
10.11 既存のワークロードからのサブセットの作成
長時間をカバーする大きなワークロードを取得した場合は、テストを迅速化するために、ワークロードの特定の部分をリプレイするだけで済みます。データベース・リプレイ・ワークロードのサブセット化機能は、既存の取得済ワークロードの一部を抽出することにより、新しいワークロードを作成できます。
Enterprise Managerには、テスト・システムでリプレイに使用できる既存のワークロードからデータのサブセットを抽出するウィザードが用意されています。抽出された各サブセットは、自身のワークロード上または統合リプレイの他のワークロードでリプレイできる正規のワークロードです。
リプレイを実行するには、ワークロードを事前処理する必要があります。
この機能は、Cloud Control Databaseプラグイン12.1.0.5以降のリリースで利用できます。
ワークロードからサブセットを抽出するには、次の手順に従います。
-
「データベース・リプレイ」ページの「取得済ワークロード」タブから、サブセットを抽出するワークロードを選択し、「サブセット」をクリックします。
「サブセット・ワークロード: 定義」ページが表示され、ワークロードの「アクティブ・セッション履歴」グラフが表示されます。
-
ワークロードから抽出するサブセットの開始および終了時間を選択します。
-
ページの下部にある「サブセット」表の上の「追加」をクリックします。
サブセットの作成ポップアップが表示されます。
-
スナップショットまたはカレンダ時間のいずれかを選択して、開始および終了時間を指定し、「OK」をクリックします。
注意:
すべてのパフォーマンス・データが、選択したカレンダで使用できるとは限らないため、スナップショット時間が推奨される選択肢になります。
選択した期間は、グレー表示されたセグメントとして「アクティブ・セッション」グラフに表示されます。
-
オプション: 前述の手順で選択した場合とは異なる期間で1つ以上の追加のサブセットを定義します。
-
オプション: 「拡張パラメータ」セクションで、サブセット・ワークロードの終了後に未完了のコールを含めるかどうかを指定します。デフォルトでは、サブセットのワークロードが開始されると、未完了のコールが含まれます。
-
これらのパラメータでは、定義された境界の外部コールを組み込むことができます。たとえば、トランザクションの境界として、開始および終了時間を指定すると、指定された開始時間より前にトランザクションが開始され、指定された終了時間後も継続される場合があります。
-
-
-
「次へ」をクリックします。
「サブセット・ワークロード: データベース」ページが表示されます。
-
「データベース・ターゲット」フィールドの横の検索アイコンをクリックして、表示される「検索と選択: ターゲット」ポップアップから、サブセット化用のデータベースを選択します。
データベースおよびホスト資格証明が要求されます。
-
前述の手順で必要な入力を行い、「次へ」をクリックします。
「サブセット・ワークロード: 場所」ページが表示されます。
-
ソース・ホストおよびステージング・データベース・ホストが同じ場合は、場所が事前入力されるので、ソース・ワークロード・ファイルの場所を指定する必要はありません。
-
ソース・ホストおよびステージング・データベースが同じでない場合は、次の手順を実行します。
-
「ホスト」フィールドに表示されるホスト名からワークロード・ファイルにアクセスするかどうか、また、ソース・ホストから、表示される「宛先ホスト」にファイルをコピーするかどうかを選択します。
直接アクセスは、ワークロードのサブセット化に使用するデータベースが、指定したファイル・システムの場所を使用して元のワークロードに直接アクセスできることを意味します。これは、通常は元のワークロードがネットワーク共有された場所に格納されている場合です。
アクセス権のコピーは、2つのホストが共有ネットワーク・パスにないことを意味します。Enterprise Managerが元のワークロードを現在の場所から、サブセット・データベース・ホスト上の指定された場所にコピーできるように、ソース・ホスト資格証明を指定する必要があります。
-
前述の選択内容に応じて、ワークロード・ファイルを含むディレクトリの場所を指定するか、宛先ホストの場所を指定します。
-
-
-
「サブセット」フィールドで、各サブセットの記憶域の場所を指定し、「次へ」をクリックします。
「サブセット・ワークロード: スケジュール」ページが表示されます。
-
サブセット・ジョブを開始する時間を指定し、「次へ」をクリックします。
「サブセット・ワークロード: 確認」ページが表示されます。
-
すべてが目的どおりに表示されたら、「送信」をクリックします。
「データベース・リプレイ」ページには、ジョブが正常に送信されたことを示すメッセージが表示されます。「リプレイ・タスク」表のサブセットの「ステータス」列に、「進行中」と表示されます。
ヒント:
「確認」ステップで送信したサブセット名をクリックして、ジョブの進行状況を確認できます。「取得サマリー」ページが表示され、データベース・リプレイ・サブセット・ジョブリンクをクリックして、ジョブ実行ステップの進行状況を確認できます。
10.12 新しい場所からのワークロードのコピーまたは移動
-
ソースから別のホストおよび場所に取得ファイルを複製する。
-
新しいホストおよび場所に取得ファイルを移動し、元の場所からソース・ファイルを削除する。
この機能は、Cloud Control Databaseプラグイン12.1.0.5以降のリリースで利用できます。
新しい場所にワークロードをコピーするには、次の手順に従います。
-
「データベース・リプレイ」ページの「取得済ワークロード」タブで、新しい場所にコピーするワークロードを選択し、「コピー」をクリックします。
「ワークロードのコピー」ページが表示され、選択したワークロード・ディレクトリの現在のソースの場所が表示されます。
-
必要に応じて、記憶域ホストの資格証明を指定または変更します。現在の記憶域ホストで定義済の資格証明が自動的に取得されます。
-
「コピー後」ラジオ・ボタンを有効のままにします(ソースの場所の元のワークロードが保持されます)。
-
ワークロード・ディレクトリの新しい場所の「記憶域ホスト」を選択します。
-
新しい記憶域ホストの資格証明を指定します。
-
ワークロードの新しい「宛先ロケーション」のディレクトリを選択します。
-
ジョブをスケジュールし、「発行」をクリックします。
「データベース・リプレイ」ページが再度表示され、ジョブが発行され、記憶域の場所が正常に更新されたことを示すメッセージが表示されます。
ヒント:
「ジョブ・アクティビティ」ページに移動して、送信メッセージに表示されたジョブ名を検索し、そのリンクをクリックして「ジョブ実行」ページにアクセスすることで、ジョブの進行状況をチェックできます。
10.13 APIを使用したデータベース・ワークロードの取得
DBMS_WORKLOAD_CAPTURE
パッケージを使用してデータベース・ワークロードを取得する手順は、次のとおりです。
関連項目:
-
DBMS_WORKLOAD_CAPTURE
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
10.13.1 ワークロード取得フィルタの定義
ワークロード取得にフィルタを追加するには、次の手順に従います。
-
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
: フィルタを適用する属性に対応する値を指定する必須パラメータ。一部の属性(モジュールやアクションなど)では、%などのワイルドカードを使用できます。
-
ワークロード取得からフィルタを削除するには、次の手順に従います。
-
BEGIN DBMS_WORKLOAD_CAPTURE.DELETE_FILTER (fname => 'user_ichan'); END; /
この例では、
DELETE_FILTER
プロシージャは、ワークロードの取得からuser_ichanというフィルタを削除します。この例の
DELETE_FILTER
プロシージャは、必須パラメータfname
を使用します。このパラメータは、削除するフィルタの名前を指定します。DELETE_FILTER
プロシージャは、完了した取得に属するフィルタは削除せず、まだ開始されていない取得のフィルタのみに適用されます。
10.13.2 ワークロードの取得の開始
取得されたワークロードのリプレイを開始する前にリプレイ・システムを開始ポイントにリストアできるように、適切に定義されたワークロードの開始ポイントを取得することが重要です。ワークロードの取得の開始ポイントを適切に定義するには、ワークロードの取得が開始されたときにアクティブなユーザー・セッションが存在しないことが理想的です。アクティブ・セッションでトランザクションが進行中の場合、それらのトランザクションはその後のデータベース・リプレイで適切にリプレイされませんが、これは、トランザクションのうち、ワークロードの取得を開始した後に実行されたコールの部分しかリプレイされないためです。この問題を避けるには、ワークロードの取得を開始する前にSTARTUP RESTRICT
を使用してデータベースを制限モードで再起動します。ワークロードの取得が開始されると、データベースは自動的に無制限モードに切り替わり、ワークロードの取得中は通常の操作を続行できます。ワークロード取得前のデータベースの再起動の詳細は、「データベースの再起動」を参照してください。
ワークロード取得を開始するには、次の手順に従います。
-
BEGIN DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'dec10_peak', dir => 'dec10', duration => 600, capture_sts => TRUE, sts_cap_interval => 300, plsql_mode => 'extended' encryption => 'AES256'); END; /
この例では、
dec10_peak
というワークロードが600秒間取得され、dec10
というデータベース・ディレクトリ・オブジェクトで定義されたファイル・システムに格納されます。ワークロードの取得と並行して、SQLチューニング・セットも取得されます。この例の
START_CAPTURE
プロシージャでは、次のパラメータを使用します。-
name
: 取得するワークロードの名前を指定する必須パラメータ。 -
dir
: 取得したワークロードを格納するディレクトリを指すディレクトリ・オブジェクトを指定する必須パラメータ。 -
duration
: ワークロードの取得が終了するまでの時間(秒)を指定するパラメータ。値を指定しない場合、ワークロードの取得は、FINISH_CAPTURE
プロシージャがコールされるまで続きます。 -
capture_sts
: ワークロードの取得と並行してSQLチューニング・セットを取得するかどうかを指定するパラメータ。このパラメータをTRUE
に設定した場合、ワークロードの取得中に1つのSQLチューニング・セットを取得し、ワークロードのリプレイ中にもう1つ別のSQLチューニング・セットを取得することで、SQL文を再実行しなくても、SQLパフォーマンス・アナライザを使用してそれらのSQLチューニング・セットを比較できます。この方法では、データベース・リプレイの実行中に、SQLパフォーマンス・アナライザ・レポートを取得して、変更の前と後のSQLパフォーマンスを比較することができます。また、「ワークロードの取得のAWRデータのエクスポート」で説明されているように、EXPORT_AWR
プロシージャを使用して、結果のSQLチューニング・セットをそのAWRデータとともにエクスポートできます。この機能は、Oracle RACではサポートされていません。
DBMS_WORKLOAD_CAPTURE
を使用して定義したワークロード取得フィルタは、SQLチューニング・セットの取得には適用されません。このパラメータのデフォルト値はFALSE
です。 -
sts_cap_interval
: カーソル・キャッシュからのSQLチューニング・セット取得の継続時間(秒)を指定するパラメータ。デフォルト値は300です。このパラメータの値をデフォルト値未満に設定すると、一部のワークロードで追加オーバーヘッドが生じる可能性があるため、そのような設定は推奨されません。 -
オプションの
plsql_mode
パラメータでは、取得およびリプレイ時にPL/SQLがDBリプレイでどのように処理されるか指定します。plsql_mode
パラメータには次の2つの値を設定できます。-
top_level
: 最上位レベルのPL/SQLコールのみ取得およびリプレイされます。これは、Oracle Database 12cリリース2 (12.2.0.1)より前のDBリプレイによるPL/SQLの処理方法です。これがデフォルト値です。 -
extended
: 最上位レベルのPL/SQLコールとPL/SQLからコールされたSQLの両方が取得されます。ワークロードがリプレイされると、リプレイは最上位レベルと拡張レベルのいずれかで実行され、両方のレベルでは実行されません。
-
-
encryption
パラメータでは、取得ファイルの暗号化に使用されるアルゴリズムを指定します。encryption
パラメータでは、次の暗号化標準を使用できます。-
NULL - 取得ファイルは暗号化されません(デフォルト値)
-
AES128
- 取得ファイルはAES128を使用して暗号化されます -
AES192
- 取得ファイルはAES192を使用して暗号化されます -
AES256
- 取得ファイルはAES256を使用して暗号化されます
注意:
暗号化ありで
START_CAPTURE
を実行するには、oracle.rat.database_replay.encryption
(大/小文字を区別)識別子を使用してパスワードを設定する必要があります。パスワードはソフトウェア・キーストアに格納されます。ソフトウェア・キーストアの作成の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。 -
-
例: パスワードベースのソフトウェア・キーストアの設定
次の文は、パスワードベースのソフトウェア・キーストアを作成します。
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'MYKEYSTORE' IDENTIFIED BY password;
次の文は、パスワードベースのソフトウェア・キーストアを開き、パスワードベースのソフトウェア・キーストアのバックアップを作成します。
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY password; ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY password WITH BACKUP;
次の文は、タグDBREPLAY
を指定してクライアント'oracle.rat.database_replay.encryption'
のシークレットsecret_key
をパスワードベースのソフトウェア・キーストアに追加します。シークレットを追加する前に、パスワードベースのソフトウェア・キーストアのバックアップも作成します。
ADMINISTER KEY MANAGEMENT ADD SECRET secret_key FOR CLIENT 'oracle.rat.database_replay.encryption' USING TAG 'DBREPLAY' IDENTIFIED BY password WITH BACKUP;
次の文は、パスワードベースのソフトウェア・キーストアを閉じます。
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY password;
注意:
データベース取得およびデータベース・リプレイを実行するには、ソフトウェア・キーストアをオープンしたままにしておく必要があります。
10.13.3 ワークロードの取得の停止
この項では、ワークロード取得を停止する方法について説明します。
ワークロード取得を停止するには、次の手順に従います。
ヒント:
本番システムでワークロードを取得したら、取得したワークロードを事前処理する必要があります。詳細は、「データベース・ワークロードの事前処理」を参照してください。
10.13.4 ワークロードの取得のAWRデータのエクスポート
AWRデータをエクスポートすると、ワークロードの詳細な分析が可能になります。このデータは、2つのワークロードの取得(またはリプレイ)に対して、リプレイの期間比較レポートまたはAWR期間比較レポートを実行する場合には必須です。
AWRデータをエクスポートする手順は次のとおりです。
-
BEGIN DBMS_WORKLOAD_CAPTURE.EXPORT_AWR (capture_id => 2); END; /
この例では、取得IDが2のワークロード取得に対応するAWRスナップショットがエクスポートされます。また、ワークロードの取得中に取得されたSQLチューニング・セットもエクスポートされます。
EXPORT_AWR
プロシージャでは、AWRスナップショットをエクスポートする取得のIDを指定する必須パラメータcapture_id
を使用します。capture_id
パラメータの値がDBA_WORKLOAD_CAPTURES
ビューのID
列に表示されます。注意:
このプロシージャは、対応するワークロードの取得が現在のデータベースで実行され、元の取得期間に対応するAWRスナップショットがまだ使用可能である場合にのみ、機能します。
関連項目:
DBA_WORKLOAD_CAPTURES
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください
10.13.5 ワークロードの取得のAWRデータのインポート
AWRデータをインポートするには、次の手順を実行します。
-
次の例に従って、
IMPORT_AWR
ファンクションを使用します。CREATE USER capture_awr SELECT DBMS_WORKLOAD_CAPTURE.IMPORT_AWR (capture_id => 2, staging_schema => 'capture_awr') FROM DUAL;
この例では、取得IDが2のワークロード取得に対応するAWRスナップショットが
capture_awr
という名前のステージング・スキーマを使用してインポートされます。この例の
IMPORT_AWR
プロシージャでは、次のパラメータを使用します。-
必須パラメータ
capture_id
では、AWRスナップショットをインポートする取得のIDを指定します。capture_id
パラメータの値がDBA_WORKLOAD_CAPTURES
ビューのID
列に表示されます。 -
必須パラメータ
staging_schema
では、SYS
AWR
スキーマにAWRスナップショットをインポートする間に、ステージング領域として使用できる現在のデータベースの有効なスキーマ名を指定します。
-
注意:
staging_schema
パラメータで指定したスキーマにAWR表と同じ名前の表が含まれる場合、このファンクションは失敗します。
関連項目:
DBA_WORKLOAD_CAPTURES
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください
10.14 APIの使用による既存のワークロード取得の暗号化および復号化
この項では、APIを使用して既存のワークロード取得を暗号化および復号化する方法について説明します。
ワークロード取得時には、接続文字列やSQLテキスト、バインド値といった各種情報が保存されます。機密データが含まれている場合、この情報は暗号化できます。「ワークロードの取得の開始」で説明されているとおりに、ワークロード取得時に暗号化を有効にできます。
10.14.1 既存のワークロード取得の暗号化
この項では、既存のワークロード取得を暗号化する方法について説明します。
既存のワークロード取得を暗号化するには、次の手順に従います。
-
BEGIN DBMS_WORKLOAD_CAPTURE.ENCRYPT_CAPTURE(src_dir => 'dec10', dst_dir => 'dec10_enc', encryption => 'AES128'); END; /
この例の
ENCRYPT_CAPTURE
プロシージャでは、次のパラメータを使用します。-
src_dir
パラメータは、暗号化するワークロード取得が格納されているディレクトリを指しています。 -
dst_dir
パラメータは、暗号化された取得が暗号化後に保存されるディレクトリを指しています。 -
encryption
パラメータでは、ワークロード取得の暗号化に使用されるアルゴリズムを指定します。
-
注意:
DBMS_WORKLOAD_CAPTURE.ENCRYPT_CAPTURE
を実行する前に、ソフトウェア・キーストアにoracle.rat.database_replay.encryption
(大/小文字を区別)識別子を格納しておく必要があります。
10.14.2 暗号化されたワークロード取得の復号化
この項では、暗号化されたワークロード取得を復号化する方法について説明します。
暗号化されたワークロード取得は、DBMS_WORKLOAD_CAPTURE.DECRYPT_CAPTURE
プロシージャを使用して復号化できます。
暗号化されたワークロード取得を復号化するには、次の手順に従います。
-
BEGIN DBMS_WORKLOAD_CAPTURE.DECRYPT_CAPTURE(src_dir => 'dec10_enc', dst_dir => 'dec10'); END; /
この例の
DECRYPT_CAPTURE
プロシージャでは、次のパラメータを使用します。-
src_dir
パラメータは、暗号化された取得が格納されているディレクトリを指しています。 -
dst_dir
パラメータは、復号化された取得が復号化後に保存されるディレクトリを指しています。
-
注意:
DBMS_WORKLOAD_CAPTURE.DECRYPT_CAPTURE
を実行する前に、ソフトウェア・キーストアにoracle.rat.database_replay.encryption
(大/小文字を区別)識別子を格納しておく必要があります。
10.15 ビューを使用したワークロードの取得の監視
これらのビューにアクセスするには、次のDBA権限が必要です。
-
DBA_WORKLOAD_CAPTURES
ビュー: 現在のデータベースで取得されたワークロードの取得をすべて示します。 -
DBA_WORKLOAD_FILTERS
ビュー: 現在のデータベースに定義されたワークロードの取得に対して使用されるワークロード・フィルタをすべて示します。
関連項目:
-
DBA_WORKLOAD_CAPTURES
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください -
DBA_WORKLOAD_FILTERS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください