日本語PDF

3 分析タスクの作成

分析するSQLワークロードをSQLチューニング・セット(STS)に取得したら、SQLパフォーマンス・アナライザを実行して、システム変更がSQLパフォーマンスに与える影響を分析できます。SQLパフォーマンス・アナライザを実行するには、まずSQLパフォーマンス・アナライザのタスクを作成する必要があります。タスクは、SQLパフォーマンス・アナライザの完全な分析に関するすべてのデータがカプセル化されているコンテナです。SQLパフォーマンス・アナライザの分析は、2つ以上のSQL試行と1つの比較で構成されています。SQL試行は特定の環境条件下でSQLチューニング・セットの実行パフォーマンスを取得するもので、次のいずれかの方法でSQLパフォーマンス・アナライザを使用して自動的に生成できます。
  • SQL文のテスト実行

  • SQL文の実行計画の生成

  • SQLチューニング・セットで取得した実行統計および計画の参照

SQLパフォーマンス・アナライザのタスクを作成する場合は、入力ソースとしてSQLチューニング・セットを選択する必要があります。このSQLチューニング・セットがSQL試行のテスト実行または実行計画生成のソースとして使用されます。このため、試行間のパフォーマンスの相違は、環境の相違が原因となります。

この章では、SQLパフォーマンス・アナライザのタスクの作成方法について説明します。内容は次のとおりです。

ノート:

SQLパフォーマンス・アナライザを実行するための主要なインタフェースは、Oracle Enterprise Managerです。なんらかの理由でOracle Enterprise Managerを使用できない場合は、DBMS_SQLPA PL/SQLパッケージを使用してSQLパフォーマンス・アナライザを実行できます。

Enterprise Managerを使用した分析タスクの作成

Oracle Enterprise Managerでは、いくつかのワークフローでSQLパフォーマンス・アナライザ・タスクを作成できます。

SQLパフォーマンス・アナライザを実行する前に、パフォーマンスの分析に使用するSQLワークロードを本番システムのSQLチューニング・セットに取得して、パフォーマンスの分析を実行するテスト・システムに転送します。詳細は、「SQLワークロードの取得」を参照してください。

Enterprise Managerを使用して分析タスクを作成するには:

  1. 「パフォーマンス」メニューから、「SQL」「SQLパフォーマンス・アナライザ」の順に選択します。

    「データベース・ログイン」ページが表示されたら、管理者権限のあるユーザーとしてログインします。

    「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。

  2. 「SQLパフォーマンス・アナライザ・ワークフロー」で、目的のタイプの分析タスクを作成するワークフローを選択します。
    • 9iまたは10.1からのアップグレード

      9iまたは10.1のワークフローからのアップグレードは、Oracle9i DatabaseまたはOracle Database 10gリリース1から、Oracle Database 10gリリース2以上のリリースへのデータベース・アップグレードをテストする場合に使用します。詳細は、「Oracle9i DatabaseおよびOracle Database 10gリリース1からのアップグレード」を参照してください。

    • 10.2または11gからのアップグレード

      10.2または11gのワークフローからのアップグレードは、Oracle Database 10gリリース2またはOracle Database 11gから、それ以上のリリースへのデータベース・アップグレードをテストする場合に使用します。詳細は、「Oracle Database 10gリリース2以上のリリースからのアップグレード」を参照してください。

    • パラメータの変更

      パラメータ変更ワークフローは、データベース初期化パラメータの変更によるSQLパフォーマンスへの影響を確認する場合に使用します。詳細は、「パラメータ変更ワークフローの使用」を参照してください。

    • オプティマイザ統計

      オプティマイザ統計ワークフローは、オプティマイザ統計への変更がSQLのパフォーマンスに与える影響を分析する場合に使用します。詳細は、「オプティマイザ統計ワークフローの使用」を参照してください。

    • Exadataシミュレーション

      Exadataシミュレーション・ワークフローは、Oracle Exadataを使用した場合にSQLのパフォーマンスに与える影響をシミュレートする場合に使用します。詳細は、「Exadataシミュレーション・ワークフローの使用」を参照してください。

    • ガイド付きワークフロー

      ガイド付きワークフローは、その他のすべてのタイプのシステム変更でのSQLパフォーマンスを比較する場合に使用します。詳細は、「ガイド付きワークフローの使用」を参照してください。

パラメータ変更ワークフローの使用

