SQLチューニング・セットの管理

SQLチューニング・セットを管理し、データベース管理でSQLチューニング・セットの作成やSQL文のSQLチューニング・セットへのロードなどのタスクを実行できます。

SQLチューニング・セットは、SQLパフォーマンスのモニタリングおよびチューニングを目的として、SQLワークロード・データの収集、管理およびアクセスのメカニズムとして機能するデータベース・オブジェクトです。これにより、SQL文および関連するメタデータを、SQLチューニング・アドバイザなどのチューニング・ツールへの入力として使用できる単一のデータベース・オブジェクトにグループ化できます。SQLチューニング・セットには次のものが含まれます。

  • SQL文のセット
  • ユーザー・スキーマ、アプリケーション・モジュール名とアクション、バインド値のリスト、カーソル・コンパイル環境など、関連する実行コンテキスト。
  • 経過時間、CPU時間、バッファ読取り、ディスク読取り、処理された行、カーソル・フェッチ、実行数、完了した実行数、オプティマイザ・コスト、コマンド・タイプなど、関連する基本実行統計
  • 各SQL文に関連する実行計画および行ソースの統計(オプション)

データベース管理でSQLチューニング・セットを管理するには、「管理対象データベースの詳細」ページに移動し、左側のペインの「リソース」の下にある「SQLチューニング・セット」をクリックします。管理対象データベースの既存のSQLチューニング・セットのリストが、SQLチューニング・セットの名前、ステータス、所有者、SQLチューニング・セット内の文の数などの情報とともに表示されます。

次のSQLチューニング・セット関連のタスクを実行できます。

  • 新しいSQLチューニング・セットを作成し、複数のソースからSQL文をロードします。
  • SQL文を既存のSQLチューニング・セットにロードします。
  • SQLチューニング・セットの詳細をモニターします。
  • SQL文をSQLチューニング・セットから別の新規または既存のSQLチューニング・セットに保存します。
  • SQLチューニング・セット内の1つ以上の文を削除します。

また、SQLチューニング・セットの作成時またはSQLチューニング・セットの詳細の監視時に、SQL文をフィルタするSQL述部を指定できます。SQL述語は、SQLSET_ROWの属性に基づいています。詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のSQLSET_ROWオブジェクト・タイプに関する項を参照してください。

SQLチューニング・セットの管理に必要な権限

次のいずれかの権限が必要です。

  • ADMINISTER SQL TUNING SET: 所有するSQLチューニング・セットを管理できます。
  • ADMINISTER ANY SQL TUNING SET: 任意のSQLチューニング・セットを管理できます。

SQLチューニング・セットの作成

