SQLチューニング・アドバイザを使用したSQLの分析

SQLチューニング・アドバイザを使用して、SQL文の分析およびチューニングを行うことができます。

SQLチューニングは、データベース・システムのパフォーマンス・チューニングの重要な側面です。SQLチューニング・アドバイザは、パフォーマンスが最適でないSQL文に関する問題を解決するためのメカニズムです。入力として1つ以上のSQL文または1つのSQLチューニング・セット(STS)を取得し、自動チューニング・オプティマイザを起動して文を分析します。結果と推奨事項の形式で出力され、各推奨事項の論理的根拠および予想される利点が示されます。チューニングの推奨事項には次のものが含まれ、推奨事項を受け入れてSQL文のチューニングを完了するかどうかを選択できます。

  • オブジェクト統計の収集
  • 索引の作成
  • SQL文のリライト
  • SQLプロファイルの作成
  • SQL計画ベースラインの作成

詳細は次の項を参照してください。

データベース管理では、SQLチューニング・アドバイザを使用して、管理対象データベースのSQL文を分析できます。

ノート

SQLチューニング・アドバイザは、Oracle Database Enterprise Editionバージョン12.2以降でのみ使用でき、データベースにCOMPATIBLE初期化パラメータが設定されている場合は、バージョン12.2.0以降と一致する必要があります。データベースの互換性の詳細は、『Oracle Databaseアップグレード・ガイド』Oracle Databaseの互換性の概要に関する項を参照してください。

ここでは、データベース管理でのSQLチューニング・アドバイザの使用に関連する主なステップを示します:

  1. 入力の選択およびSQLチューニング・アドバイザの実行: SQLチューニング・アドバイザの入力(SQL文またはSTS)は、次のいずれかのオプションを使用して選択し、SQLチューニング・タスクとして発行できます:
    • パフォーマンス・ハブに移動し、「ASH分析」タブで1つ以上のSQL IDを選択し、「SQLのチューニング」をクリックします。

    • 「SQLチューニング・アドバイザのタスク」セクションの「SQLのチューニング」をクリックし、SQL文またはSTSを選択します。個々のSQL文を入力として選択できるようにするには、パフォーマンス・ハブの「ASH分析」タブで、先にSQL文を選択しておく必要があります。

    • データベースで自動SQLチューニングを有効にします。データベース管理では、SQLチューニング・アドバイザの自動構成はサポートされていませんが、データベースでSQLチューニング・アドバイザが自動的に実行されるように構成されている場合は、自動SQLチューニング・タスクと結果および推奨事項もデータベース管理に表示されます。SQLチューニング・アドバイザを自動タスクとして構成する方法の詳細は、Oracle Database SQLチューニング・ガイド自動SQLチューニング・タスクの管理を参照してください。

  2. 結果の表示: SQLチューニング・アドバイザの結果は、「管理対象データベースの詳細」ページの「SQLチューニング・アドバイザのタスク」セクションに表示されます。
  3. 推奨事項の実装: SQLチューニング・アドバイザの結果および推奨事項は、「SQLチューニング・アドバイザのタスク詳細」ページに表示され、ユーザーはこの情報を確認して、推奨事項の実装を選択できます。

SQLチューニング・アドバイザを使用するために必要なロールおよび権限

SQLチューニング・アドバイザ・ワークフローのタスクを実行するには、Oracle Databaseの管理権限が必要です。さらに、次のロールおよび権限が割り当てられている必要があります:

GRANT SELECT_CATALOG_ROLE <following privileges> TO <admin user>
  • ADVISOR
  • CREATE JOB
  • CREATE SESSION
  • SELECT ANY DICTIONARY
  • INHERIT ANY PRIVILEGES
  • ADMINISTER SQL TUNING SET TO <SQLTUNEUSER>

Oracle Databaseのロールおよび権限の詳細は、『Oracle Databaseセキュリティ・ガイド』権限およびロール認可の構成に関する項を参照してください。

SQLチューニング・アドバイザの実行

最初のステップとして、選択したSQL文またはSTSに対してSQLチューニング・アドバイザを実行する必要があります。