パラメータ変更ワークフローでは、1つの環境初期化パラメータの値を変更した場合のSQLワークロードへのパフォーマンスの影響をテストできます。たとえば、OPTIMIZER_FEATURES_ENABLE初期化パラメータ・セットを10.2.0.4と12.1.0.1に設定することによって、SQLパフォーマンスを比較できます。

SQLチューニング・セットおよび比較メトリックを選択すると、SQLパフォーマンス・アナライザによってタスクが作成され、初期化パラメータが元の値に設定された試行が実行されます。その後、ALTER SESSION文を発行することによって、SQLパフォーマンス・アナライザで、パラメータが変更された値に設定された2番目の試行が実行されます。したがって、変更の影響はテスト・セッションにローカルに限定されます。パフォーマンスの低下または変更は、システムによって生成されたSQLパフォーマンス・アナライザ・レポートに報告されます。

ノート:

他のタイプのシステム変更の分析タスクを作成する場合は、ガイド付きワークフローをかわりに使用してください。詳細は、「ガイド付きワークフローの使用」を参照してください。

SQLパフォーマンス・アナライザのパラメータの変更ワークフローを使用するには:

  1. 「SQLパフォーマンス・アナライザ」ホーム・ページの「SQLパフォーマンス・アナライザ・ワークフロー」で、「パラメータの変更」をクリックします。

    「パラメータの変更」ページが表示されます。

  2. 「タスク名」フィールドに、タスクの名前を入力します。

  3. 「SQLチューニング・セット」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。

    または、検索アイコンをクリックして、「検索と選択: SQLチューニング・セット」ウィンドウでSQLチューニング・セットを検索します。

    選択したSQLチューニング・セットが「SQLチューニング・セット」フィールドに表示されます。

  4. 「説明」フィールドに、オプションでタスクの説明を入力します。

  5. 「作成方法」リストで、次のいずれかのアクションを実行して、SQL試行の作成方法および生成されるコンテンツを確認します。

    • 「SQLの実行」を選択します。

      このSQL試行では、実際にSQL文を実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。

    • 「計画の生成」を選択します。

      このSQL試行では、オプティマイザが起動され、実際にSQL文が実行されない場合にのみ実行計画が作成されます。

  6. 「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。

    • 「5分」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。

    • 「無制限」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。

    • 「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。

  7. 「パラメータの変更」セクションで、次のステップを実行します。

    1. 「パラメータ名」フィールドに、変更する初期化パラメータの名前を入力するか、または検索アイコンをクリックして、「検索と選択: 初期化パラメータ」ウィンドウを使用して初期化パラメータを選択します。

    2. 「ベース値」フィールドに、初期化パラメータの現在の値を入力します。

    3. 「変更された値」フィールドに、初期化パラメータの新しい値を入力します。

  8. 「比較メトリック」リストで、分析に使用する比較メトリックを選択します。

    • ステップ5「計画の生成」を選択した場合は、「オプティマイザ・コスト」を選択します。

    • ステップ5「SQLの実行」を選択した場合は、次のいずれかのオプションを選択します。

      • 経過時間

      • CPU時間

      • ユーザーI/O時間

      • バッファ読取り

      • 物理I/O

      • オプティマイザ・コスト

      • I/Oインターコネクト・バイト

    複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこの手順を繰り返すことによって比較分析を別々に実行します。

  9. 「スケジュール」セクションで、次の手順を実行します。

    1. 「タイムゾーン」リストで、タイムゾーン・コードを選択します。

    2. 「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  10. 「発行」をクリックします。

    「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。

    「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。

  11. 「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。

    「SQLパフォーマンス・アナライザのタスク」ページが表示されます。

    このページには、次のセクションが含まれています。

    • SQLチューニング・セット

      このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。

    • SQL試行

      このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。

    • SQL試行比較

      このセクションには、SQL試行比較の結果を示す表が含まれています。

  12. 「比較レポート」列のアイコンをクリックします。

    「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。

  13. パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。

  14. パフォーマンスの低下が特定された場合は、「SQLチューニング・レポート」列のアイコンをクリックしてSQLチューニング・レポートを表示します。

オプティマイザ統計ワークフローの使用

オプティマイザ統計ワークフローを使用すると、オプティマイザ統計の変更によるSQLワークロードのパフォーマンスに対する影響を分析できます。