管理対象データベースの新しいSQLチューニング・セットを作成し、複数のソースからSQL文をロードできます。

  1. 「管理対象データベースの詳細」ページの「SQLチューニング・セット」セクションで、「作成」をクリックします。
  2. 「SQLチューニング・セットの作成」パネルの「SQLチューニング・セット情報」ページで:
    1. 次の情報を指定して、空のSQLチューニング・セットを作成します。
      1. 名前: SQLチューニング・セットの名前を入力します。
      2. 所有者: SQLチューニング・セットの所有者のデータベース・ユーザー名を入力します。
        ノート

        優先資格証明がデータベース管理で設定されている場合、所有者のユーザー名は自動移入されます。たとえば、拡張診断の優先資格証明が設定されている場合、関連付けられたデータベース・ユーザーがSQLチューニング・セットの所有者になります。優先資格証明の詳細は、優先資格証明の設定を参照してください。
      3. 説明: オプションで、SQLチューニング・セットの説明を入力します。
    2. 「次へ」をクリックします
  3. 「SQLチューニング・セットの作成」パネルの「SQLのロード」ページで、次の手順を実行します。
    1. 次のいずれかのロード方法を選択して、SQLチューニング・セットにSQL文を収集およびロードします。
      • 増分カーソル・キャッシュ: このオプションを選択し、次の詳細を指定して、指定した期間中にカーソル・キャッシュからSQLチューニング・セットにアクティブなSQL文を選択し、増分的にロードします。
        1. 取得時間(秒): 共有SQL領域からアクティブなSQL文が取得される期間を入力します。
        2. 繰返し間隔(秒): アクティブなSQL文の取得間隔を入力します。
        3. 取得オプション: SQL文をSQLチューニング・セットにロードする取得オプションを選択します。
          • 挿入: 新しいSQL文のみを追加する場合に選択します。
          • 更新: 選択すると、既存のSQL文が更新され、新しい文は無視されます。
          • マージ: 新しいSQL文を追加し、既存のSQL文を更新する場合に選択します。
        4. 取得モード: 「更新」および「マージ」取得オプションの取得モードを選択します。
          • 古い統計の置換: 実行数がSQLチューニング・セットに格納されている数より大きい場合は、古い統計が置換されます。
          • 統計の累積: SQL文に対して格納済の現在の値に、新しい値が加算されます。このモードでは、期限切れになった文が検出されるため、最終的な統計値は、そのSQL文が存在したすべてのカーソルの統計の合計になることに注意してください。
        5. 再帰的SQL: SQLチューニング・セットに再帰的SQL文を含める場合に選択します。
        6. フィルタ: SQL述部を入力して、SQLチューニング・セットにロードするSQL文をフィルタします。フィルタを指定しない場合、CREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGE文のみが取得されます。SQL述語は、SQLSET_ROWの属性に基づいています。
      • 現在のカーソル・キャッシュ: このオプションを選択し、次の詳細を指定して、カーソル・キャッシュからSQLチューニング・セットにSQL文を選択してロードします。
        1. 結果のソート基準: 結果のソート順を指定するメトリックを最大3つ選択します。これは、設定されている制限よりも多くのSQL文が結果に含まれる場合に役立ちます。
        2. 結果の割合: 一致結果の割合を示す数値を入力します。フィルタ問合せの結果には、一致するすべてのSQL文の中でソートが最も高いSQL文の指定した割合が含まれます。ソートは、「結果のソート基準」ドロップダウン・リストで指定されたメトリックに基づいており、このオプションを使用するには少なくとも1つのメトリックを選択する必要があります。
        3. 結果制限: 一致結果の強い制限を示す数値を入力します。フィルタ問合せの結果は、指定した数のSQL文に制限されます。「結果のソート基準」ドロップダウン・リストでメトリックが選択されている場合、上位SQL文を選択する前に結果のソートが適用されます。値0は、一致するすべてのSQL文を結果に含める必要があることを示します。
        4. ロード・オプション: SQL文をSQLチューニング・セットにロードするオプションを選択します:
          • 挿入: 新しいSQL文のみを追加する場合に選択します。
          • 更新: 選択すると、既存のSQL文が更新され、新しい文は無視されます。
          • マージ: 新しいSQL文を追加し、既存のSQL文を更新する場合に選択します。
        5. 拡張オプション: このセクションを展開して、SQL文のロード方法を制御する拡張オプションを使用します:
          • 属性リスト: SQLチューニング・セットに含めるSQL文属性を指定するオプションを選択します。
            • 基本: SQL計画を除くすべての属性(バインド、統計など)を含めます。これには、実行コンテキストも含まれます。
            • 標準: 基本属性をSQL計画とともに含めます。これには、行ソース統計およびオブジェクト参照リストは含まれません。
            • すべて: すべての属性を実行コンテキストとともに含めます。
          • 行のコミット: SQL文が増分的にコミットされるか、ロードの終了時にコミットされるかを指定する数値を入力します。このフィールドに0が指定されている場合、コミットはロードの最後に1回のみ実行されます。それ以外の場合は、指定された数のステートメントがロードされるたびにコミットが実行されます。
          • 更新オプション: SQLチューニング・セット内の既存のSQL文の更新方法を指定する更新オプションを選択します。この選択は、「更新」および「マージ」ロード・オプションでのみ考慮されます:
            • 古い統計の置換: 新しい統計、バインド・リスト、オブジェクト・リストなどを使用してSQL文を更新します。これがデフォルトのオプションです。
            • 統計の累積: 可能な場合は統計を結合するか、既存の値を指定された値に置き換えます。累積が可能なSQL文の統計は、elapsed_timebuffer_getsdirect_writesdisk_readsrows_processedfetchesexecutionsend_of_fetch_countstat_periodおよびactive_stat_periodです。
          • 属性の更新: SQLチューニング・セットで更新するSQL文属性を指定するオプションを選択します。この選択は、「更新」および「マージ」ロード・オプションでのみ考慮されます:
            • 基本: 統計およびバインドのみ。
            • 標準: 基本属性をSQL計画とともに含めます。これには、行ソース統計およびオブジェクト参照リストは含まれません。
            • すべて: すべての属性を実行コンテキストとともに含めます。
          • 再帰的SQL: SQLチューニング・セットに再帰的SQL文を含める場合に選択します。
          • null属性を無視: 新しい値がNULLの場合に属性を無視する場合に選択します。
        6. フィルタ: SQL述部を入力して、SQLチューニング・セットにロードするSQL文をフィルタします。フィルタを指定しない場合、CREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGE文のみが取得されます。SQL述語は、SQLSET_ROWの属性に基づいています。
      • AWRスナップショット: このオプションを選択し、次の詳細を指定して、AWRスナップショットからSQL文を選択してロードします。
        1. 開始スナップショット: 開始スナップショットのIDを範囲に入力します(これらを含まない)。
        2. 終了スナップショット: 終了スナップショットのIDを範囲(包含)に入力します。
        3. 結果のソート基準: 結果のソート順を指定するメトリックを最大3つ選択します。これは、設定されている制限よりも多くのSQL文が結果に含まれる場合に役立ちます。
        4. 結果の割合: 一致結果の割合を示す数値を入力します。フィルタ問合せの結果には、一致するすべてのSQL文の中でソートが最も高いSQL文の指定した割合が含まれます。ソートは、「結果のソート基準」ドロップダウン・リストで指定されたメトリックに基づいており、このオプションを使用するには少なくとも1つのメトリックを選択する必要があります。
        5. 結果制限: 一致結果の強い制限を示す数値を入力します。フィルタ問合せの結果は、指定した数のSQL文に制限されます。「結果のソート基準」ドロップダウン・リストでメトリックが選択されている場合、上位SQL文を選択する前に結果のソートが適用されます。値0は、一致するすべてのSQL文を結果に含める必要があることを示します。
        6. ロード・オプション: SQL文をSQLチューニング・セットにロードするオプションを選択します:
          • 挿入: 新しいSQL文のみを追加する場合に選択します。
          • 更新: 選択すると、既存のSQL文が更新され、新しい文は無視されます。
          • マージ: 新しいSQL文を追加し、既存のSQL文を更新する場合に選択します。
        7. 拡張オプション: このセクションを展開して、SQL文のロード方法を制御する拡張オプションを使用します:
          • 属性リスト: SQLチューニング・セットに含めるSQL文属性を指定するオプションを選択します。
            • 基本: SQL計画を除くすべての属性(バインド、統計など)を含めます。これには、実行コンテキストも含まれます。
            • 標準: 基本属性をSQL計画とともに含めます。これには、行ソース統計およびオブジェクト参照リストは含まれません。
            • すべて: すべての属性を実行コンテキストとともに含めます。
          • 行のコミット: SQL文が増分的にコミットされるか、ロードの終了時にコミットされるかを指定する数値を入力します。このフィールドに0が指定されている場合、コミットはロードの最後に1回のみ実行されます。それ以外の場合は、指定された数のステートメントがロードされるたびにコミットが実行されます。
          • 更新オプション: SQLチューニング・セット内の既存のSQL文の更新方法を指定する更新オプションを選択します。この選択は、「更新」および「マージ」ロード・オプションでのみ考慮されます:
            • 古い統計の置換: 新しい統計、バインド・リスト、オブジェクト・リストなどを使用してSQL文を更新します。これがデフォルトのオプションです。
            • 統計の累積: 可能な場合は統計を結合するか、既存の値を指定された値に置き換えます。累積が可能なSQL文の統計は、elapsed_timebuffer_getsdirect_writesdisk_readsrows_processedfetchesexecutionsend_of_fetch_countstat_periodおよびactive_stat_periodです。
          • 属性の更新: SQLチューニング・セットで更新するSQL文属性を指定するオプションを選択します。この選択は、「更新」および「マージ」ロード・オプションでのみ考慮されます:
            • 基本: 統計およびバインドのみ。
            • 標準: 基本属性をSQL計画とともに含めます。これには、行ソース統計およびオブジェクト参照リストは含まれません。
            • すべて: すべての属性を実行コンテキストとともに含めます。
          • 再帰的SQL: SQLチューニング・セットに再帰的SQL文を含める場合に選択します。
          • null属性を無視: 新しい値がNULLの場合に属性を無視する場合に選択します。
        8. フィルタ: SQL述部を入力して、SQLチューニング・セットにロードするSQL文をフィルタします。フィルタを指定しない場合、CREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGE文のみが取得されます。SQL述語は、SQLSET_ROWの属性に基づいています。
      • ロードのスキップ: 空のSQLチューニング・セットを作成するには、このオプションを選択します。後で空のSQLチューニング・セットにSQL文をロードできます。
    2. 「資格証明」セクションの「資格証明タイプ」ドロップダウン・リストで使用可能なオプションの1つを選択して、管理対象データベースに接続するデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
  4. オプションで、「SQLの表示」をクリックして、実行されるSQL文を表示します。
  5. 「作成」をクリックします。