管理対象データベースの「管理対象データベースの詳細」ページで、次のいずれかのオプションを使用して、「SQLチューニング・アドバイザの実行」パネルにアクセスできます:

  • 「パフォーマンス・ハブ」をクリックし、「ASH分析」タブで、待機クラス別SQL IDセクション(デフォルト・ビュー)にリストされているSQL IDまで下にスクロールし、SQL文を1つ以上選択して、「SQLのチューニング」をクリックします。

    ノート

    管理対象データベースのパフォーマンス・ハブは、Oracle Database Enterprise Editionのみをサポートしています。パフォーマンス・ハブ機能を使用できるかどうかはOracle Databaseのタイプおよびバージョンによって決まり、また特定の追加権限が必要です。管理対象データベースのパフォーマンス・ハブの使用に影響を与えるすべての条件の詳細は、My Oracle SupportOCI: パフォーマンス・ハブの前提条件(ドキュメントID 2760305.1)を参照してください。
  • 左ペインの「リソース」の下にある「SQLチューニング・アドバイザ」をクリックし、「SQLチューニング・アドバイザのタスク」セクションの「SQLのチューニング」をクリックします。

「SQLチューニング・アドバイザの実行」パネル:

  1. 「タスク定義」セクションで、次の詳細を入力します:
    1. 名前: SQLチューニング・タスクの名前を入力します。
    2. 説明: オプションで、タスクの説明を入力します。
  2. 「SQL」セクションで、次のオプションのいずれかを選択します:
    • 選択したSQL文: このオプションは、パフォーマンス・ハブで選択したSQL文を選択および分析するために使用します。このオプションが有効になるのは、パフォーマンス・ハブの「ASH分析」タブで、先にSQL文が選択されていた場合のみであることに注意してください。
    • SQLチューニング・セット: このオプションは、SQLチューニング・アドバイザへの入力としてSTSを選択する際に使用します。STSがこのセクションにリストされるのは、STSが先にデータベースに作成されている場合のみであることに注意してください。STSの詳細は、『Oracle Database SQLチューニング・ガイド』SQLチューニング・セットでのワークロードの取得に関する項を参照してください。
  3. 「タスク・パラメータ」セクションにタスクのスコープを指定します:
    1. 合計時間制限(分): SQLチューニング・アドバイザが文の分析に費やす合計時間を指定します。
    2. 分析の範囲: 適切なオプションを選択して、分析のスコープを定義します。
      • 制限あり: SQLチューニング・アドバイザでは、統計チェック、アクセス・パス分析およびSQL構造分析に基づく推奨事項が生成されます。SQLプロファイルの推奨事項は生成されません。
      • 包括的: SQLチューニング・アドバイザでは、「制限あり」スコープで実行されるすべての分析に加えて、SQLプロファイリングが実行されます。
  4. 「資格証明」セクションの「資格証明タイプ」ドロップダウン・リストで使用可能なオプションの1つを選択して、管理対象データベースに接続するデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
  5. 「実行」をクリックします。
SQLチューニング・タスクがSQLチューニング・アドバイザに発行されます。

SQLチューニング・アドバイザの結果の表示

SQLチューニング・アドバイザの実行時に、データベース管理でその結果および推奨事項を表示できます。

選択したSQL文またはSTSでSQLチューニング・アドバイザを実行すると、「SQLチューニング・アドバイザのタスク」セクションにSQLチューニング・タスクが表示されます。データベースでSQLチューニング・アドバイザが自動的に実行されるように構成されている場合は、自動SQLチューニング・タスクも表示されます。SQLチューニング・タスクごとに、「アクション」アイコン(アクション)をクリックし、「SQLチューニング・タスクの再実行」オプションをクリックすると、SQLチューニング・タスクを必要に応じて再実行できます。