SQLパフォーマンス・アナライザは、テスト・セッションで保留中のオプティマイザ統計を使用可能にすることで、新しいオプティマイザ統計の影響をテストします。最初のSQL試行では、SQLチューニング・セットのベースラインのパフォーマンスが測定され、2番目のSQL試行では、保留中のオプティマイザ統計が使用されます。続いて、この2つのSQL試行に対して比較レポートを実行できます。

オプティマイザ統計ワークフローを使用するには:

  1. 「SQLパフォーマンス・アナライザ」ホーム・ページの「SQLパフォーマンス・アナライザ・ワークフロー」で、「オプティマイザ統計」をクリックします。

    「オプティマイザ統計」ページが表示されます。

  2. 「タスク名」フィールドに、タスクの名前を入力します。

  3. 「SQLチューニング・セット」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。

    または、検索アイコンをクリックして、「検索と選択: SQLチューニング・セット」ウィンドウでSQLチューニング・セットを検索します。

    選択したSQLチューニング・セットが「SQLチューニング・セット」フィールドに表示されます。

  4. 「説明」フィールドに、オプションでタスクの説明を入力します。

  5. 「作成方法」リストで、次のいずれかのアクションを実行して、SQL試行の作成方法および生成されるコンテンツを確認します。

    • 「SQLの実行」を選択します。

      このSQL試行では、実際にSQL文を実行することによって、SQLチューニング・セット内の各SQL文に対して実行計画と実行統計の両方が生成されます。

    • 「計画の生成」を選択します。

      このSQL試行では、オプティマイザが起動され、実際にSQL文が実行されない場合にのみ実行計画が作成されます。

  6. 「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。

    • 「5分」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。

    • 「無制限」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。

    • 「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。

  7. 「比較メトリック」リストで、比較分析に使用する比較メトリックを選択します。

    • 経過時間

    • CPU時間

    • ユーザーI/O時間

    • バッファ読取り

    • 物理I/O

    • オプティマイザ・コスト

    • I/Oインターコネクト・バイト

    SQL試行で実行計画のみを生成するように選択した場合、選択可能な比較メトリックは「オプティマイザ・コスト」のみです。

    複数の比較メトリックを使用して比較分析を実行するには、異なるメトリックを使用してこの手順を繰り返すことによって比較分析を別々に実行します。

  8. 保留中のオプティマイザ統計が収集されていることを確認し、「収集された保留中のオプティマイザ統計」を選択します。

  9. 「スケジュール」セクションで、次の手順を実行します。

    1. 「タイムゾーン」リストで、タイムゾーン・コードを選択します。

    2. 「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  10. 「発行」をクリックします。

    「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。

    「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。

  11. 「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。

    「SQLパフォーマンス・アナライザのタスク」ページが表示されます。

    このページには、次のセクションが含まれています。

    • SQLチューニング・セット

      このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。

    • SQL試行

      このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。

    • SQL試行比較

      このセクションには、SQL試行比較の結果を示す表が含まれています。

  12. 「比較レポート」列のアイコンをクリックします。

    「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。

  13. パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。

    パフォーマンスの低下が見つかった場合は、SQL計画ベースラインとSQLチューニング・アドバイザを使用して修正できます。保留中のオプティマイザ統計で得られるパフォーマンスが満足できるものであれば、公開して使用することができます。

Exadataシミュレーション・ワークフローの使用

Exadataシミュレーション・ワークフローを使用すると、SQLワークフローのパフォーマンスに対するExadata Storage Serverインストールの影響をシミュレートできます。

Oracle Exadataは、非常に大きなI/O帯域幅を備えているうえ、データベースからストレージへのSQL処理のオフロード機能があります。これによって、Oracle Databaseでは、I/Oインターコネクトを介して送信されるデータ量を大幅に削減可能になると同時に、Exadataストレージ・セルへのCPUリソースのオフロードが可能になります。

SQLパフォーマンス・アナライザは、Exadata Storage Serverインストールをシミュレートし、SQLワークロードに対するI/Oインターコネクトの使用率の減少を測定することで、Exadata SQLオフロード処理の効果を分析することができます。