新しく作成したSQLチューニング・セットは、「SQLチューニング・セット」セクションに表示されます。最初は、SQL文のロード中にステータスが「実行中」になり、正常に作成されると、ステータスは「完了」に変わります。

SQLチューニング・セットを作成したら、SQLチューニング・セットを選択して次のタスクを実行できます。

  • 「SQLのロード」をクリックして、SQL文をSQLチューニング・セットにロードします。SQLチューニング・セットへのSQL文のロードに関連するロード・メソッドおよびステップは、SQLチューニング・セット作成プロシージャの詳細と同じです。
  • 「アクション」アイコン(アクション)をクリックし、「削除」をクリックしてSQLチューニング・セットを削除します。

SQLチューニング・セットの詳細の監視

SQLチューニング・セットの詳細およびSQL文は、SQLチューニング・セットで監視できます。

「管理対象データベースの詳細」ページの「SQLチューニング・セット」セクションで、SQLチューニング・セットの名前をクリックして「SQLチューニング・セットの詳細」ページに移動します。「SQLチューニング・セットの詳細」ページには、その所有者やSQLチューニング・セット内のSQL文の合計数などのSQLチューニング・セット情報が表示されます。「削除」をクリックして、SQLチューニング・セットを削除します。

「SQLチューニング・セットの詳細」ページの「SQL文」セクションでは、SQLチューニング・セットで最大2000のSQL文を表示して、次のタスクを実行できます:

  • 各SQL文の詳細(SQL ID、SQLテキスト、計画ハッシュ値など)をモニターします。
  • 「フィルタの表示」をクリックし、次のオプションを使用してSQLチューニング・セット内のSQL文のリストをフィルタします:
    • フィルタ問合せ: SQL文をフィルタするSQL述語を入力します。SQL述語は、SQLSET_ROWの属性に基づいています。詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のSQLSET_ROWオブジェクト・タイプに関する項を参照してください。
    • 結果のソート基準: SQL文をソートするメトリックを3つまで選択します。
    • 結果パーセンテージ(%): 一致結果のパーセンテージを示す数値を入力します。フィルタ問合せの結果には、一致するすべてのSQL文の中でソートが最も高いSQL文の指定した割合が含まれます。ソートは、「結果のソート基準」ドロップダウン・リストで指定されたメトリックに基づいており、このオプションを使用するには少なくとも1つのメトリックを選択する必要があります。
    • 結果制限: 一致結果の強い制限を示す数値を入力します。フィルタ問合せの結果は、指定した数のSQL文に制限されます。「結果のソート基準」ドロップダウン・リストでメトリックが選択されている場合、上位SQL文を選択する前に結果のソートが適用されます。値0は、一致するすべてのSQL文を結果に含める必要があることを示します。
    • 再帰的SQL: 検索結果に再帰的SQL文を含める場合に選択します。
  • 「SQLのロード」をクリックして、SQL文をSQLチューニング・セットにロードします。SQL文の収集およびSQLチューニング・セットへのロードに使用できるロード・メソッドの詳細は、「SQLチューニング・セットの作成」を参照してください。
  • 「名前を付けて保存」をクリックして、新規または既存のSQLチューニング・セットにSQL文を保存します。SQLチューニング・セット内のすべてのSQL文、または定義済のフィルタリング基準に一致するSQL文のみを保存できます。

    「SQLチューニング・セットの保存」パネルで:

    1. SQL文を保存するSQLチューニング・セットの詳細を指定します。
      • 既存のSQLチューニング・セットにSQL文を保存するには:
        1. 保存方法: 「既存のSQLチューニング・セットへ」を選択します。
        2. 名前: SQL文を保存するSQLチューニング・セットを選択します。
        3. 拡張オプションの表示: SQL文を選択して別のSQLチューニング・セットに保存する詳細を指定します。この項に表示されるオプションの詳細は、「SQLチューニング・セットの作成」を参照してください。
      • SQL文を新しいSQLチューニング・セットに保存するには:
        1. 保存方法: 「新規SQLチューニング・セットへ」を選択します。
        2. 名前: SQLチューニング・セットの名前を入力します。
        3. 説明: オプションで、SQLチューニング・セットの説明を入力します。
    2. 「資格証明」セクションの「資格証明タイプ」ドロップダウン・リストで使用可能なオプションの1つを選択して、管理対象データベースに接続するデータベース資格証明を指定します。資格証明タイプの詳細は、資格証明を使用した診断および管理タスクの実行を参照してください。
    3. 「保存」をクリックします
  • 「SQLの削除」をクリックして、すべてのSQL文またはフィルタリング基準に一致するSQL文をSQLチューニング・セットから削除します。