SQLチューニング・タスクの名前をクリックして、SQLチューニング・アドバイザのタスク詳細ページに移動します。The SQL Tuning Advisor findings and recommendations are displayed on the following tabs on the SQL Tuning Advisor task details page:

  • 「サマリー」タブ: SQLチューニング・アドバイザによって提供されたタスクおよび結果のサマリーがグラフィカルに表示されます:
    • 調査された個別のSQL文: SQLチューニング・アドバイザによって調査されたSQL文は、「結果ありで調査されたSQL」「エラーによりスキップされたSQL」および「結果なしで調査されたSQL」カテゴリにグループ化され、ドーナツ・チャートに表示されます。そのSQL文が複数回実行された場合、対象となるのは、分析期間中の1回(個別)の実行のみであることに注意してください。
    • SQLプロファイルの推奨事項の利点: SQLプロファイルの推奨事項の利点(DB時間(秒))が棒グラフで表示されます。棒グラフには「前」および「後」の棒があり、それぞれ実際のDB時間と改善されたDB時間を示します。SQLプロファイルの推奨事項が提供されているが実装されていない場合は、単一の「潜在的」ベネフィット・チャートが表示され、SQLプロファイルの推奨事項が部分的に実装されている場合は、「潜在的」および「実装」ベネフィット・チャートが表示され、SQLプロファイルの推奨事項が完全に実装されている場合は、「実装」ベネフィット・チャートのみが表示されます。
    • タイプ別推奨事項のある結果: SQLチューニング・アドバイザの結果と推奨事項がタイプ別に分類されて、棒グラフで表示されます。
  • 「SQLの結果」タブ: 結果を表示し、SQLチューニング・アドバイザの推奨事項を実装します。SQL文のリストと、SQLチューニング・アドバイザにより実行された分析に基づく対応する情報が表示されます。これには、推定されるパフォーマンス上のベネフィット、結果および推奨事項が含まれます。1つのSQL文を選択すると、各結果の特定の推奨事項、論理的根拠、および推奨事項を実装した場合の予想されるベネフィットが表示されます。このタブでは、使用可能なオプションを使用して、すべてのSQLプロファイルの推奨事項の実装、1つの推奨事項の実装、および実行計画の比較を行うことができます。
  • 「結果のないSQL」タブ: 結果や推奨事項がない、エラーがあった、またはタスクがタイムアウトしたためにスキップされたSQL文を表示します。

SQLチューニング・アドバイザの推奨事項の実装

SQLチューニング・アドバイザの推奨事項を実装するジョブを作成できます。

これを行うには、「SQLチューニング・アドバイザのタスク詳細」ページに移動し、「SQL結果」タブでSQLチューニング・アドバイザの分析結果および推奨事項を表示します。このタブでは、すべてのSQLプロファイルの推奨事項を実装するジョブを作成したり、1つのSQLプロファイル、索引または統計関連の推奨事項を実装したり、実行計画を比較したりできます。SQLの再構築、代替計画およびその他の結果も表示されますが、SQLの再構築および代替計画の推奨事項を実装するオプションは使用できません。SQLの再構築および代替計画の詳細は、『Oracle Database SQLチューニング・ガイド』SQL構造分析および代替計画分析に関する項を参照してください。


「SQL結果」タブ

すべてのSQLプロファイル推奨事項の実装

  1. 「SQLチューニング・アドバイザのタスク詳細」ページに移動し、「SQL結果」タブをクリックします。
  2. 「すべてのSQLプロファイル推奨事項の実装」をクリックします。
  3. 「すべての推奨事項の実装」パネルで:
    1. 次の情報を指定して、推奨事項を実装するジョブを作成します:
      1. 名前: ジョブの一意の名前を入力します。
      2. 説明: オプションで、ジョブの説明を入力します。
    2. タスク・パラメータを指定します:
      1. 強制照合によって新規プロファイルを実装: これを選択して、すべてのリテラル値をバインド変数に正規化した後に、同じテキストを持つすべてのSQL文をターゲット指定します。SQL文でリテラル値とバインド値を組み合せて使用している場合、バインド変換は行われません。
      2. SQLプロファイル・カテゴリの設定: これを選択して、SQLプロファイルを作成するカテゴリを指定し、「カテゴリ内のプロファイルの作成」フィールドにカテゴリの名前を入力します。
    3. ジョブ・パラメータの指定:
      1. 資格証明タイプ: 使用可能なオプションの1つを選択して、管理対象データベースに接続するためのデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
      2. ジョブ出力のバケット: ジョブ出力が格納されるOracle Object Storageバケットを選択します。Oracle Object Storageバケットは、ジョブと同じコンパートメントにも、別のコンパートメントにも配置でき、このバケットを選択するには、必要なOracle Cloud Infrastructure Object Storageサービス権限を持っている必要があります。詳細は、診断および管理を使用するために必要な追加権限を参照してください。
    4. オプションで、「SQLの表示」をクリックして、実行されるSQL文を表示します。
    5. 「推奨事項の実装」をクリックします。
これで、すべてのSQLプロファイル推奨事項が実装されます。このジョブは、管理対象データベースの「ジョブ」セクションでモニターできます。

1つのSQLプロファイル推奨事項を実装するには、1つのSQL文を選択し、「SQL IDの推奨事項を1つ実装: <SQL ID>」セクションまで下にスクロールし、「SQLプロファイル」行の「アクション」アイコン(アクション)をクリックして、「推奨事項の実装」をクリックします。

SQLプロファイルの詳細は、『Oracle Database SQLチューニング・ガイド』SQLプロファイルに関する項を参照してください。