Exadataシミュレーションを実行するためにシステムのハードウェアや構成を変更する必要はありません。SQLチューニング・セットを選択した後、SQLパフォーマンス・アナライザによりタスクが作成され、Exadata Storage Serverシミュレーションが無効の状態で最初の試行が実行されます。SQLパフォーマンス・アナライザでは次に、Exadata Storage Serverシミュレーションが有効な状態で2回目の試行が実行されます。その後、「I/Oインターコネクト・バイト」比較メトリックを使用して2つの試行が比較され、Oracle Exadataを使用している場合は、Exadataストレージ・セルからデータベースに送信する必要のないデータの量を見積るSQLパフォーマンス・アナライザ・レポートが生成されます。両方のSQL試行で、SQL文が完了するまで実行され、I/Oインターコネクト・バイトの測定値が取得されます(最初の試行が実際のExadataの値で、2番目の試行がシミュレートされたExadataの値です)。I/Oインターコネクト・バイトで測定された変化を確認することによって、Exadataストレージ・セルで実行可能なフィルタリングの量、および通常このデータの処理に使用されるCPUの量のうちデータベースからオフロード可能な量を的確に見積もることができます。

ノート:

Exadataシミュレーションを使用しても計画の変更は発生しません。シミュレーションがI/Oインターコネクトの使用状況の向上に関する測定に重点を置いているため、Exadata Storage Serverインストール内で実行計画が変更されることはありません。また、Oracle Exadataはデータベースに送信されるデータ量のみを削減するため、データ圧縮が使用されている場合(次のノートを参照)を除いて、I/Oインターコネクト・バイトが増加することはありません。

ノート:

I/Oインターコネクト・バイトは、Exadata Storage Serverインストールを使用した場合のパフォーマンス変化の影響を測定するための唯一のメトリックであるため、Oracle Exadataをデータ圧縮とともに使用した場合は適切に機能しません。Exadataストレージ・セルはデータの圧縮解除も行うため、データが圧縮されている場合、Oracle Exadataを使用した状態でのSQL文(2番目のSQL試行)のI/Oインターコネクト・バイトが、Oracle Exadataを使用しない状態のI/Oインターコネクト・バイトよりも増加することがあります。実際にはそうでないにもかかわらず、SQL文のパフォーマンスが低下したと報告されるため、この比較は誤解を与えます。

ノート:

Exadataシミュレーションのワークフローは、Exadata以外のハードウェアでExadata Storage Serverインストールをシミュレートするために使用されます。Exadataハードウェアで変化をテストするには、標準のSQLパフォーマンス・アナライザのワークフローを使用します。

ノート:

Exadataシミュレーションがサポートされているのは、DSSおよびデータ・ウェアハウスのワークロードに対してのみです。

SQLパフォーマンス・アナライザのExadataシミュレーション・ワークフローを使用するには:

  1. 「SQLパフォーマンス・アナライザ」ホーム・ページの「SQLパフォーマンス・アナライザ・ワークフロー」で、「Exadataシミュレーション」をクリックします。

    「Exadataシミュレーション」ページが表示されます。

  2. 「タスク名」フィールドに、タスクの名前を入力します。

  3. 「SQLチューニング・セット」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。

    または、検索アイコンをクリックして、「検索と選択: SQLチューニング・セット」ウィンドウでSQLチューニング・セットを検索します。

    選択したSQLチューニング・セットが「SQLチューニング・セット」フィールドに表示されます。

  4. 「説明」フィールドに、オプションでタスクの説明を入力します。

  5. 「SQL当たりの時間制限」リストで、次のいずれかのアクションを実行して、試行時のSQL実行の時間制限を決定します。

    • 「5分」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が最大5分間実行され、パフォーマンス・データが収集されます。

    • 「無制限」を選択します。

      この実行では、SQLチューニング・セット内の各SQL文が完了するまで実行され、パフォーマンス・データが収集されます。実行統計を収集することによってパフォーマンス分析の精度は大幅に向上しますが、分析にかかる時間は長くなります。1つのSQL文によってタスクが長時間停止状態になる場合があるため、この設定は使用しないことをお薦めします。

    • 「カスタマイズ」を選択して、指定する秒数、分数、時間数を入力します。

  6. 「スケジュール」セクションで、次の手順を実行します。

    1. 「タイムゾーン」リストで、タイムゾーン・コードを選択します。

    2. 「即時」(即時にタスクを開始する場合)または、「後で」(「日付」および「時間」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  7. 「発行」をクリックします。

    「SQLパフォーマンス・アナライザ・ホーム」ページが表示されます。

    「SQLパフォーマンス・アナライザのタスク」セクションに、このタスクのステータスが表示されます。ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。タスクが完了すると、「ステータス」フィールドが「完了」に変更されます。

  8. 「SQLパフォーマンス・アナライザのタスク」セクションで、タスクを選択して「名前」列のリンクをクリックします。

    「SQLパフォーマンス・アナライザのタスク」ページが表示されます。

    このページには、次のセクションが含まれています。

    • SQLチューニング・セット

      このセクションには、SQLチューニング・セットに関する情報(名前、所有者、説明、SQLチューニング・セットに含まれているSQL文の数など)の概要が表示されます。

    • SQL試行

      このセクションには、SQLパフォーマンス・アナライザのタスクで使用されるSQL試行を示す表が含まれています。

    • SQL試行比較

      このセクションには、SQL試行比較の結果を示す表が含まれています。

  9. 「比較レポート」列のアイコンをクリックします。

    「SQLパフォーマンス・アナライザのタスク結果」ページが表示されます。

  10. パフォーマンス分析の結果を確認します。詳細は、「Oracle Enterprise Managerを使用したSQLパフォーマンス・アナライザ・レポートの確認」を参照してください。

    最初と2番目の試行間のExadataシミュレーションでのSQLパフォーマンスの向上は、このレポートに取得されます。一般に、SQLワークロードに多数の行をスキャンする問合せ、または表の列の小さなサブセットをスキャンする問合せが含まれている場合、より大きな効果を期待できます。逆に、索引付き表または行数が少ない表を問合せるSQLワークロードは、Exadataシミュレーションからの効果は少なくなります。

ガイド付きワークフローの使用

ガイド付きワークフローでは、SQLワークロードに対するすべてのタイプのシステム変更のパフォーマンスの影響をテストできます。SQLパフォーマンスに影響を与える可能性のあるシステム変更のリストについては、「SQLパフォーマンス・アナライザ」を参照してください。

ノート:

分析タスクを作成してデータベース初期化パラメータの変更をテストする場合は、簡略化されたパラメータ変更ワークフローをかわりに使用してください。詳細は、「パラメータ変更ワークフローの使用」を参照してください。

SQLパフォーマンス・アナライザ・タスクのガイド付きワークフローを使用するには:

  1. 「SQLパフォーマンス・アナライザ」ホーム・ページの「SQLパフォーマンス・アナライザ・ワークフロー」で、「ガイド付きワークフロー」をクリックします。

    「ガイド付きワークフロー」ページが表示されます。

    ガイド付きワークフローを使用すると、任意のタイプのシステム変更を実行した場合のSQLワークロードへのパフォーマンスの影響をテストできます。詳細は、「SQLパフォーマンス・アナライザ」を参照してください。

    このページには、SQLパフォーマンス・アナライザのタスクで必要なステップが順に表示されます。各ステップを順に完了してから、次のステップを開始する必要があります。

  2. 「ガイド付きワークフロー」ページで、ステップ1の「SQLチューニング・セットに基づくSQLパフォーマンス・アナライザのタスクの作成」の「実行」アイコンをクリックします。

    「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。

  3. 「名前」フィールドに、タスクの名前を入力します。
  4. 「説明」フィールドに、オプションでタスクの説明を入力します。
  5. 「SQLチューニング・セット」の下の「名前」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。

    または、検索アイコンをクリックして、「検索と選択: SQLチューニング・セット」ウィンドウでSQLチューニング・セットを選択します。

  6. 「作成」をクリックします。

    「ガイド付きワークフロー」ページが表示されます。

    このステップの「ステータス」アイコンがチェック・マークに変わり、次のステップの「実行」アイコンが有効になります。

  7. 分析タスクが作成されると、「変更前のSQL試行の作成」の説明に従って、SQLチューニング・セットのSQL文を実行して変更前のパフォーマンス・データを作成できます。

APIを使用した分析タスクの作成

この項では、DBMS_SQLPA.CREATE_ANALYSIS_TASKファンクションを使用してSQLパフォーマンス・アナライザのタスクを作成する方法について説明します。タスクは、SQLパフォーマンス・アナライザの実行時の入力および結果が格納されるデータベース・コンテナです。

操作を進める前に、パフォーマンスの分析に使用するSQLワークロードを本番システムのSQLチューニング・セットに取得して、パフォーマンスの分析を実行するテスト・システムに転送します。詳細は、「SQLワークロードの取得」を参照してください。

分析タスクを作成するには:

  • 次のパラメータを使用してCREATE_ANALYSIS_TASKファンクションをコールします。

    • task_nameを設定して、SQLパフォーマンス・アナライザのタスクの任意の名前を指定します。

    • sqlset_nameをSQLチューニング・セットの名前に設定します。

    • sqlset_ownerをSQLチューニング・セットの所有者に設定します。デフォルトは現在のスキーマ所有者です。

    • basic_filterを、SQLチューニング・セットからSQLを除外するために使用するSQL述語に設定します。

    • order_byを設定して、SQL文が実行される順番を指定します。

      このパラメータを使用すると、時間制限に達しても、より重要なSQL文が処理され、スキップされないようにすることができます。

    • top_sqlを設定して、除外およびランク付け後にSQL文の上位の番号のみが考慮されるようにします。

    次の例は、ファンクション・コールを示しています。

    VARIABLE t_name VARCHAR2(100);
    EXEC :t_name := DBMS_SQLPA.CREATE_ANALYSIS_TASK(sqlset_name => 'my_sts', -
           task_name => 'my_spa_task');
    

分析タスクが作成されると、「変更前のSQL試行の作成」の説明に従って、SQLチューニング・セットのSQL文を実行して変更前のパフォーマンス・データを作成できます。

関連項目:

APIを使用した分析タスクの構成

この項では、作成されたSQLパフォーマンス・アナライザのタスクを構成する方法について説明します。DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETERプロシージャを使用してパラメータを指定することによって、分析タスクを構成できます。

この項では、次の項目について説明します。

APIを使用した分析タスクの実行計画の比較方法の構成

SQLパフォーマンス・アナライザ・タスクが実行計画の行ごとの比較をいつ行うかを決定する比較方法を構成できます。デフォルトでは、SQLパフォーマンス・アナライザ・タスクは、計画のハッシュ値が不明の場合にのみ、実行計画の行ごとの比較を実行します。

分析タスクの実行計画の比較方法を構成するには:

  • SET_ANALYSIS_TASK_PARAMETERプロシージャを使用して、PLAN_LINES_COMPARISONパラメータの値を設定します。

    表3-1は、PLAN_LINES_COMPARISONパラメータの有効な値を示しています。

表3-1 SQLパフォーマンス・アナライザ・タスクの実行計画方法

方法 説明

ALWAYS

分析タスクで常に実行計画の行ごとの比較が実行されます。

AUTO

最初のSQL試行の計画のハッシュ値の計算が変更された場合、または2番目のSQL試行が使用できない場合にのみ、分析タスクで実行計画の行ごとの比較が実行されます。

NONE

計画のハッシュ値が不明の場合にのみ、分析タスクで実行計画の行ごとの比較が実行されます。これがデフォルト値です。

次の例に、分析タスクの実行計画方法をAUTOに設定する方法を示します。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'PLAN_LINES_COMPARISON', -
       value => 'AUTO');