索引推奨事項の実装

  1. 「SQL結果」タブで、1つのSQL文を選択し、「SQL IDの1つの推奨事項を実装: <SQL ID>」セクションまで下にスクロールして、「索引」行の「アクション」アイコン(アクション)をクリックし、「推奨事項の実装」をクリックします。
  2. 「推奨の実装」パネルで:
    1. 次の情報を指定して、推奨事項を実装するジョブを作成します:
      1. 名前: ジョブの一意の名前を入力します。
      2. 説明: オプションで、ジョブの説明を入力します。
    2. 「タスク・パラメータ」セクションで、索引の推奨事項の実装に使用する表領域を選択します。
    3. ジョブ・パラメータの指定:
      1. 資格証明タイプ: 使用可能なオプションの1つを選択して、管理対象データベースに接続するためのデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
      2. ジョブ出力のバケット: ジョブ出力が格納されるOracle Object Storageバケットを選択します。Oracle Object Storageバケットは、ジョブと同じコンパートメントにも、別のコンパートメントにも配置でき、このバケットを選択するには、必要なOracle Cloud Infrastructure Object Storageサービス権限を持っている必要があります。詳細は、診断および管理を使用するために必要な追加権限を参照してください。
    4. オプションで、「SQLの表示」をクリックして、実行されるSQL文を表示します。
    5. 「推奨事項の実装」をクリックします。
これで、索引の推奨事項が実装されます。このジョブは、管理対象データベースの「ジョブ」セクションでモニターできます。

統計推奨の実装

  1. 「SQL結果」タブで、1つのSQL文を選択し、「SQL IDの1つの推奨事項を実装: <SQL ID>」セクションまで下にスクロールして、「統計」行の「アクション」アイコン(アクション)をクリックし、「推奨事項の実装」をクリックします。
  2. 「推奨の実装」パネルで:
    1. 次の情報を指定して、推奨事項を実装するジョブを作成します:
      1. 名前: ジョブの一意の名前を入力します。
      2. 説明: オプションで、ジョブの説明を入力します。
    2. 「タスク・パラメータ」セクションで、実装の対象となっている統計を確認します。
    3. ジョブ・パラメータの指定:
      1. 資格証明タイプ: 使用可能なオプションの1つを選択して、管理対象データベースに接続するためのデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
      2. ジョブ出力のバケット: ジョブ出力が格納されるOracle Object Storageバケットを選択します。Oracle Object Storageバケットは、ジョブと同じコンパートメントにも、別のコンパートメントにも配置でき、このバケットを選択するには、必要なOracle Cloud Infrastructure Object Storageサービス権限を持っている必要があります。詳細は、診断および管理を使用するために必要な追加権限を参照してください。
    4. オプションで、「SQLの表示」をクリックして、実行されるSQL文を表示します。
    5. 「推奨事項の実装」をクリックします。
これで、統計の推奨事項が実装されます。このジョブは、管理対象データベースの「ジョブ」セクションでモニターできます。

実行計画の比較

実行計画とは、Oracleオプティマイザによって、SELECTUPDATEINSERTおよびDELETE文に選択された実行計画を表示する文です。文の実行計画は、Oracleがその文を実行するために行う一連の操作です。

実行計画を表示して比較するには:

  1. 「SQL結果」タブで、1つのSQL文を選択し、「SQL IDの1つの推奨事項の実装: <SQL ID>」セクションまで下にスクロールして、「索引」行または「SQLプロファイル」行の「アクション」アイコン(アクション)をクリックして、「実行計画の比較」をクリックします。
  2. 実行計画の比較ページで:
    • 「プロファイル・テスト結果」タブの元の実行計画および新しい実行計画の「I/O数」を比較します。この比較はグラフィカルに表示され、「CPU時間」「Buffer gets」「Disk reads」などのメトリックが比較されます。比較レポートが生成されない場合、「プロファイルのテスト結果」タブは表示されません。
    • 「実行計画」タブで、SQL文の元の実行計画と新しい実行計画のステップを比較します。This comparison is provided in a tabular view, however, you can select Graphical explain plan in the View option drop-down list to view a graphical representation of the explain plan.「Graphical EXPLAIN PLAN」ビューで、「ROTE」をクリックするか、マウスとタッチ・パッドを使用してEXPLAIN PLANをスクロールし、操作の順序を表示します。
  3. 「閉じる」をクリックして、「SQLチューニング・アドバイザのタスク詳細」ページに戻ります。