関連項目:

APIを使用したExadataシミュレーションの分析タスクの構成

SQLパフォーマンス・アナライザがOracle Exadataシミュレーションを実行するように構成できます。SQLパフォーマンス・アナライザが、SQLワークロードのパフォーマンスに関するExadata Storage Serverインストールの影響をどのようにシミュレートするかについては、「Exadataシミュレーション・ワークフローの使用」を参照してください。

分析タスクでExadataシミュレーションを有効にするには:

  • 次に例を示すとおり、変更後のSQL試行を作成する前に、SET_ANALYSIS_TASK_PARAMETERプロシージャをコールします。

    EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
           parameter => 'CELL_SIMULATION_ENABLED', -
           value => 'TRUE');
    

    この操作によって、変更後のSQL試行を作成する際に、Exadataシミュレーションが有効になります。作成した変更後のSQL試行は、Exadataシミュレーションを無効にして作成した変更前のSQL試行と比較することができます。

または、tcellsim.sqlスクリプトを使用してExadataシミュレーションを実行することもできます。

tcellsim.sqlを使用してExadataのシミュレーションを実行するには:

  1. SQLプロンプトで次のように入力します。

    @$ORACLE_HOME/rdbms/admin/tcellsim.sql
    
  2. 使用するSQLチューニング・セットの名前および所有者を入力します。

    Enter value for sts_name: MY_STS
    Enter value for sts_owner: IMMCHAN
    

    スクリプトによって次の4つのステップが自動的に実行されます。

    • SQLパフォーマンス・アナライザのタスクの作成

    • Exadataシミュレーションを無効にした状態でのSQL文のテスト実行

    • Exadataシミュレーションを有効にした状態でのSQL文のテスト実行

    • パフォーマンスの比較と分析レポートの生成

関連項目:

APIを使用した分析タスクでのマルチテナント・コンテナ・データベース識別子の再マッピング

取得したSQL文をSQLチューニング・セットに格納し、SQLパフォーマンス・アナライザ・タスクの作成時に入力ソースとして使用できます。その後、SQLパフォーマンス・アナライザはこのSQLチューニング・セットをSQL試行のテスト実行または実行計画生成のソースとして使用します。

非CDBからマルチテナント・コンテナ・データベース(CDB)に転送されたSQLチューニング・セットを入力ソースとして使用する場合、SQLチューニング・セット内のSQL文のCDB識別子を再マッピングして、STSをCDB内で使用できるようにする必要があります。CDB識別子を再マッピングすると、SQLチューニング・セット内の各SQL文はCDB内の対応するプラガブル・データベース(PDB)に再マッピング可能なCDB識別子に関連付けられます。

通常CDB識別子は、SQLチューニング・セットを非CDBからCDBに転送する際に再マッピングする必要があります。この場合、単純にSQLチューニング・セットをSQLパフォーマンス・アナライザの入力ソースとして使用します。ただし、CDB識別子がまだ再マッピングされていないSQLチューニング・セットを使用している場合、SQLパフォーマンス・アナライザのタスク・プロパティとして再マッピングを指定できます。

分析タスク用にCDB識別子を再マッピングするには:

  • 次の例のように、SET_ANALYSIS_TASK_PARAMETERプロシージャを使用します。

    EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'non_cdb_spa1', -
           parameter => 'CON_DBID_MAPPING', -
           value => '1234:5678,1357:2468');
    

    この例では、CDB識別子の12341357は、それぞれ56782468に再マッピングされます。

CDB識別子が再マッピングされると、古いCDB識別子と一致する新しいCDB識別子をSQLパフォーマンス・アナライザは使用して、CDB内の適切なPDBでSQL文を実行します。

関連項目:

分析タスクでのトリガーの実行の構成

分析タスクでトリガーを実行するかどうかを構成できます。デフォルトでは、トリガーは、SQLパフォーマンス・アナライザで実行されます。

分析タスクでのトリガーの実行を構成するには:

  • SET_ANALYSIS_TASK_PARAMETERプロシージャを使用して、EXECUTE_TRIGGERSパラメータの値を設定します。

    表3-2は、EXECUTE_TRIGGERSパラメータの有効な値を示しています。

表3-2 EXECUTE_TRIGGERSパラメータの有効な値

説明

FALSE

TEST EXECUTEのEXECUTE_FULLDMLモードであってもトリガーはSQLパフォーマンスアナライザで実行されません。これがデフォルト値です。

TRUE

すべてのトリガーは、SQLパフォーマンス・アナライザで実行されます。

次に、EXECUTE_TRIGGERSパラメータの値をFALSEに設定する例を示します。この設定では、トリガーはSQLパフォーマンス・アナライザで実行されません。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'EXECUTE_TRIGGERS', -
       value => 'FALSE');

関連項目:

分析タスクでコールにより返される日付の構成

分析タスクでSYSDATEを参照するSQL文の処理方法を構成できます。

分析タスクでSYSDATEのコールによって返される日付を構成するには:

REPLACE_SYSDATE_WITHパラメータを設定すると、タスク実行内のSYSDATEへのすべてのコールは、このパラメータで指定された日付を返します。これは、SPAタスクへの入力がSQLチューニング・セット(STS)である場合に使用できます。

  • SET_ANALYSIS_TASK_PARAMETERプロシージャを使用して、REPLACE_SYSDATE_WITHパラメータの値を設定します。

表3-3は、REPLACE_SYSDATE_WITHパラメータの有効な値を示しています。

表3-3は、REPLACE_SYSDATE_WITHパラメータの有効な値を示しています。

説明

CURRENT_SYSDATE

タスク実行内でのSYSDATEへのすべてのコールは現在のSYSDATEを返します。これはデフォルトです。

SQLSET_SYSDATE

SYSDATEコールを含むすべてのSQL文で、SQLパフォーマンス・アナライザは、その値を、該当にのSQL文に対するDBA_SQLSET_STATEMENTSビューのLAST_EXEC_START_TIME列の値で置き換えます。

ノート:

このパラメータの設定は、SQLパフォーマンス・アナライザのタスクの実行以外のSYSDATEへのコールには影響しません。

次に、REPLACE_SYSDATE_WITHパラメータの値をSQLSET_SYSDATEに設定する例を示します。これにより、タスクの実行内のSYSDATEへのコールでは、SQLチューニング・セットでSYSDATEが返されます。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'REPLACE_SYSDATE_WITH', -
       value => 'SQLSET_SYSDATE');

関連項目:

分析タスクでフェッチする行数の構成

分析タスクでSQL文に対してフェッチする行数を構成できます。

分析タスクでフェッチする行数を構成するには:

  • SET_ANALYSIS_TASK_PARAMETERプロシージャを使用して、NUM_ROWS_TO_FETCHパラメータの値を設定します。

    表3-4に、NUM_ROWS_TO_FETCHパラメータの有効な値を示します。

表3-4 NUM_ROWS_TO_FETCHパラメータの有効な値

説明

ALL_ROWS

SQLのすべての行をフェッチします。これがデフォルト値です。

AUTO

結果行の数は、SQLチューニング・セットで取得されたオプティマイザ環境のOPTIMIZER_MODEパラメータの値を使用して決定されます。OPTIMIZER_MODEの値がALL_ROWSの場合、すべての結果行がフェッチされます。値がFIRST_ROWS_nの場合、n個の結果行がSQLパフォーマンス・アナライザによってフェッチされます。

AVERAGE

結果行の数は、処理される行数の合計およびSQLチューニング・セット内の各SQLの合計実行回数の比率として計算されます。

有効な数値

結果行の数は、この指定値と等しくなり、フェッチする行数が少ない場合はこの値より少なくなります。

次に、NUM_ROWS_TO_FETCHパラメータの値をALL_ROWSに設定する例を示します。これにより、SQLのすべての行がフェッチされます。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'NUM_ROWS_TO_FETCH', -
       value => 'ALL_ROWS');

関連項目:

分析タスクの並列度の構成

並列度の設定および同時SQL実行の有効化が可能です。

分析タスクの並列度を構成するには:

  • SET_ANALYSIS_TASK_PARAMETERプロシージャを使用して、TEST_EXECUTE_DOPパラメータの値を設定します。

次の表は、TEST_EXECUTE_DOPパラメータの有効な値を示しています。

表3-5 TEST_EXECUTE_DOPパラメータの有効な値

説明

0

これはデフォルト値です。タスクは順次実行されます。

以上 2

同時実行が有効になっています。

次に、TEST_EXECUTE_DOPパラメータの値を4に設定して同時実行を有効化する方法の例を示します。
EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'TEST_EXECUTE_DOP', -
       value => 4);

ノート:

同時実行は、EXPLAIN PLANおよびTEST EXECUTE実行タイプでのみサポートされています。

関連項目:

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETERプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

SQLパフォーマンス・アナライザの使用によるSQL結果セットの検証

2つのSQLパフォーマンス・アナライザ(SPA)試行のテスト実行時に、SQL結果セットの比較がサポートされるようになりました。

SQL結果セットが検証され、行または値の数が一致していない場合は、SQLパフォーマンス・アナライザ・レポートに記録されます。SQL結果セット検証は、COMPARE_RESULTSETパラメータによって制御されます。

SET_ANALYSIS_TASK_PARAMETERプロシージャは、COMPARE_RESULTSETパラメータの値を設定するのに使用されます。

次の表は、COMPARE_RESULTSETパラメータの有効な値を示しています。

表3-6 COMPARE_RESULTSETパラメータの有効な値

説明

TRUE

SQL結果セットの比較が実行されます。

FALSE

SQL結果セットの比較は実行されません。

次に、COMPARE_RESULTSETパラメータの値をTRUEに設定する方法の例を示します。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(task_name => 'my_spa_task', -
       parameter => 'COMPARE_RESULTSET', -
       value => 'TRUE');

関連項目:

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETERプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。