157 DBMS_SQLTUNE

DBMS_SQLTUNEパッケージは、オンデマンドでSQLをチューニングするためのインタフェースです。関連パッケージのDBMS_AUTO_SQLTUNEパッケージは、自動タスクとして実行されるSQLチューニング・アドバイザに対するインタフェースを提供します。

この章の内容は次のとおりです。

157.1 DBMS_SQLTUNEの概要

DBMS_SQLTUNEパッケージは、相互に関連する次のいくつかの機能領域を提供します。

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

アドバイザ・スイートの1つであるSQLチューニング・アドバイザは、データベースのパフォーマンス問題を特定および解決する一連のエキスパート・システムです。具体的には、SQLチューニング・アドバイザによって、問題のあるSQL文のチューニングが自動化されます。SQLチューニング・アドバイザに1つ以上のSQL文を入力すると、その文のチューニング方法に関する的確なアドバイスを取得できます。アドバイザは、SQLをチューニングするためのSQLアクションの形でアドバイスを提供するとともに、予測されるパフォーマンス上のメリットも示します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラムのグループには、アドバイザへのアクセスを可能にするタスク指向のインタフェースが用意されています。次に示すサブプログラムを、次の順序でコールすると、SQLチューニング・アドバイザの機能の一部を使用できます。

  1. CREATE_TUNING_TASKファンクションは、1つ以上のSQL文をチューニングするためのチューニング・タスクを作成します。

  2. EXECUTE_TUNING_TASKファンクションおよびプロシージャは、以前作成したチューニング・タスクを実行します。

  3. REPORT_TUNING_TASKファンクションを使用して、チューニング・タスクの結果を表示します。

  4. SCRIPT_TUNING_TASKファンクションを使用して、SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、アドバイザによる一連の推奨事項を実装できます。

SQLプロファイル・サブプログラム

SQLチューニング・アドバイザによって、文のパフォーマンスを向上させるSQLプロファイルの作成を推奨される場合があります。SQLプロファイルは、その文に固有な補助統計で構成されます。カーディナリティ、選択性およびコストは問合せオプティマイザによって推定されますが、これらの値が大幅にずれているために不適切な実行計画が生成される場合があります。SQLプロファイルは、サンプリングおよび部分的に実行する方法を使用して追加情報を収集し、これらの推定を調整することで、この問題に対処します。

DBMS_SQLTUNE SQLプロファイル・サブプログラムのグループでは、特定の単一SQL文を対象とするオプティマイザに統計情報を伝えるためのメカニズムが用意されており、可能なかぎり正確な統計情報を伝えることによって、オプティマイザでその文に対する優れた判断を行うことができるようにします。次に例を示します。

SQLチューニング・セット

SQLチューニング・セットは、SQL文とともに次の情報を格納します。

  • 解析スキーマ名、バインド値などの実行コンテキスト。

  • 平均経過時間、実行件数などの実行統計情報。

  • 実行計画(データベースでSQL文を実行するために行われる一連の操作)

  • 行ソース統計(計画で実行される各操作の処理行数など)。

SQLチューニング・セットを作成する場合は、次のソースを使用してSQL文にフィルタ処理やランキングを実行します。

この機能は、すべてのDBMS_SQLTUNE SQLチューニング・セット・サブプログラムを使用すると、簡単に実行できます。次に例を示します。

SQLチューニング・セットおよびSQLプロファイルのインポート/エクスポート

DBMS_SQLTUNEサブプログラムを使用して、共通のプログラム・モデルを使用するシステム間でSQLプロファイルおよびSQLチューニング・セットを移動します。いずれの場合も、ソース・データベース上にステージング表を作成し、関連するデータをそのステージング表に入力します。次に、選択した方法(Oracle Data Pump、データベース・リンクなど)に従ってそのステージング表を移動先システムに移動し、そのステージング表を使用してオブジェクトを元の形式で再構成します。次のステップは、このパッケージに含まれるサブプログラムによって実行されます。

  1. ソース・システムにステージング表を作成するには、CREATE_STGTAB_SQLPROFプロシージャまたはCREATE_STGTAB_SQLSETプロシージャをコールします。

  2. ソース・システムの情報をステージング表に移入するには、PACK_STGTAB_SQLPROFプロシージャまたはPACK_STGTAB_SQLSETプロシージャをコールします。

  3. ステージング表を移動先システムに移動します。

  4. 新しいシステム上にオブジェクトを再作成するには、UNPACK_STGTAB_SQLPROFプロシージャまたはUNPACK_STGTAB_SQLSETプロシージャをコールします。

参照:

プログラム・フローの詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

自動チューニング・タスク・ファンクション

データベースによって、カタログ・スクリプトの一部として自動システム・タスクSYS_AUTO_SQL_TUNING_TASKが作成されます。このタスクによってAWRから一連の高負荷SQLが自動的に選択され、そのSQLに対してSQLチューニング・アドバイザが実行されます。自動タスクでは、他のSQLチューニング・タスクと同じ包括的な分析が実行されます。

自動SQLチューニング・タスクのアクティビティに関するレポートは、DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK APIを通じて取得できます。自動SQLチューニング・タスクの管理に使用できるサブプログラムのリストについては、DBMS_AUTO_SQLTUNEパッケージを参照してください。

リアルタイムSQL監視

リアルタイムSQL監視を使用すると、DBAまたはパフォーマンス・アナリストにより、長時間にわたって実行されるSQL文の実行をその実行中に監視できます。カーソルの統計(CPU時間、IO時間など)と実行計画の統計(出力行の数、メモリー、使用される一時領域など)は、どちらも文の実行中にほぼリアルタイムで更新されます。V$SQL_MONITORビューおよびV$SQL_PLAN_MONITORビューではこれらの統計が公開されます。さらに、DBMS_SQLTUNEによって、REPORT_SQL_MONITOR機能とREPORT_SQL_MONITOR_LIST機能を提供することで、監視情報をレポートします。

ノート:

また、DBMS_SQL_MONITORには、REPORT_SQL_MONITOR機能とREPORT_SQL_MONITOR_LIST機能が含まれます。

スタンバイ・データベース・ワークロードのチューニング

場合によっては、スタンバイ・データベースでは、データ保護ロールに加えてレポート・ロールを仮定できます。スタンバイ・データベースでは、問合せの固有のワークロードを含めることができ、一部でチューニングが必要になる場合があります。スタンバイ・データベースでSQLチューニング・アドバイザの文を発行できます。これは読取り専用です。スタンバイとプライマリのデータベース・リンクにより、DBMS_SQLTUNEでプライマリ・データベースへのデータの書込みおよび読取りが可能になります。スタンバイ・ワークロードのチューニングの対象となるプロシージャには、database_link_toパラメータが含まれます。

157.2 DBMS_SQLTUNEのセキュリティ・モデル

このパッケージは、PUBLICで使用可能で、独自のセキュリティ・チェックが実行されます。

次の点に注意してください。

  • SQLチューニング・アドバイザはアドバイザ・フレームワークに依存しているため、すべてのチューニング・タスク・インタフェース(*_TUNING_TASK)を使用するにはADVISOR権限が必要です。

  • SQLチューニング・セット・サブプログラム(*_SQLSET)には、次の権限のいずれかが必要です。

    • ADMINISTER SQL TUNING SET

      自分が所有するSQLチューニング・セットのみを作成および変更できます。

    • ADMINISTER ANY SQL TUNING SET

      すべてのSQLチューニング・セット(他のユーザーが所有するものも含む)に対して操作を行うことができます。

  • 以前のリリースでは、SQLプロファイルに関連するサブプログラムを起動するには、次の3つの異なる権限が必要でした。

    • CREATE ANY SQL PROFILE

    • ALTER ANY SQL PROFILE

    • DROP ANY SQL PROFILE

    これらの権限は非推奨になり、ADMINISTER SQL MANAGEMENT OBJECTが推奨されます。

157.3 DBMS_SQLTUNEのデータ構造

DBMS_SQLTUNEパッケージのSELECT_*サブプログラムはSQLSET_ROWタイプのオブジェクトを戻します。

オブジェクト・タイプ

157.3.1 SQLSET_ROWオブジェクト・タイプ

SQLSET_ROWオブジェクトは、ユーザーのSQLチューニング・セットの内容をモデル化します。

論理的には、SQLチューニング・セットはSQLSET_ROWオブジェクトの集まりです。各SQLSET_ROWには、1つのSQL文とその実行コンテキスト、統計、バインドおよび計画が含まれます。各SELECT_*サブプログラムは、(sql_idplan_hash_value)によって一意に識別されるSQLSET_ROWオブジェクトのコレクションとしてデータ・ソースをモデル化します。同様に、LOAD_SQLSETプロシージャは、行タイプがSQLSET_ROWのカーソルを入力時に使用し、ユーザーが要求するポリシーに従って各SQLSET_ROWを個別に処理します。

いくつかのサブプログラム・パッケージは、SQLチューニング・セットまたはデータ・ソースの内容に対して基本フィルタを使用できます。これらのフィルタは、SQLSET_ROW内に定義されている属性に基づいて表現されます。

構文

CREATE TYPE sqlset_row AS object (
  sql_id                   VARCHAR(13),
  force_matching_signature NUMBER,
  sql_text                 CLOB,
  object_list              sql_objects,
  bind_data                RAW(2000),
  parsing_schema_name      VARCHAR2(30),
  module                   VARCHAR2(48),
  action                   VARCHAR2(32),
  elapsed_time             NUMBER,
  cpu_time                 NUMBER,
  buffer_gets              NUMBER,
  disk_reads               NUMBER,
  direct_writes            NUMBER,
  rows_processed           NUMBER,
  fetches                  NUMBER,
  executions               NUMBER,
  end_of_fetch_count       NUMBER,
  optimizer_cost           NUMBER,
  optimizer_env            RAW(2000),
  priority                 NUMBER,
  command_type             NUMBER,
  first_load_time          VARCHAR2(19),
  stat_period              NUMBER,
  active_stat_period       NUMBER,
  other                    CLOB,
  plan_hash_value          NUMBER,
  sql_plan                 sql_plan_table_type,
  bind_list                sql_binds,
  con_dbid                 NUMBER,
  last_exec_start_time     VARCHAR2(19))

属性

表157-1 SQLSET_ROWの属性

属性 説明

sql_id

一意なSQL ID。

forcing_matching_signature

リテラル、ケースおよび空白を除くシグネチャ。

sql_text

SQL文の全テキスト。

object_list

現在、実装されていません。

bind_data

このSQLに対して取得されるバインド・データ。このパラメータの引数を指定し、bind_listの引数も指定することはできません(これらのパラメータは、同時には指定できません)。

parsing_schema_name

SQLが解析されるスキーマ。

module

SQLの最後のアプリケーション・モジュール。

action

SQLの最後のアプリケーション・アクション。

elapsed_time

このSQL文の経過時間の合計。

cpu_time

このSQL文のCPU時間の合計。

buffer_gets

バッファ取得回数の合計。

disk_reads

ディスク読取り回数の合計。

direct_writes

直接パス書込み回数の合計。

rows_processed

このSQL文による処理行数の合計。

fetches

フェッチ回数の合計。

executions

このSQL文の実行回数の合計。

end_of_fetch_count

SQL文のすべての行がフェッチされ、文が完全に実行された回数。

optimizer_cost

このSQLのオプティマイザ・コスト。

optimizer_env

このSQL文のオプティマイザ環境。

priority

ユーザー定義の優先順位(1、2、3)。

command_type

文のタイプ(INSERTSELECTなど)。

first_load_time

親カーソルのロード時間。

stat_period

このSQL文の統計情報が収集された期間(秒)。

active_stat_period

SQL文がアクティブだった有効期間(秒)。

other

他の列(ユーザー定義の属性用)。

plan_hash_value

計画の計画ハッシュ値。

sql_plan

SQL文の実行計画。

bind_list

SQL文のユーザー指定バインドのリスト。ユーザー指定ワークロードに使用されます。このパラメータの引数を指定し、bind_dataの引数も指定することはできません(これらのパラメータは、同時には指定できません)。

con_dbid

PDBまたはCDBルートのDBID。

last_exec_start_time

最後に実行されたSQL文の開始時刻。

157.4 DBMS_SQLTUNEのサブプログラム・グループ

DBMS_SQLTUNEのサブプログラムは、機能ごとに次のようにグループ分けされています。

157.4.1 DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

このサブプログラム・グループは、SQLチューニング・タスクを管理するためのインタフェースを提供します。

表157-2 SQLチューニング・タスク・サブプログラム

サブプログラム 説明

CANCEL_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを取り消します。

CREATE_SQL_PLAN_BASELINEプロシージャ

既存の計画のSQL計画ベースラインを作成します。

CREATE_TUNING_TASKファンクション

SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。

DROP_TUNING_TASKプロシージャ

SQLチューニング・タスクを削除します。

EXECUTE_TUNING_TASKファンクションおよびプロシージャ

以前に作成したチューニング・タスクを実行します。

"IMPLEMENT_TUNING_TASKプロシージャ"

SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。

INTERRUPT_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを中断します。

REPORT_AUTO_TUNING_TASKファンクション

自動チューニング・タスクによるレポートを表示して、特定の範囲の実行についてレポートします。

REPORT_TUNING_TASKファンクション

チューニング・タスクの結果を表示します。

RESET_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを初期状態にリセットします。

RESUME_TUNING_TASKプロシージャ

SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

SCHEDULE_TUNING_TASKファンクション

チューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。

SCRIPT_TUNING_TASKファンクション

SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。

SET_TUNING_TASK_PARAMETERプロシージャ

VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

このパッケージ内のすべてのサブプログラムのリストは、DBMS_SQLTUNEサブプログラムの要約を参照してください。

157.4.2 DBMS_SQLTUNE SQLプロファイル・サブプログラム

このサブプログラム・グループは、SQLプロファイルを管理するためのインタフェースを提供します。

表157-3 SQLプロファイル・サブプログラム

サブプログラム 説明

ACCEPT_ALL_SQL_PROFILESプロシージャ

チューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。

ACCEPT_SQL_PROFILEプロシージャおよびファンクション

指定されたチューニング・タスクのSQLプロファイルを作成します。

ALTER_SQL_PROFILEプロシージャ

既存のSQLプロファイル・オブジェクトの特定の属性を変更します。

CREATE_STGTAB_SQLPROFプロシージャ

システム間でのSQLプロファイルのコピーに使用されるステージング表を作成します。

DROP_SQL_PROFILEプロシージャ

データベースから名前付きSQLプロファイルを削除します。

PACK_STGTAB_SQLPROFプロシージャ

プロファイル・データをSYSスキーマからステージング表に移動します。

REMAP_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。

SQLTEXT_TO_SIGNATUREファンクション

SQLテキストのシグネチャを戻します。

UNPACK_STGTAB_SQLPROFプロシージャ

ステージング表に格納されたプロファイル・データを使用して、システムでプロファイルを作成します。

このパッケージ内のすべてのサブプログラムのリストは、DBMS_SQLTUNEサブプログラムの要約を参照してください。

157.4.3 DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

このサブプログラム・グループは、SQLチューニング・セットを管理するためのインタフェースを提供します。

表157-4 SQLチューニング・セット・サブプログラム

サブプログラム 説明

ADD_SQLSET_REFERENCEファンクション

新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。

CREATE_SQLSETプロシージャおよびファンクション

データベース内にSQLチューニング・セット・オブジェクトを作成します。

CREATE_STGTAB_SQLSETプロシージャ

SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

DELETE_SQLSETプロシージャ

SQL文のセットをSQLチューニング・セットから削除します。

DROP_SQLSETプロシージャ

SQLチューニング・セットがアクティブでない場合はそれを削除します。

LOAD_SQLSETプロシージャ

選択したSQLのセットをSQLチューニング・セットに入力します。

PACK_STGTAB_SQLSETプロシージャ

SYSスキーマからステージング表にチューニング・セットをコピーします。

REMAP_STGTAB_SQLSETプロシージャ

ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。

REMOVE_SQLSET_REFERENCEプロシージャ

SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

SELECT_CURSOR_CACHEファンクション

共有SQL領域からSQL文を収集します。

SELECT_SQL_TRACEファンクション

1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

SELECT_SQLPA_TASKファンクション

SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。

SELECT_SQLSETファンクション

既存のSQLチューニング・セットからSQL文を収集します。

SELECT_WORKLOAD_REPOSITORYファンクション

ワークロード・リポジトリからSQL文を収集します。

UNPACK_STGTAB_SQLSETプロシージャ

ステージング表から1つ以上のSQLチューニング・セットをコピーします。

UPDATE_SQLSETプロシージャ

SQLチューニング・セットのSQL文の選択されている文字列フィールドを更新するか、SQLチューニング・セットのSQLの設定済の数値属性を更新します。

このパッケージ内のすべてのサブプログラムのリストは、「DBMS_SQLTUNEサブプログラムの要約」を参照してください。

157.4.4 DBMS_SQLTUNEリアルタイムSQL監視サブプログラム

このサブプログラム・グループでは、V$SQL_MONITORおよびV$SQL_PLAN_MONITORに収集された監視データをレポートする機能が提供されています。

表157-5 リアルタイムSQL監視サブプログラム

サブプログラム 説明

REPORT_SQL_MONITORファンクション

リアルタイムSQL監視をレポートします。

REPORT_SQL_MONITOR_LISTファンクション

Oracle Databaseによって監視されるすべての文または文のサブセットのレポートを作成します。

REPORT_SQL_MONITOR_LIST_XMLファンクション

Oracle Databaseによって監視されるすべての文または文のサブセットのXMLレポートを作成します。

157.4.5 DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム

このサブプログラム・グループは、共有SQL領域および自動ワークロード・リポジトリ(AWR)の統計情報を使用して、SQLパフォーマンスの詳細なレポートを提供します。

表157-6 SQLパフォーマンス・レポート・サブプログラム

サブプログラム 説明

REPORT_SQL_DETAILファンクション

このファンクションは、特定のSQL IDについてレポートします。

REPORT_SQL_MONITORファンクション

このファンクションは、対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTMLまたはXML)を作成します。

REPORT_SQL_MONITOR_LISTファンクション

このファンクションは、Oracleによって監視されるすべての文または文のサブセットのレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します。

REPORT_TUNING_TASKファンクション

このファンクションは、チューニング・タスクの結果を表示します。

REPORT_TUNING_TASK_XMLファンクション

このファンクションは、チューニング・タスクのXMLレポートを表示します。

157.5 DBMS_SQLTUNEサブプログラムの要約

この表は、DBMS_SQLTUNEサブプログラムを示し、簡単に説明しています。

表157-7 DBMS_SQLTUNEパッケージのサブプログラム

サブプログラム 説明 グループ

ACCEPT_ALL_SQL_PROFILESプロシージャ

特定のチューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

ACCEPT_SQL_PROFILEプロシージャおよびファンクション

指定されたチューニング・タスクのSQLプロファイルを作成します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

ADD_SQLSET_REFERENCEファンクション

新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

ALTER_SQL_PROFILEプロシージャ

既存のSQLプロファイル・オブジェクトの特定の属性を変更します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

CANCEL_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを取り消します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

CREATE_SQL_PLAN_BASELINEプロシージャ

既存の計画のSQL計画ベースラインを作成します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

CREATE_SQLSETプロシージャおよびファンクション

データベース内にSQLチューニング・セット・オブジェクトを作成します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

CREATE_STGTAB_SQLPROFプロシージャ

システム間でのSQLプロファイルのコピーに使用されるステージング表を作成します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

CREATE_STGTAB_SQLSETプロシージャ

SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

CREATE_TUNING_TASKファンクション

SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

DELETE_SQLSETプロシージャ

SQL文のセットをSQLチューニング・セットから削除します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

DROP_SQL_PROFILEプロシージャ

データベースから名前付きSQLプロファイルを削除します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

DROP_SQLSETプロシージャ

SQLチューニング・セットがアクティブでない場合はそれを削除します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

DROP_TUNING_TASKプロシージャ

SQLチューニング・タスクを削除します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

EXECUTE_TUNING_TASKファンクションおよびプロシージャ

以前に作成したチューニング・タスクを実行します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

IMPLEMENT_TUNING_TASKプロシージャ

SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

INTERRUPT_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを中断します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

LOAD_SQLSETプロシージャ

選択したSQLのセットをSQLチューニング・セットに入力します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

PACK_STGTAB_SQLPROFプロシージャ

プロファイル・データをSYSスキーマからステージング表に移動します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

PACK_STGTAB_SQLSETプロシージャ

SYSスキーマからステージング表にチューニング・セットを移動します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

REMAP_STGTAB_SQLPROFプロシージャ

ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

REMAP_STGTAB_SQLSETプロシージャ

ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

REMOVE_SQLSET_REFERENCEプロシージャ

SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

REPORT_AUTO_TUNING_TASKファンクション

自動チューニング・タスクによるレポートを表示して、特定の範囲のサブタスクについてレポートします。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

REPORT_SQL_DETAILファンクション

特定のSQL IDをレポートします。

DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム

REPORT_SQL_MONITORファンクション

対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTML、XML)を作成します。

DBMS_SQLTUNEリアルタイムSQL監視サブプログラム

REPORT_SQL_MONITOR_LISTファンクション

Oracle Databaseによって監視されるすべての文または文のサブセットのレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します

DBMS_SQLTUNEリアルタイムSQL監視サブプログラム

REPORT_SQL_MONITOR_LIST_XMLファンクション

REPORT_SQL_MONITOR_LISTファンクションと同じですが、XMLTypeを戻します。

DBMS_SQLTUNEリアルタイムSQL監視サブプログラム

REPORT_TUNING_TASKファンクション

チューニング・タスクの結果を表示します。

DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム

REPORT_TUNING_TASK_XMLファンクション

チューニング・タスクのXMLレポートを表示します。

DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム

RESET_TUNING_TASKプロシージャ

現在実行中のチューニング・タスクを初期状態にリセットします。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

RESUME_TUNING_TASKプロシージャ

SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

SCHEDULE_TUNING_TASKファンクション

SQLチューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

SCRIPT_TUNING_TASKファンクション

SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

SELECT_CURSOR_CACHEファンクション

共有SQL領域からSQL文を収集します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

SELECT_SQL_TRACEファンクション

1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

SELECT_SQLPA_TASKファンクション

SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

SELECT_SQLSETファンクション

既存のSQLチューニング・セットからSQL文を収集します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

SELECT_WORKLOAD_REPOSITORYファンクション

ワークロード・リポジトリからSQL文を収集します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

SET_TUNING_TASK_PARAMETERプロシージャ

VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム

SQLTEXT_TO_SIGNATUREファンクション

SQLテキストのシグネチャを戻します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

UNPACK_STGTAB_SQLPROFプロシージャ

ステージング表に格納されたプロファイル・データを使用して、システムでプロファイルを作成します。

DBMS_SQLTUNE SQLプロファイル・サブプログラム

UNPACK_STGTAB_SQLSETプロシージャ

ステージング表から1つ以上のSQLチューニング・セットを移動します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

UPDATE_SQLSETプロシージャ

SQLチューニング・セットのSQL文の選択されているフィールドを更新します。

DBMS_SQLTUNE SQLチューニング・セット・サブプログラム

157.5.1 ACCEPT_ALL_SQL_PROFILESプロシージャ

このプロシージャは、チューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れ、ユーザーが渡したパラメータ値に従ってSQLプロファイルの属性を設定します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ACCEPT_ALL_SQL_PROFILES (
   task_name         IN VARCHAR2,
   category          IN VARCHAR2 := NULL,
   replace           IN BOOLEAN  := FALSE,
   force_match       IN BOOLEAN  := FALSE,
   profile_type      IN VARCHAR2 := REGULAR_PROFILE,
   autotune_period   IN NUMBER   := NULL,
   execution_name    IN VARCHAR2 := NULL,
   task_owner        IN VARCHAR2 := NULL,
   description       IN VARCHAR2 := NULL,
   database_link_to  IN VARCHAR2 := NULL);

パラメータ

表157-8 ACCEPT_ALL_SQL_PROFILESプロシージャのパラメータ

パラメータ 説明

task_name

SQLチューニング・タスクの名前(必須)。

category

これはカテゴリ名で、このSQLプロファイルを使用するセッションに対するセッションのSQLTUNE_CATEGORYパラメータの値と一致する必要があります。デフォルトの値はDEFAULTになります。この値は、SQLTUNE_CATEGORYパラメータのデフォルトでもあります。カテゴリには、有効なOracle識別子を指定してください。指定したカテゴリ名は、常に大文字に変換されます。正規化されたSQLテキストとカテゴリ名の組合せによって、SQLプロファイルの一意のキーが作成されます。この組合せが重複した場合、ACCEPT_SQL_PROFILEは失敗します。

replace

これは、プロファイルがすでに存在する場合にこの引数をTRUEにすると、置き換えられます。TRUEに設定した置換の場合でも、別のシグネチャ/カテゴリの組合せで使用されている名前を渡すとエラーが発生します。

force_match

TRUEに設定すると、すべてのリテラル値をバインド変数に正規化した後に同じテキストが含まれているSQL文がSQLプロファイルの対象になります。(SQL文でリテラル値とバインド変数の組合せが使用されている場合、バインド変換は行われません。)これは、cursor_sharingパラメータのFORCEオプションで使用される一致アルゴリズムと似ています。

FALSEに設定すると、リテラルは変換されません。これは、cursor_sharingパラメータのEXACTオプションで使用される一致アルゴリズムと似ています。

profile_type

オプション:

  • REGULAR_PROFILE: パラレル実行を変更しないプロファイル(デフォルト、NULLと同じです)。SQL文に現在パラレル実行計画がある場合、通常のプロファイルではオプティマイザが異なるけれどもパラレルである実行計画を選択します。

  • PX_PROFILE: パラレル実行を変更する通常のプロファイル。

autotune_period

自動SQLチューニングの時間。この設定は、自動SQLチューニング・アドバイザ・タスクにのみ適用されます。次の値があります。

  • NULLまたは負の値(デフォルト): すべてまたは完全。結果にはすべてのタスク実行が含まれます。

  • 0: 現在または直近のタスク実行の結果。

  • 1: 直近24時間の結果。

  • 7: 直近7日間の結果。

このプロシージャは、その他の値を直近のタスク実行からこの引数の値を引いた時間として解釈します。

execution_name

使用するタスク実行の名前。NULLの場合、このプロシージャは、直近のタスク実行のレポートを生成します。

task_owner

チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。

description

SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

セキュリティ・モデル

ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。CREATE ANY SQL PROFILE権限は非推奨になりました。

157.5.2 ACCEPT_SQL_PROFILEプロシージャおよびファンクション

このサブプログラムは、SQLチューニング・アドバイザによって推奨されるSQLプロファイルを作成します。

SQLテキストは、マッチング用に正規化されていますが、データ・ディクショナリに格納される場合は読みやすさを考慮して正規化されていません。SQLテキストは、SQLチューニング・タスクへの参照を介して提供されます。参照されたSQL文が存在しない場合、データベースでエラーがレポートされます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
   task_name    IN  VARCHAR2,
   object_id    IN  NUMBER   := NULL,
   name         IN  VARCHAR2 := NULL,
   description  IN  VARCHAR2 := NULL,
   category     IN  VARCHAR2 := NULL);
   task_owner   IN VARCHAR2  := NULL,
   replace      IN BOOLEAN   := FALSE,
   force_match  IN BOOLEAN   := FALSE,
   profile_type IN VARCHAR2  := REGULAR_PROFILE);
DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
   task_name         IN  VARCHAR2,
   object_id         IN  NUMBER    := NULL,
   name              IN  VARCHAR2  := NULL,
   description       IN  VARCHAR2  := NULL,
   category          IN  VARCHAR2  := NULL;
   task_owner        IN  VARCHAR2  := NULL,
   replace           IN  BOOLEAN   := FALSE,
   force_match       IN  BOOLEAN   := FALSE,
   profile_type      IN  VARCHAR2  := REGULAR_PROFILE,
   database_link_to  IN  VARCHAR2  := NULL)
 RETURN VARCHAR2;

パラメータ

表157-9 ACCEPT_SQL_PROFILEプロシージャおよびファンクションのパラメータ

パラメータ 説明

task_name

SQLチューニング・タスクの名前(必須)。

object_id

チューニング・タスクに関連付けられたSQL文を示すアドバイザ・フレームワーク・オブジェクトの識別子。

name

SQLプロファイルの名前。二重引用符を含むことはできません。この名前は大文字と小文字を区別します。指定しない場合は、システムによってSQLプロファイルに一意の名前が生成されます。

description

SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。

category

カテゴリ名。この名前は、このSQLプロファイルを使用するセッションに対するセッションのSQLTUNE_CATEGORYパラメータの値と一致する必要があります。デフォルトの値はDEFAULTになります。この値は、SQLTUNE_CATEGORYパラメータのデフォルトでもあります。カテゴリには、有効なOracle識別子を指定してください。指定したカテゴリ名は、常に大文字に変換されます。正規化されたSQLテキストとカテゴリ名の組合せによって、SQLプロファイルの一意のキーが作成されます。この組合せが重複した場合、ACCEPT_SQL_PROFILEは失敗します。

task_owner

チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。

replace

これは、プロファイルがすでに存在する場合にこの引数をTRUEにすると、置き換えられます。TRUEに設定した置換の場合でも、別のシグネチャ/カテゴリの組合せで使用されている名前を渡すとエラーが発生します。

force_match

TRUEに設定すると、すべてのリテラル値をバインド変数に正規化した後に同じテキストが含まれているSQL文がSQLプロファイルの対象になります。(SQL文でリテラル値とバインド変数の組合せが使用されている場合、バインド変換は行われません。)これは、cursor_sharingパラメータのFORCEオプションで使用される一致アルゴリズムと似ています。

FALSEに設定すると、リテラルは変換されません。これは、cursor_sharingパラメータのEXACTオプションで使用される一致アルゴリズムと似ています。

profile_type

オプション:

  • REGULAR_PROFILE: パラレル実行を変更しないプロファイル(デフォルト、NULLと同じです)。SQL文に現在パラレル実行計画がある場合、通常のプロファイルではオプティマイザが異なるけれどもパラレルである実行計画を選択します。

  • PX_PROFILE: パラレル実行を変更する通常のプロファイル。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

戻り値

SQLプロファイルの名前。

使用上のノート

ADMINISTER SQL MANAGEMENT OBJECT権限が必要です。CREATE ANY SQL PROFILE権限は非推奨になりました。

このサブプログラムのプロシージャ・バージョンとファンクション・バージョンの両方を同様に使用しますが、ファンクションを起動する場合は戻り値を指定する必要があります。次に示す例は、プロシージャにのみ適用されます。

この例では、ワークロード・リポジトリの1つのSQL文がチューニングされ、SQLチューニング・アドバイザが推奨するSQLプロファイルが作成されます。

VARIABLE stmt_task VARCHAR2(64);
VARIABLE sts_task VARCHAR2(64);
 
-- create a tuning task tune the statement 
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
   begin_snap  => 1, -
   end_snap    => 2, -
   sql_id      => 'ay1m3ssvtrh24');
 
-- execute the resulting task 
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);
 
EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE(:stmt_task);
 

チューニングされたSQL文を表す場合、SQLチューニング・アドバイザによって作成されたアドバイザ・フレームワーク・オブジェクトのID(object_id)を指定する必要はありません。

推奨されるSQLプロファイルがデフォルトで使用されないように、そのSQLプロファイルを別のカテゴリ(TESTなど)で受け入れることもできます。

EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
   task_name  =>  :stmt_task, -
   category   =>  'TEST');

コマンドALTER SESSION SET SQLTUNE_CATEGORY = 'TEST'を使用すると、このプロファイルの動作を確認できます。

次のコールを実行すると、同じforce_matching_signatureが指定されているすべてのSQL文をチューニング対象とするSQLプロファイルが作成されます。

EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (task_name   =>  :stmt_task, -
                                      force_match =>  TRUE);

次の例のチューニング対象はSQLチューニング・セットですが、SQLプロファイルは、そのSQLチューニング・セット内の1つのSQL文のみに対して作成されます。SQL文は、IDが5のアドバイザ・フレームワーク・オブジェクトによって表されています。チューニング・タスクに対して複数のSQLプロファイルが存在する可能性があるため、ACCEPT_SQL_PROFILEプロシージャにオブジェクトIDを渡す必要があります。このオブジェクトIDは、レポートとともに取得されます。

EXEC :sts_task := DBMS_SQLTUNE.CREATE_TUNING_TASK ( -
  sqlset_name   => 'my_workload',  -
  rank1         => 'ELAPSED_TIME', -
  time_limit    => 3600,           -
  description   => 'my workload ordered by elapsed time');
 
-- execute the resulting task 
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:sts_task);

 -- create the profile for the sql statement corresponding to object_id = 5.
EXEC DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
   task_name  =>  :sts_task, -
   object_id  =>  5);

157.5.3 ADD_SQLSET_REFERENCEファンクション

このプロシージャは、新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

このプロシージャは、新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ADD_SQLSET_REFERENCE (
   sqlset_name  IN  VARCHAR2,
   description  IN  VARCHAR2 := NULL)
 RETURN NUMBER;

パラメータ

表157-10 ADD_SQLSET_REFERENCEファンクションのパラメータ

パラメータ 説明

sqlset_name

SQLチューニング・セットの名前。

description

SQLチューニング・セットの使用方法の説明。256文字を超える場合は切り捨てられます。

戻り値

追加した参照の識別子。

使用中にチューニング・セットが変更されないように、SQLチューニング・セットへの参照を追加できます。参照は、SQLチューニング・セットに対してSQLチューニング・アドバイザを起動すると自動的に追加されるため、このファンクションは特別な目的でのみ使用してください。このファンクションは、後で参照を削除する際に使用する参照IDを戻します。SQLチューニング・セットへの参照を削除するには、REMOVE_SQLSET_REFERENCEプロシージャを使用します。

 
variable rid number; 
EXEC :rid := DBMS_SQLTUNE.ADD_SQLSET_REFERENCE( -
                                sqlset_name => 'my_workload', -
                                description => 'my sts reference');

ビューUSER/DBA_SQLSET_REFERENCESを使用すると、特定のSQLチューニング・セットに関するすべての参照を確認できます。

157.5.4 ALTER_SQL_PROFILEプロシージャ

このプロシージャは、既存のSQLプロファイル・オブジェクトの特定の属性を変更します。

次の属性を変更できます(これらの属性名を使用)。

  • STATUS: ENABLEDまたはDISABLEDに設定できます。

  • NAME: 有効な名前にリセットできます。この名前は、有効なOracle識別子であり一意である必要があります。

  • DESCRIPTION: 500文字以下の文字列に設定できます。

  • CATEGORY: 有効なカテゴリ名にリセットできます。この名前は有効なOracle識別子であり、正規化されたSQLテキストと組み合せた場合は一意である必要があります。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.ALTER_SQL_PROFILE (
   name                 IN  VARCHAR2,
   attribute_name       IN  VARCHAR2,
   value                IN  VARCHAR2);

パラメータ

表157-11 ALTER_SQL_PROFILEプロシージャのパラメータ

パラメータ 説明

name

変更する既存のSQLプロファイルの名前(必須)。

attribute_name

有効な属性名を使用して変更する属性の名前(必須)。大文字と小文字は区別されません。

value

有効な属性値を使用した新しい属性の値(必須)。

使用上のノート

ALTER ANY SQL PROFILE権限が必要です。

-- Disable a profile, so it is not be used by any sessions.
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
                                      attribute_name  =>  'STATUS', -
                                      value           =>  'DISABLED');
 
-- Enable it back:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>   :pname,   -
                                      attribute_name  =>   'STATUS', -
                                      value           =>   'ENABLED');
 
-- Change the category of the profile so it is used only by sessions
-- with category set to TEST.
-- Use ALTER SESSION SET SQLTUNE_CATEGORY = 'TEST' to see how this profile 
-- behaves.
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
                                      attribute_name  =>  'CATEGORY', -
                                      value           =>  'TEST');
 
-- Change it back:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE ( name            =>  :pname,   -
                                      attribute_name  =>  'CATEGORY', -
                                      value           =>  'DEFAULT');

157.5.5 CANCEL_TUNING_TASKプロシージャ

このプロシージャは、現在実行中のチューニング・タスクを取り消します。すべての中間結果データは削除されます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CANCEL_TUNING_TASK (
 task_name         IN VARCHAR2);

パラメータ

表157-12 CANCEL_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

取り消すタスクの名前を指定します。

タスクの取消しは、タスクの実行を停止し、実行済結果の確認が不要な場合に行います。

EXEC DBMS_SQLTUNE.CANCEL_TUNING_TASK(:my_task);

157.5.6 CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

このプロシージャは、共有SQL領域からワークロードを取得して、SQLチューニング・セットに移入します。

このプロシージャは、一定期間にわたって複数回キャッシュをポーリングし、そこに格納されているワークロード・データを更新します。必要な期間に実行して、システム・ワークロード全体を取得できます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET (
    sqlset_name         IN VARCHAR2, 
    time_limit          IN POSITIVE := 1800,
    repeat_interval     IN POSITIVE := 300,
    capture_option      IN VARCHAR2 := 'MERGE',
    capture_mode        IN NUMBER   := MODE_REPLACE_OLD_STATS,
    basic_filter        IN VARCHAR2 := NULL,
    sqlset_owner        IN VARCHAR2 := NULL,
    recursive_sql       IN VARCHAR2 := HAS_RECURSIVE_SQL);

パラメータ

表157-13 CAPTURE_CURSOR_CACHE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

SQLチューニング・セットの名前を指定します

time_limit

実行する合計時間(秒)を定義します。

repeat_interval

サンプリングの実行間隔(秒)を定義します。

capture_option

新しい文の挿入、既存の文の更新またはその両方のいずれかを指定します。

値は、INSERTUPDATEまたはMERGEです。値はload_sqlsetload_optionの場合と同じです。

capture_mode

取得モード(UPDATEおよびMERGE取得オプション)を指定します。有効な値は、次のとおりです。

  • MODE_REPLACE_OLD_STATS: 確認された実行回数がSQLチューニング・セット内に保存されている値より大きい場合は、統計が置換されます。

  • MODE_ACCUMULATE_STATS: SQLに対して格納済の現在の値に、新しい値が加算されます。このモードでは、文が期限切れになっているかどうかが検出されるため、最終的な統計値は、その文が存在したすべてのカーソルの統計の合計になることに注意してください。

basic_filter

各サンプルの共有SQL領域に適用するフィルタを定義します。

basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGEタイプの文のみを取得します。

sqlset_owner

SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合はNULLを指定します

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)を定義します。

次の例では、30秒間にわたって取得が実行され、キャッシュが5秒に1回ポーリングされます。これによって、その時間内に実行されたすべての文が取得されます(その時間帯の前後は含まれません)。同じ文が重複して使用された場合は、格納されている文が新しい文に置換されます。

本番システムでの制限時間および繰返し間隔は、この例よりかなり大きく設定されることに注意してください。time_limitパラメータおよびrepeat_intervalパラメータは、使用するシステムでのワークロード時間および共有SQL領域の回転率プロパティに基づいて調整する必要があります。

 
EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
                                        sqlset_name     => 'my_workload', -
                                        time_limit      =>  30, -
                                        repeat_interval =>  5);

次のコールでは、実行中に実行統計を累積します。このオプションでは、期限切れにまたがる場合でも、各カーソルの累積アクティビティの正確な状況が示されますが、前述の例よりもコストが大きくなります。

EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
                         sqlset_name     => 'my_workload', -
                         time_limit      => 30, -
                         repeat_interval => 5, -
                         capture_mode    => dbms_sqltune.MODE_ACCUMULATE_STATS);
 

次のコールでは、非常に低いコストで取得が実行されます。このコールでは、新しい文が挿入されるのみで、それらの文がSQLチューニング・セットに挿入された後、統計は更新されません。

EXEC DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET( -
                                    sqlset_name     => 'my_workload', -
                                    time_limit      => 30, -
                                    repeat_interval => 5, -
                                    capture_option  => 'INSERT');

157.5.7 CREATE_SQL_PLAN_BASELINEプロシージャ

このプロシージャは、実行計画のSQL計画ベースラインを作成します。SQLチューニング・アドバイザが作成する、代替計画検索のコンテキストで使用できます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_SQL_PLAN_BASELINE (
   task_name            IN VARCHAR2,
   object_id            IN NUMBER   := NULL,
   plan_hash_value      IN NUMBER,
   owner_name           IN VARCHAR2 := NULL,
   database_link_to     IN VARCHAR2 := NULL); 

パラメータ

表157-14 CREATE_SQL_PLAN_BASELINEプロシージャのパラメータ

パラメータ 説明

task_name

スクリプトを取得するタスクの名前。

object_id

SQLが対応するオブジェクトID。

plan_hash_value

計画ベースラインを作成する計画。

owner_name

関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

157.5.8 CREATE_SQLSETプロシージャおよびファンクション

このプロシージャまたはファンクションは、データベース内にSQLチューニング・セット・オブジェクトを作成します。

このファンクションを実行すると、システムによってSQLチューニング・セットの名前が生成されます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_SQLSET (
   sqlset_name  IN  VARCHAR2,
   description  IN  VARCHAR2 := NULL
   sqlset_owner IN  VARCHAR2 := NULL);
DBMS_SQLTUNE.CREATE_SQLSET (
   sqlset_name  IN  VARCHAR2 := NULL,
   description  IN  VARCHAR2 := NULL,
   sqlset_owner IN  VARCHAR2 := NULL)
 RETURN VARCHAR2;

パラメータ

表157-15 CREATE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

SQLチューニング・セットの名前。

description

SQLチューニング・セットの説明。

sqlset_owner

SQLチューニング・セットの所有者。現行のスキーマ所有者の場合はNULL

EXEC DBMS_SQLTUNE.CREATE_SQLSET(- 
  sqlset_name => 'my_workload', -
  description => 'complete application workload');

157.5.9 CREATE_STGTAB_SQLPROFプロシージャ

このプロシージャは、システム間でのSQLプロファイルのコピーに使用するステージング表を作成します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (
   table_name            IN VARCHAR2,
   schema_name           IN VARCHAR2 := NULL,
   tablespace_name       IN VARCHAR2 := NULL);

パラメータ

表157-16 CREATE_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

table_name

作成する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。

schema_name

作成する表を格納するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL

tablespace_name

ステージング表を格納する表領域(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のユーザーのデフォルト表領域の場合はNULL

使用上のノート

  • このプロシージャは、PACK_STGTAB_SQLPROFプロシージャへのコールを発行する前に、1回コールします。

  • 異なるSQLプロファイルを異なるステージング表に配置する場合は、このプロシージャを複数回コールできます。

  • これはDDL操作であるため、トランザクション内では実行されません。

別のシステムに移動可能なプロファイル・データを格納するステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (table_name  => 'PROFILE_STGTAB');

157.5.10 CREATE_STGTAB_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.CREATE_STGTAB_SQLSET (
   table_name           IN VARCHAR2,
   schema_name          IN VARCHAR2 := NULL,
   tablespace_name      IN VARCHAR2 := NULL,
   db_version           IN NUMBER   := NULL);

パラメータ

表157-17 CREATE_STGTAB_SQLSETおよびCREATE_STGTABプロシージャのパラメータ

パラメータ 説明

table_name

作成する表の名前を指定します。この名前は大文字と小文字を区別します。

schema_name

作成する表を格納するスキーマを定義します。現行のスキーマの場合はNULLを定義します。この名前は大文字と小文字を区別します。

tablespace_name

ステージング表を格納する表領域を指定します。現行ユーザーのデフォルト表領域の場合はNULLを指定します。この名前は大文字と小文字を区別します。

db_version

ステージング表の形式を決定するデータベース・バージョンを指定します。

また、古いデータベース・バージョンのステージング表を作成して、STSを古いデータベース・バージョンにエクスポートすることもできます。以下の値のいずれかを使用します。

  • NULL (デフォルト) - 現行のデータベース・バージョンを指定します。

  • STS_STGTAB_10_2_VERSION — 10.2データベース・バージョンを指定します。

  • STS_STGTAB_11_1_VERSION — 11.1データベース・バージョンを指定します。

  • STS_STGTAB_11_2_VERSION — 11.2データベース・バージョンを指定します。

  • STS_STGTAB_12_1_VERSION — 12.1データベース・バージョンを指定します。

  • STS_STGTAB_12_2_VERSION — 12.2データベース・バージョンを指定します。

セキュリティ・モデル

指定されたスキーマおよび表領域にCREATE TABLE権限を持っている必要があります。

使用上のノート

  • SQLセットをパックする前に、このプロシージャを一度コールします。

  • 異なるチューニング・セットを異なるステージング表に配置する場合は、このプロシージャを複数回コールできます。

  • これはDDL操作であるため、トランザクション内では実行されません。

  • ステージング表にはネストした表の列および索引が含まれているため、ステージング表の名前は変更しないでください。

SQLチューニング・セットをパックし最終的にはエクスポートするためのステージング表を作成します。

EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(table_name => 'STGTAB_SQLSET');

Oracle Database 11gリリース2 (11.2)形式でSQLチューニング・セットをパックするステージング表を作成します。

BEGIN 
  DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(
      table_name => 'STGTAB_SQLSET'
  ,   db_version => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION );
END;

157.5.11 CREATE_TUNING_TASKファンクション

このファンクションは、SQLチューニング・アドバイザ・タスクを作成します。

このファンクションを様々な形式で使用して次の操作ができます。

  • テキストを指定して、単一の文に対するチューニング・タスクを作成する。

  • 識別子を指定して、共有SQL領域内の単一の文に対するチューニング・タスクを作成する。

  • スナップショット識別子の範囲を指定して、ワークロード・リポジトリ内の単一文に対するチューニング・タスクを作成する。

  • SQLチューニング・セットに対するチューニング・タスクを作成する。

  • SQLパフォーマンス・アナライザに対するチューニング・タスクを作成する。

すべての場合において、ファンクションは、主にSQLチューニング・アドバイザ・タスクの作成とそのパラメータの設定を行います。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

SQLテキスト形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
  sql_text         IN CLOB,
  bind_list        IN sql_binds := NULL,
  user_name        IN VARCHAR2  := NULL,
  scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
  time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
  task_name        IN VARCHAR2  := NULL,
  description      IN VARCHAR2  := NULL,
  con_name         IN VARCHAR2  := NULL,
  database_link_to IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQL ID形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
  sql_id           IN VARCHAR2,
  plan_hash_value  IN NUMBER    := NULL,
  scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
  time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
  task_name        IN VARCHAR2  := NULL,
  description      IN VARCHAR2  := NULL,
  con_name         IN VARCHAR2  := NULL,
  database_link_to IN VARCHAR2  := NULL)
RETURN VARCHAR2;

AWR形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
  begin_snap       IN NUMBER,
  end_snap         IN NUMBER,
  sql_id           IN VARCHAR2,
  plan_hash_value  IN NUMBER    := NULL,
  scope            IN VARCHAR2  := SCOPE_COMPREHENSIVE,
  time_limit       IN NUMBER    := TIME_LIMIT_DEFAULT,
  task_name        IN VARCHAR2  := NULL,
  description      IN VARCHAR2  := NULL,
  con_name         IN VARCHAR2  := NULL,
  dbid             IN NUMBER    := NULL,
  database_link_to IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQLチューニング・セット形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
  sqlset_name       IN VARCHAR2,
  basic_filter      IN VARCHAR2 :=  NULL,
  object_filter     IN VARCHAR2 :=  NULL,
  rank1             IN VARCHAR2 :=  NULL,
  rank2             IN VARCHAR2 :=  NULL,
  rank3             IN VARCHAR2 :=  NULL,
  result_percentage IN NUMBER   :=  NULL,
  result_limit      IN NUMBER   :=  NULL,
  scope             IN VARCHAR2 :=  SCOPE_COMPREHENSIVE,
  time_limit        IN NUMBER   :=  TIME_LIMIT_DEFAULT,
  task_name         IN VARCHAR2 :=  NULL,
  description       IN VARCHAR2 :=  NULL
  plan_filter       IN VARCHAR2 :=  'MAX_ELAPSED_TIME',
  sqlset_owner      IN VARCHAR2 :=  NULL,
  database_link_to IN VARCHAR2  :=  NULL)
RETURN VARCHAR2;

SQLパフォーマンス・アナライザ形式:

DBMS_SQLTUNE.CREATE_TUNING_TASK (
   spa_task_name     IN VARCHAR2,
   spa_task_owner    IN VARCHAR2 :=  NULL,
   spa_compare_exec  IN VARCHAR2 :=  NULL,
   basic_filter      IN VARCHAR2 :=  NULL,
   time_limit        IN NUMBER   :=  TIME_LIMIT_DEFAULT,
   task_name         IN VARCHAR2 :=  NULL,
   description       IN VARCHAR2 :=  NULL)
RETURN VARCHAR2; 

パラメータ

表157-18 CREATE_TUNING_TASKファンクションのパラメータ

パラメータ 説明

sql_text

SQL文のテキストを指定します。

begin_snap

開始スナップショット識別子を指定します。

end_snap

終了スナップショット識別子を指定します。

sql_id

SQL文の識別子を指定します。

bind_list

ANYDATAタイプのバインド値の順序付けられたリストを定義します。

ノート: このパラメータは、スタンバイ・データベースではサポートされていません。

plan_hash_value

SQL実行計画のハッシュ値を指定します。

sqlset_name

SQLチューニング・セットの名前を指定します

basic_filter

SQLチューニング・セットからSQLをフィルタするために使用する述語を指定します。

object_filter

オブジェクト・フィルタを指定します。

rank(i)

選択したSQL文にORDER BY句を指定します。

result_percentage

ランキング・メジャーの合計のパーセントを指定します。

result_limit

フィルタ処理またはランク付けが済んでいるSQLの先頭から数件取得されるSQL文を指定します。

user_name

チューニング対象の文があるユーザーの名前を指定します。

scope

次のようにして、チューニング・スコープを指定します。

  • LIMITED: SQLチューニング・アドバイザでは、統計チェック、アクセス・パス分析およびSQL構造分析に基づいて推奨事項が生成されます。SQLプロファイルの推奨事項は生成されません。

  • COMPREHENSIVE: SQLチューニング・アドバイザでは、制限付きの有効範囲で実行されるすべての分析と、SQLプロファイリングが実行されます。

time_limit

チューニング・セッションの最大継続時間(秒)を指定します。

task_name

チューニング・タスク名(オプション)を指定します。

description

SQLチューニング・セッションの説明(最大256文字)を入力します。

plan_filter

計画フィルタを指定します。同じ文に関連付けられている計画(plan_hash_value)が複数ある場合に、適用できます。このフィルタには、1つの計画(plan_hash_value)のみを選択できます。使用可能な値は次のとおりです。

  • LAST_GENERATED: 最新のタイムスタンプ。

  • FIRST_GENERATED: 最も古いタイムスタンプ。LAST_GENERATEDの反対です。

  • LAST_LOADED: 最新のfirst_load_time統計情報。

  • FIRST_LOADED: 最も古いfirst_load_time統計情報。LAST_LOADEDの反対です。

  • MAX_ELAPSED_TIME: 最大経過時間。

  • MAX_BUFFER_GETS: 最大バッファ取得回数。

  • MAX_DISK_READS: 最大ディスク読取り回数。

  • MAX_DIRECT_WRITES: 最大直接書込み回数。

  • MAX_OPTIMIZER_COST: 最大オプティマイザ・コスト。

sqlset_owner

SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合はNULLを指定します。

spa_task_name

パフォーマンスの低下をチューニングする必要があるSQLパフォーマンス・アナライザ・タスクの名前を指定します。

spa_task_owner

指定したSQLパフォーマンス・アナライザ・タスクの所有者を指定します。現行のユーザーの場合はNULL

spa_compare_exec

SQLパフォーマンス・アナライザ・タスクのパフォーマンス比較試行の実行名を指定します。NULLの場合、指定したSQLパフォーマンス・アナライザ・タスクの最新の実行、タイプCOMPARE PERFORMANCEが使用されます。

dbid

インポート済またはPDBレベルのAWRデータのDBIDを指定します。NULLの場合、現在のデータベースDBIDが使用されます。

con_name

チューニング・タスクのコンテナを指定します。セマンティクスはファンクションの形式によって、次のように異なります。

  • SQLテキスト形式の場合、このパラメータでは、SQLチューニング・アドバイザによるチューニング対象のSQL文が含まれるコンテナを指定します。NULL (デフォルト)の場合、SQLチューニング・アドバイザは現在のコンテナを使用します。

  • SQL ID形式の場合、このパラメータでは、データベースがチューニング対象のSQL文を取得するコンテナを指定します。SQLチューニング・アドバイザはこのコンテナの文をチューニングします。NULLの場合、データベースでは、チューニングに現在のPDBを使用し、SQL文を実行するすべての有効なコンテナのカーソル・キャッシュから文を取得し、コンテナ内で最も非効率な文をチューニングします。

  • AWR形式の場合、このパラメータでは、データベースがチューニング対象のSQL文を取得するAWRデータが含まれるコンテナを指定します。SQLチューニング・アドバイザはこのコンテナの文をチューニングします。NULLの場合、データベースでは、チューニングに現在のPDBを使用し、このSQL文を含むすべての有効なコンテナのAWRから文を取得し、コンテナ内で最も非効率な文をチューニングします。

すべてのファンクション形式で、次のことが当てはまります。

  • CDB以外の場合、このパラメータは無視されます。

  • PDBの場合、このパラメータはNULLであるか、またはPDBのコンテナ名と一致する必要があります。それ以外の場合はエラーが発生します。

  • CDBルートの場合、このパラメータはNULLであるか、またはこのCDBのコンテナ名と一致する必要があります。それ以外の場合はエラーが発生します。

database_link_to

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

戻り値

ユーザーごとに一意のSQLチューニング・タスク名(2人の異なるユーザーが自分のアドバイザ・タスクに同じ名前を付けることはできます)。

使用上のノート

SQLチューニング・セットを使用するこのサブプログラムの形式に関して、このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

例157-1 例

次の例では、次の変数定義を前提としています。

VARIABLE stmt_task     VARCHAR2(64);
VARIABLE sts_task      VARCHAR2(64);
VARIABLE spa_tune_task VARCHAR2(64);

例157-2 SQLテキスト形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK( -
  sql_text => 'SELECT quantity_sold FROM sales s, times t WHERE s.time_id = t.time_id AND s.time_id = TO_DATE(''24-NOV-00'')');

例157-3 SQL ID形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24');
 
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
   scope => 'LIMITED');
 
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
   time_limit => 600);

例157-4 AWRスナップショット形式を使用したチューニング・タスクの作成

EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(begin_snap => 1, -
   end_snap => 2, sql_id => 'ay1m3ssvtrh24');

例157-5 SQLチューニング・セット形式を使用したチューニング・タスクの作成

この例では、バッファ読取りの順にSQL文をチューニングするタスクを作成し、1時間の時間制限を設定します。デフォルトのランキング・メジャーは経過時間です。

EXEC :sts_task := DBMS_SQLTUNE.CREATE_TUNING_TASK( -
  sqlset_name  => 'my_workload', -
  rank1        => 'BUFFER_GETS', -
  time_limit   => 3600, -
  description  => 'tune my workload ordered by buffer gets');

例157-6 SPAタスク形式を使用したチューニング・タスクの作成

この例では、task_123という名前のSQLパフォーマンス・アナライザ・タスクのパフォーマンス比較実行により低下がレポートされたSQL文をチューニングします。

EXEC :spa_tune_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
   spa_task_name     => 'task_123',
   spa_task_owner    => 'SCOTT',
   spa_compare_exec  => 'exec1');

例157-7 スタンバイ・データベースへのSQLチューニング・タスクの作成

この例では、スタンバイ・データベースにチューニング・タスクを作成します。tune_stby_wkldタスクでは、lnk_to_primaryデータベース・リンクを使用してプライマリ・データベースにデータを書き込みます。これは読取り/書込みで開かれています。

VAR tname VARCHAR2(30);
VAR query VARCHAR2(500);
EXEC :tname := 'tune_stby_wkld';
EXEC :query := 'SELECT /*+ FULL(t)*/ col1 FROM table1 t WHERE col1=9000';
EXEC :tname := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_text => :query,-
                 task_name => :tname, database_link_to => 'lnk_to_primary');

157.5.12 DELETE_SQLSETプロシージャ

このプロシージャは、SQL文のセットをSQLチューニング・セットから削除します。

構文

DBMS_SQLTUNE.DELETE_SQLSET (
   sqlset_name   IN  VARCHAR2,
   basic_filter  IN  VARCHAR2 := NULL,
   sqlset_owner  IN  VARCHAR2 := NULL);

パラメータ

表157-19 DELETE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語を指定します。この基本フィルタはSQLチューニング・セットのコンテンツ上でwhere句として使用され、目的のSQLのサブセットをSQLチューニング・セットから選択します。

sqlset_owner

SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合はNULLを指定します。

-- Delete all statements in a sql tuning set.
EXEC DBMS_SQLTUNE.DELETE_SQLSET(sqlset_name   => 'my_workload');
 
-- Delete all statements in a sql tuning set which ran for less than a second
EXEC DBMS_SQLTUNE.DELETE_SQLSET(sqlset_name   => 'my_workload', -
                                basic_filter  => 'elapsed_time < 1000000');

157.5.13 DROP_SQL_PROFILEプロシージャ

このプロシージャは、データベースから名前付きSQLプロファイルを削除します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_SQL_PROFILE (
   name          IN  VARCHAR2,
   ignore        IN  BOOLEAN  := FALSE);

パラメータ

表157-20 DROP_SQL_PROFILEプロシージャのパラメータ

パラメータ 説明

name

削除するSQLプロファイルの名前(必須)。この名前は大文字と小文字を区別します。

ignore

オブジェクトが存在しないために起こるエラーは無視されます。

使用上のノート

DROP ANY SQL PROFILE権限が必要です。

-- Drop the profile:
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE(:pname);

157.5.14 DROP_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットがアクティブでない場合はそれを削除します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_SQLSET (
   sqlset_name   IN  VARCHAR2,
   sqlset_owner  IN  VARCHAR2 := NULL); 

パラメータ

表157-21 DROP_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

sqlset_owner

SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合はNULLを指定します。

使用上のノート

SQLチューニング・セットは、1つ以上のクライアントが参照している場合は削除できません。

-- Drop the sqlset.
EXEC DBMS_SQLTUNE.DROP_SQLSET ('my_workload');

157.5.15 DROP_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・タスクを削除します。タスクおよびすべての結果データは削除されます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.DROP_TUNING_TASK (
 task_name         IN VARCHAR2);

パラメータ

表157-22 DROP_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

削除するチューニング・タスクの名前を指定します。

157.5.16 EXECUTE_TUNING_TASKファンクションおよびプロシージャ

このファンクションおよびプロシージャは、以前に作成したチューニング・タスクを実行します。ファンクションとプロシージャの両方とも、新しいタスク実行のコンテキストで実行されます。ファンクションのバージョンは新しい実行名を戻す点が異なります。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.EXECUTE_TUNING_TASK (
   task_name         IN VARCHAR2,
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN dbms_advisor.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL,
   database_link_to  IN VARCHAR2               := NULL)
 RETURN VARCHAR2;
DBMS_SQLTUNE.EXECUTE_TUNING_TASK (
   task_name         IN VARCHAR2,
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN dbms_advisor.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL,
   database_link_to  IN VARCHAR2               := NULL);

パラメータ

表157-23 EXECUTE_TUNING_TASKファンクションおよびプロシージャのパラメータ

パラメータ 説明

task_name

実行するチューニング・タスクの名前。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。

execution_desc

実行について説明する256文字の長さの文字列。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

使用上のノート

チューニング・タスクは、リセットせずに複数回実行できます。

EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);

157.5.17 IMPLEMENT_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。

IMPLEMENT_TUNING_TASKを実行することは、SCRIPT_TUNING_TASKファンクションを実行してからスクリプトを実行することと同じです。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.IMPLEMENT_TUNING_TASK(
    task_name         IN  VARCHAR2,
    rec_type          IN  VARCHAR2 := REC_TYPE_SQL_PROFILES,
    owner_name        IN  VARCHAR2 := NULL,
    execution_name    IN  VARCHAR2 := NULL,
    database_link_to  IN  VARCHAR2 := NULL);

パラメータ

表157-24 IMPLEMENT_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

リコメンデーションを実装するチューニング・タスクの名前。

rec_type

実装するリコメンデーションのタイプをフィルタします。現在は'PROFILES'のみがサポートされています。

owner_name

関連するチューニング・タスクの所有者。現行のユーザーの場合はNULL

execution_name

使用するタスク実行の名前。NULLの場合、プロシージャは最後のタスク実行からの推奨事項を実装します。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

157.5.18 INTERRUPT_TUNING_TASKプロシージャ

このプロシージャは、現在実行中のチューニング・タスクを中断します。このタスクは、通常の終了と同様に操作を終了するため、ユーザーは中間結果にアクセスできます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.INTERRUPT_TUNING_TASK (
 task_name         IN VARCHAR2);

パラメータ

表157-25 INTERRUPT_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

中断するチューニング・タスクの名前。

EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:my_task);

157.5.19 LOAD_SQLSETプロシージャ

このプロシージャは、選択したSQL文のセットをSQLチューニング・セットに入力します。このプロシージャを複数回コールすると、新しいSQL文の追加または既存の文の属性の置換を行うことができます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.LOAD_SQLSET (
   sqlset_name       IN  VARCHAR2,
   populate_cursor   IN  sqlset_cursor,
   load_option       IN VARCHAR2 := 'INSERT', 
   update_option     IN VARCHAR2 := 'REPLACE', 
   update_condition  IN VARCHAR2 :=  NULL,
   update_attributes IN VARCHAR2 :=  NULL,
   ignore_null       IN BOOLEAN  :=  TRUE,
   commit_rows       IN POSITIVE :=  NULL,
   sqlset_owner      IN VARCHAR2 := NULL);

パラメータ

表157-26 LOAD_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

ロードするSQLチューニング・セットの名前を指定します。

populate_cursor

ロードするSQLチューニング・セットへのカーソル参照を指定します。

load_option

SQLチューニング・セットにロードする文を指定します。有効な値は、次のとおりです。

  • INSERT(デフォルト) — 新しい文のみを追加します。

  • UPDATE — 既存のSQL文を更新します。新しい文は無視されます。

  • MERGE — 新しい文の挿入および既存の文の情報の更新が行われます。

update_option

既存のSQL文の更新方法を指定します。

このパラメータは、load_optionUPDATEまたはMERGEに指定されている場合のみ考慮されます。有効な値は、次のとおりです。

  • REPLACE(デフォルト) — 新しい統計、バインド・リスト、オブジェクト・リストなどを使用して文を更新します。

  • ACCUMULATE — 可能な場合(elapsed_timeなどの統計などの場合)は、属性を組み合せ、可能でない場合(モジュール、アクションなどの場合)は、既存の値を指定した値に置き換えます。累積が可能なSQL文の属性には、elapsed_timebuffer_getsdirect_writesdisk_readsrow_processedfetchesexecutionsend_of_fetch_countstat_periodおよびactive_stat_periodがあります。

update_condition

更新を実行するタイミングを指定します。

このプロシージャは、指定した条件が満たされている場合にのみ更新を実行します。条件によって、データのソースまたは宛先のいずれかを参照できます。条件では、次の接頭辞を使用してソースまたは宛先の属性を参照する必要があります。

  • OLD — SQLチューニング・セット(宛先).の文の属性を参照します。

  • NEW — 入力文(ソース).の文属性を参照します。

update_attributes

マージまたは更新時に更新するSQL文の属性のリストを指定します。

有効な値は、次のとおりです。

  • NULL(デフォルト) — 入力カーソルの内容(実行コンテキストは除く)を指定します。モジュール、アクションなどの実行コンテキストを除いた場合のALLと同じです。

  • BASIC — 統計およびバインドのみ。

  • TYPICALBASICとSQL計画(行ソース統計を除く)を指定します。オブジェクト参照リストは除かれます。

  • ALL — 実行コンテキスト(モジュール、アクションなど)も含むすべての属性を指定します。

  • 更新するカンマ区切りの属性名のリスト。

    • EXECUTION_CONTEXT

    • EXECUTION_STATISTICS

    • SQL_BINDS

    • SQL_PLAN

    • SQL_PLAN_STATISTICS (SQL_PLANと追加された行ソース統計に類似)

ignore_null

新しい値がNULLの場合に属性を更新するかどうかを指定します。

TRUEに設定すると、新しい値がNULLの場合、プロシージャは属性を更新しません。つまり、意図しないかぎり、NULL値で上書きされることはありません。

commit_rows

DML後に文をコミットするかどうかを指定します。

値が指定されている場合、指定された数の文が挿入されるたびにロードがコミットされます。NULLを指定すると、操作の最後に1回のみロードがコミットされます。

この引数に値を指定すると、SQLチューニング・セットのロード操作の進行状況をDBA_SQLSETビューで監視できます。STATEMENT_COUNTの値は、新しいSQL文がロードされるたびに増加します。

sqlset_owner

SQLチューニング・セットの所有者または現行のスキーマ所有者を定義します。現行の所有者の場合はNULLを定義します。

例外

  • sqlset_nameが無効の場合、対応するSQLチューニング・セットが存在しない場合、またはpopulate_cursorが正しくないために実行できない場合、このプロシージャはエラーを戻します。

  • 指定したフィルタが無効な場合も例外が発生します。フィルタは、解析できない場合(sqlset_rowに存在しない属性を参照している場合など)またはユーザーの権限に違反している場合に無効になる可能性があります。

使用上のノート

入力populate_cursorの行は、SQLSET_ROWタイプである必要があります。

この例では、SQLチューニング・セットを作成し、そのチューニング・セットに経過時間が5秒以上のすべての共有SQL領域文を入力します((アプリケーション・ユーザーのワークロードをシミュレートするための)SYSスキーマに属する文は除きます)。SQL文のすべての属性を選択して、デフォルト・モードでチューニング・セットにロードします(SQLチューニング・セットは空であるため、このデフォルト・モードには新しい文のみがロードされます)。

-- create the tuning set
EXEC DBMS_SQLTUNE.CREATE_SQLSET('my_workload');
-- populate the tuning set from the shared SQL area
DECLARE
  cur DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P)
      FROM table(
        DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
          'parsing_schema_name <> ''SYS'' AND elapsed_time > 5000000',
           NULL, NULL, NULL, NULL, 1, NULL,
          'ALL')) P;
 
  DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload', populate_cursor => cur);
END;
/

ここで、ワークロード・リポジトリ(AWR)に格納されている内容でこの情報を増補するとします。現在キャッシュに入っているカーソルは、スナップショットが取られたことで期限切れしているとみなされるため、チューニング・セットにupdate_optionとして'ACCUMULATE'を入力します。

AWRで取得されるすべての文が重要とみなされるため、elapsed_timeフィルタは省略します。ただし、再帰的SQLを回避するために、SYS解析のカーソルは破棄します。

DECLARE
  cur DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P)
      FROM table(
        DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(1,2,
                                                'parsing_schema_name <> ''SYS''',
                                                NULL, NULL,NULL,NULL,
                                                1,
                                                NULL,
                                                'ALL')) P;

  DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name     => 'my_workload',
                           populate_cursor => cur,
                           Using DBMS_SQLTUNE
                           load_option => 'MERGE',
                           update_option => 'ACCUMULATE');
END;

次の例は、新しい文のみをワークロード・リポジトリから挿入し、SQLチューニング・セットにすでに存在する文はスキップする単純なロード操作です。LOAD_SQLSETプロシージャのload_option引数のデフォルト値は'INSERT'であることに注意してください。

DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
  SELECT VALUE(P)
  FROM table(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(1,2)) P;
  DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'my_workload', populate_cursor => cur);
END;
/

次の例は、UPDATEオプションを指定したロード操作を示します。これによって、SQLチューニング・セットにすでに存在する文は更新されますが、新しい文は追加されません。デフォルトでは、古い統計が新しい値に置き換えられます。

DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P)
    FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE) P;
  
  DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name     => 'my_workload',
                           populate_cursor => cur,
                           load_option     => 'UPDATE');
END;
/

157.5.20 PACK_STGTAB_SQLPROFプロシージャ

このプロシージャは、SYSスキーマからステージング表にプロファイル・データをコピーします。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (
   profile_name          IN VARCHAR2 := '%',
   profile_category      IN VARCHAR2 := 'DEFAULT',
   staging_table_name    IN VARCHAR2,
   staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表157-27 PACK_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

profile_name

パックするプロファイルの名前(%ワイルドカードを使用可、大/小文字区別)。

profile_category

パックするプロファイルのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

staging_table_name

使用する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須。

staging_schema_owner

表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL

セキュリティ・モデル

このプロシージャを実行するには、ステージング表に対するADMINISTER SQL MANAGEMENT OBJECT権限およびINSERT権限が必要です。

使用上のノート

このファンクションは、各SQLプロファイルをパックした後でCOMMITを発行します。実行途中でエラーが発生した場合は、ステージング表の行を削除することによりステージング表をクリアしてください。

DEFAULTカテゴリ内のプロファイルのみをステージング表に入れます。これは、このシステム上でデフォルトで使用されるすべてのプロファイルに該当します。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (staging_table_name => 'PROFILE_STGTAB');

次の例でも、すべてのプロファイルがステージング表に入れられます。この例では、現在デフォルトで使用されていない、別のカテゴリ内のプロファイルが(テストなどのために)移動されることに注意してください。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLPROF (profile_category => '%', -
                                      staging_table_name => 'PROFILE_STGTAB');

157.5.21 PACK_STGTAB_SQLSETプロシージャ

このプロシージャは、1つ以上のSQLチューニング・セットを、SYSスキーマ内のそれぞれの場所からCREATE_STGTAB_SQLSETプロシージャによって作成されたステージング表にコピーします。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.PACK_STGTAB_SQLSET (
   sqlset_name          IN VARCHAR2,
   sqlset_owner         IN VARCHAR2 := NULL,
   staging_table_name   IN VARCHAR2,
   staging_schema_owner IN VARCHAR2 := NULL,
   db_version           IN NUMBER   := NULL);

データベース上のすべてのSQLチューニング・セットをステージング表に入れます。

BEGIN 
  DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
      sqlset_name        => '%'
  ,   sqlset_owner       => '%'
  ,   staging_table_name => 'STGTAB_SQLSET');
END;

現行のユーザーが所有するSQLチューニング・セットのみをステージング表に入れます。:

BEGIN 
  DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
      sqlset_name        => '%'
  ,   staging_table_name => 'STGTAB_SQLSET');
END;

特定のSQLチューニング・セットをパックします。:

BEGIN 
  DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
      sqlset_name         => 'my_workload'
  ,   staging_table_name  => 'STGTAB_SQLSET');
END;

2つ目のSQLチューニング・セットをパックします。:

BEGIN 
  DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
      sqlset_name         => 'workload_subset'
  ,   staging_table_name  => 'STGTAB_SQLSET');
END;

Oracle Database 11gリリース1 (11.2)に作成したステージング表stgtab_sqlsetに、STS my_workload_subsetをパックします。

BEGIN
  DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
      sqlset_name          => 'workload_subset'
  ,   staging_table_name   => 'STGTAB_SQLSET'
  ,   db_version           => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION);
END;

157.5.22 REMAP_STGTAB_SQLPROFプロシージャ

このプロシージャは、ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。

このプロシージャを使用して、プロファイルのカテゴリを変更できます。また、同じ名前のプロファイルがシステムにすでに存在する場合、これを使用してプロファイル名を変更することもできます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF (
  old_profile_name      IN VARCHAR2,
  new_profile_name      IN VARCHAR2 := NULL,
  new_profile_category  IN VARCHAR2 := NULL,
  staging_table_name    IN VARCHAR2,
  staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表157-28 REMAP_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

old_profile_name

再マップ操作の対象となるプロファイルの名前(大/小文字区別)。

new_profile_name

プロファイルの新しい名前(大/小文字区別)。変更しない場合はNULL

new_profile_category

プロファイルの新しいカテゴリ(大/小文字区別)。変更しない場合はNULL

staging_table_name

再マップ操作を行う表の名前(大/小文字区別)。必須。

staging_schema_owner

表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL

セキュリティ・モデル

このプロシージャには、ステージング表に対するUPDATE権限が必要です。

アンパックする前にプロファイルの名前を変更して、競合を回避します。

BEGIN 
  DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF(
      old_profile_name    => :pname
  ,   new_profile_name    => 'IMP' || :pname
  ,   staging_table_name  => 'PROFILE_STGTAB');
END;

ステージング表のSQLプロファイルをインポートする前に、そのプロファイルのカテゴリを'TEST'に変更します。これによって、ユーザーは、プロファイルを新しいシステムでアクティブにする前にテストを行うことができます。

BEGIN
  DBMS_SQLTUNE.REMAP_STGTAB_SQLPROF(
      old_profile_name     => :pname
  ,   new_profile_category => 'TEST'
  ,   staging_table_name   => 'PROFILE_STGTAB');
END;

157.5.23 REMAP_STGTAB_SQLSETプロシージャ

このプロシージャは、異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMAP_STGTAB_SQLSET (
   old_sqlset_name        IN VARCHAR2,
   old_sqlset_owner       IN VARCHAR2 := NULL,
   new_sqlset_name        IN VARCHAR2 := NULL,
   new_sqlset_owner       IN VARCHAR2 := NULL,
   staging_table_name     IN VARCHAR2,
   staging_schema_owner   IN VARCHAR2 := NULL
   old_con_dbid           IN NUMBER   := NULL,
   new_con_dbid           IN NUMBER   := NULL);
);

パラメータ

パラメータはDBMS_SQLTUNE.REMAP_STGTAB_SQLSETおよびDBMS_SQLSET.REMAP_SQLSETプロシージャの場合と同じです。

表157-29 REMAP_STGTAB_SQLSETおよびREMAP_SQLSETプロシージャのパラメータ

パラメータ 説明

old_sqlset_name

再マップ操作の対象となるチューニング・セットの名前を指定します。ワイルドカード文字(%)は使用できません。

old_sqlset_owner

再マップ操作の対象となるチューニング・セット所有者の名前を指定します。現行のスキーマ所有者の場合はNULL

new_sqlset_name

チューニング・セットの新しい名前を指定します。チューニング・セット名を変更しない場合はNULLを指定します。

new_sqlset_owner

チューニング・セットの新しい所有者を指定します。所有者を変更しない場合はNULLを指定します。

staging_table_name

再マップ操作を行う表の名前を指定します。値では大文字と小文字が区別されます。

staging_schema_owner

ステージング表の所有者の名前を指定します。現行のスキーマ所有者の場合はNULLを指定します。値では大文字と小文字が区別されます。

old_con_dbid

新しいコンテナDBIDに再マップされる古いコンテナDBIDを指定します。

同じコンテナDBIDを使用するにはNULLを指定します。再マップを成功させるには、old_con_dbidnew_con_dbidの両方を指定する必要があります。

new_con_dbid

古いコンテナDBIDと置き換える新しいコンテナDBIDを指定します。

同じコンテナDBIDを使用するにはNULLを指定します。再マップを成功させるには、old_con_dbidnew_con_dbidの両方を指定する必要があります。

使用上のノート

複数のチューニング・セットの名前または所有者を再マップするには、このプロシージャを複数回コールします。このプロシージャで処理できるチューニング・セットは、1回のコールで1つのみです。

-- Change the name of an STS in the staging table before unpacking it.
BEGIN 
  DBMS_SQLTUNE.REMAP_STGTAB_SQLSET(
      old_sqlset_name    => 'my_workload'                                      
  ,   old_sqlset_owner   => 'SH'
  ,   new_sqlset_name    => 'imp_workload'                                      
  ,   staging_table_name => 'STGTAB_SQLSET');
 
-- Change the owner of an STS in the staging table before unpacking it.
  DBMS_SQLTUNE.REMAP_STGTAB_SQLSET(
      old_sqlset_name    => 'imp_workload'
  ,   old_sqlset_owner   => 'SH'
  ,   new_sqlset_owner   => 'SYS'
  ,   staging_table_name => 'STGTAB_SQLSET');
END;

157.5.24 REMOVE_SQLSET_REFERENCEプロシージャ

このプロシージャは、SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE (
   sqlset_name   IN  VARCHAR2,
   reference_id  IN  NUMBER);

パラメータ

表157-30 REMOVE_SQLSET_REFERENCEプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

reference_id

削除する参照の識別子を指定します。

特定のSQLチューニング・セットの使用を終了した後、そのSQLチューニング・セットに関する参照を削除して、再度書込み可能にすることができます。次の例では、my_workloadへの参照を削除します。

EXEC DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE( -
       sqlset_name   => 'my_workload', -
       reference_id  => :rid);

DBA_SQLSET_REFERENCESビューを使用して、特定のSQLチューニング・セットへのすべての参照を確認します。

157.5.25 REPORT_AUTO_TUNING_TASKファンクション

このファンクションは、自動チューニング・タスクによるレポートを表示します。

このファンクションは、一定範囲のタスク実行についてレポートし、REPORT_TUNING_TASKファンクションは単一の実行についてレポートします。このファンクションは、DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASKが優先されるOracle Database 11gリリース2(11.2)では非推奨となっています。

参照:

構文

DBMS_SQLTUNE.REPORT_AUTO_TUNING_TASK(
    begin_exec     IN VARCHAR2  := NULL,
    end_exec       IN VARCHAR2  := NULL,
    type           IN VARCHAR2  := TYPE_TEXT,
    level          IN VARCHAR2  := LEVEL_TYPICAL,
    section        IN VARCHAR2  := SECTION_ALL,
    object_id      IN NUMBER    := NULL,
    result_limit   IN NUMBER    := NULL)
  RETURN CLOB;

パラメータ

表157-31 REPORT_AUTO_TUNING_TASKファンクションのパラメータ

パラメータ 説明

begin_exec

レポートを開始する実行の名前を指定します。NULLの場合は、最新の実行に関するレポートが取得されます。

end_exec

レポートを終了する実行の名前を指定します。NULLの場合は、最新の実行に関するレポートが取得されます。

type

作成するレポートのタイプを指定します。設定可能な値は、テキストのレポートを作成するTYPE_TEXTです。

level

レポートの詳細レベルを指定します。

  • LEVEL_BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

  • LEVEL_TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

  • LEVEL_ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

レポートを単一のセクションに制限します(すべてのセクションに関するレポートの場合は、ALLを指定します)。

  • SECTION_SUMMARY: サマリー情報

  • SECTION_FINDINGS: チューニングの結果

  • SECTION_PLAN: EXPLAIN PLAN

  • SECTION_INFORMATION: 一般的な情報

  • SECTION_ERROR: エラーが発生した文

  • SECTION_ALL: すべての文

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのIDを指定します。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポートに表示されるSQL文の最大数を指定します。

戻り値

必要なレポートが含まれているCLOB

157.5.26 REPORT_SQL_DETAILファンクション

このファンクションは、特定のSQLIDに関するレポートを作成します。各SQLIDにV$ビューおよびAWRから取得した様々な統計情報と詳細を付与します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_DETAIL (
   sql_id                   IN  VARCHAR2   DEFAULT NULL,
   sql_plan_hash_value      IN  NUMBER     DEFAULT NULL,
   start_time               IN  DATE       DEFAULT NULL,
   duration                 IN  NUMBER     DEFAULT NULL,
   inst_id                  IN  NUMBER     DEFAULT NULL,
   dbid                     IN  NUMBER     DEFAULT NULL,
   event_detail             IN  VARCHAR2   DEFAULT 'YES',
   bucket_max_count         IN  NUMBER     DEFAULT 128,
   bucket_interval          IN  NUMBER     DEFAULT NULL,
   top_n                    IN  NUMBER     DEFAULT 10,
   report_level             IN  VARCHAR2   DEFAULT 'TYPICAL',
   type                     IN  VARCHAR2   DEFAULT 'ACTIVE',
   data_source              IN  VARCHAR2   DEFAULT 'AUTO',
   end_time                 IN  DATE       DEFAULT NULL,
   duration_stats           IN  NUMBER     DEFAULT NULL,
   con_name                 IN  VARCHAR2   DEFAULT NULL)
RETURN CLOB;

パラメータ

表157-32 REPORT_SQL_DETAILファンクションのパラメータ

パラメータ 説明

sql_id

監視情報を表示する対象のSQLID。NULL(デフォルト)の場合、現在のセッションで最後に実行されたSQL文のSQLIDに関する統計情報を表示します。

sql_plan_hash_value

特定のplan_hash_valueに対するSQL統計情報および詳細を表示します。NULL(デフォルト)の場合、SQL_IDのすべての計画に対する統計情報および詳細を表示します。

start_time

指定すると、この時刻に開始されるSQLアクティビティを(GV$ACTIVE_SESSION_HISTORYから)表示します。Oracle RACでは、最小のstart_timeは、すべてのインスタンスにおけるインメモリーASHバッファの最も早いsample_timeです。NULL(デフォルト)の場合、現在の時刻の1時間前です。

duration

レポートに対するアクティビティの継続時間(秒)。NULL(デフォルト)の場合、1時間の値を使用します。

inst_id

SQLの詳細を取得するターゲット・インスタンス。NULLの場合、すべてのインスタンスのデータを使用します。0または-1の場合は、現行のインスタンスが使用されます。

dbid

SQLの詳細を取得するDBID。NULLの場合は、現行のDBIDが使用されます。

event_detail

'NO'に設定すると、アクティビティはwait_classのみによって集計されます。(wait_classevent_name)によって集計するには、'YES' (デフォルト)を使用します。

bucket_max_count

指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。指定しない場合は、128の値が使用されます。

bucket_interval

指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、bucket_max_countは無視されます。

top_n

最上位のディメンション・セクションにディメンションごとに表示するエントリの数を制御します。指定しない場合は、デフォルト値の10が使用されます。

report_level

レポートの詳細なレベル('BASIC''TYPICAL'または'ALL'のいずれか)です。デフォルトでは、'TYPICAL'を想定します。意味は下で説明しています。

また、レポートの個々のセクションは、+/- section_nameを使用して、有効または無効にすることもできます。複数のセクションが定義されます。

  • 'TOP': SQL文のASHディメンションの上限値を表示します。デフォルトはONです。

  • 'SPM': SQL文の既存の計画ベースラインを表示します。デフォルトはOFFです。

  • 'MISMATCH': 新しい子カーソルを作成する理由を表示します(条件違反を共有)。デフォルトはOFFです。

  • 'STATS': GV$SQLAREA_PLAN_HASHから計画ごとにSQL実行統計情報を表示します。デフォルトはONです。

  • 'ACTIVITY': SQL文の各計画のASHからトップ・アクティビティを表示します。デフォルトはONです。

  • 'ACTIVITY_ALL': SQL文に対する計画の各行のASHからトップ・アクティビティを表示します。デフォルトはOFFです。

  • 'HISTOGRAM': SQL文の各計画のアクティビティ・ヒストグラムを表示します(計画タイムライン・ヒストグラム)。デフォルトはONです。

  • 'SESSIONS': SQL文の各計画の上位セッションに関するアクティビティを表示します。デフォルトはOFFです。

  • 'MONITOR': 実行計画ごとに1つの監視されたSQL実行を表示します。デフォルトはONです。

  • 'XPLAN': 実行計画を表示します。デフォルトはONです。

  • 'BINDS': 取得されたバインド・データを表示します。デフォルトはONです。

また、SQLテキストは異なるレベルで指定できます。

  • -SQL_TEXT: レポートにSQLテキストなし。

  • +SQL_TEXT: GV$SQL_MONITORに格納される最初の2000文字までの部分的なSQLテキストが有効。

  • -SQL_FULLTEXT: 完全なSQLテキストなし(+SQL_TEXT)。

  • +SQL_FULLTEXT: 完全なSQLテキストを表示(デフォルト値)

3つのトップ・レベルのレポート・レベルの意味は次のとおりです。

  • NONE - 可能なかぎり最小

  • BASIC: SQL_TEXT+STATS+ACTIVITY+HISTOGRAM

  • TYPICAL: SQL_FULLTEXT+TOP+STATS+ACTIVITY+HISTOGRAM+XPLAN+MONITOR

  • ALL - すべて

これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、REPORT_LEVEL文字列の先頭にある必要があります。

type

レポート形式: デフォルトは'ACTIVE'です。'XML'も可能です(「使用上のノート」を参照)。

data_source

次のいずれかの値に基づいてSQLデータのデータ・ソースを決定します。

  • MEMORY: データ・ソースはGV$ビューです

  • DISK: データ・ソースはDBA_HIST_*ビューです

  • AUTO: 時間枠に基づいてデータ・ソースを自動的に決定します(デフォルト)

end_time

指定した場合、start_timeからend_timeまでのSQLアクティビティを示します。NULL (デフォルト)の場合、systimestampのSQLアクティビティを示します。

duration_stats

レポートに関するAWR (時間単位)の追加SQL時間統計の期間。NULL (デフォルト)の場合、24時間の期間が考慮されます。

con_name

マルチテナント・コンテナ・データベース(CDB)の名前。

セキュリティ・モデル

実行者にはDBMS_XPLANパッケージに対するEXECUTE権限が必要です。

戻り値

必要なレポートが含まれているCLOB

使用上のノート

  • ACTIVEレポートは、Enterprise Managerと類似した豊富な対話型ユーザー・インタフェースを備えていますが、EMのインストールは必要ありません。レポート・ファイルはHTML形式で作成されるため、最近のほとんどのブラウザで解釈可能です。アクティブ・レポートに機能を付与するコードは、最初に表示したときにWebブラウザにより透過的にダウンロードされるため、表示には外部接続が必要です。

  • 実行者は次のビューに対してSELECTまたはREAD権限が必要です。

    • V$SESSION

    • DBA_ADVISOR_FINDINGS

    • V$DATABASE

    • GV$ASH_INFO

    • GV$ACTIVE_SESSION_HISTORY

    • GV$SQLAREA_PLAN_HASH

    • GV$SQL

    • DBA_HIST_SNAPSHOT

    • DBA_HIST_WR_CONTROL

    • DBA_HIST_ACTIVE_SESS_HISTORY

    • DBA_HIST_SQLSTAT

    • DBA_HIST_SQL_BIND_METADATA

    • DBA_HIST_SQLTEXT

    • DBA_SQL_PLAN_BASELINES

    • DBA_SQL_PROFILES

    • DBA_ADVISOR_TASKS

    • DBA_SERVICES

    • DBA_USERS

    • DBA_OBJECTS

    • DBA_PROCEDURES

157.5.27 REPORT_SQL_MONITORファンクション

このファンクションは、対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTMLまたはXML)を作成します。

参照:

このグループの他のサブプログラムについては、「リアルタイムSQL監視」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_MONITOR(
   sql_id                    IN VARCHAR2  DEFAULT  NULL,
   dbop_name                 IN VARCHAR2  DEFAULT  NULL,
   dbop_exec_id              IN NUMBER    DEFAULT  NULL,
   session_id                IN NUMBER    DEFAULT  NULL,
   session_serial            IN NUMBER    DEFAULT  NULL,
   sql_exec_start            IN DATE      DEFAULT  NULL,
   sql_exec_id               IN NUMBER    DEFAULT  NULL,
   inst_id                   IN NUMBER    DEFAULT  NULL,
   start_time_filter         IN DATE      DEFAULT  NULL,
   end_time_filter           IN DATE      DEFAULT  NULL,
   instance_id_filter        IN NUMBER    DEFAULT  NULL,
   parallel_filter           IN VARCHAR2  DEFAULT  NULL,
   plan_line_filter          IN NUMBER    DEFAULT  NULL,
   event_detail              IN VARCHAR2  DEFAULT  'YES',
   bucket_max_count          IN NUMBER    DEFAULT  128,
   bucket_interval           IN NUMBER    DEFAULT  NULL,
   base_path                 IN VARCHAR2  DEFAULT  NULL,
   last_refresh_time         IN DATE      DEFAULT  NULL,
   report_level              IN VARCHAR2  DEFAULT 'TYPICAL',
   type                      IN VARCHAR2  DEFAULT 'TEXT',
   sql_plan_hash_value       IN NUMBER    DEFAULT  NULL,
   con_name                  IN VARCHAR2  DEFAULT  NULL,
   report_id                 IN NUMBER    DEFAULT  NULL)
 RETURN CLOB;

パラメータ

表157-33 REPORT_SQL_MONITORファンクションのパラメータ

パラメータ 説明

sql_id

監視情報を表示する対象のSQL_ID。Oracleによって監視される最後の文をレポートする場合は、NULL(デフォルト)を使用します。

dbop_name

コンポジット・データベース操作の監視情報を表示する対象のDBOP_NAME

dbop_exec_id

監視情報の表示対象であるコンポジット・データベース操作の実行ID。

session_id

NULL以外に設定すると、指定したセッションで実行される文のサブセットのみがこのパラメータの対象となります。デフォルトはNULLです。現行のセッションに対しては、USERENV('SID')を使用します。

session_serial

session_idパラメータに加えて、目的のセッション・インカネーションが対象となるように、セッションのシリアルを指定することもできます。session_idNULLの場合、このパラメータは無視されます。

sql_exec_start

このパラメータは、sql_idも指定されている場合にのみsql_exec_idとともに適用できます。sql_idで識別される文が監視されていた場合、これらのパラメータを組み合せて使用すると、sql_idで識別される文の実行に関連する監視情報を表示できます。NULL(デフォルト)の場合、最後に監視されたSQLの実行のsql_idが表示されます。

sql_exec_id

このパラメータは、sql_idも指定されている場合にのみsql_exec_startとともに適用できます。sql_idで識別される文が監視されていた場合、これらのパラメータを組み合せて使用すると、sql_idで識別される文の実行に関連する監視情報を表示できます。NULL(デフォルト)の場合、最後に監視されたSQLの実行のsql_idが表示されます。

inst_id

指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、NULL(デフォルト)を指定します。

start_time_filter

NULL以外の場合は、指定した日付より後に記録された(GV$ACTIVE_SESSION_HISTORYの)アクティビティのみがレポートの対象となります。NULLの場合は、対象のSQL文の実行開始時に、レポート対象のアクティビティが開始されます。

end_time_filter

NULL以外の場合は、end_time_filterの日付より前に収集された(GV$ACTIVE_SESSION_HISTORYの)アクティビティのみがレポートに表示されます。NULLの場合は、対象のSQL文の実行終了時,または現行の時間(文が実行されている場合)に、レポート対象のアクティビティが終了されます。

instance_id_filter

複数のOracle Real Application Clusters(Oracle RAC)インスタンスにわたってパラレル実行が行われた場合にのみ適用されます。このパラメータを使用すると、指定したインスタンスのアクティビティのみをレポートできます。パラレル問合せが実行されたすべてのインスタンスに関するアクティビティを含めるには、NULL値(デフォルト)を使用します。

parallel_filter

パラレル実行にのみ適用され、パラレル実行に関連する処理(問合せコーディネータまたはパラレル実行サーバー、あるいはその両方)のサブセットのみのアクティビティを報告できるようにします。このパラメータの値は、次のいずれかになります。

  • NULL: すべての処理を対象とします。

  • [qc][servers(<svr_grp>[,] <svr_set>[,] <srv_num>)]: qcは問合せコーディネータを表し、servers()は対象とするPXサーバーを指定します。

次の例では、パラレル処理のサブセットを対象とする方法を示します。

  • qc: 問合せコーディネータのみを対象とします。

  • servers(1): グループ番号1に属するすべてのパラレル実行サーバーを対象とします。パラレルに実行される文には、メイン・サーバー・グループ(グループ番号1)が1つあり、パラレルに実行されるネストされた副問合せごとに1つのグループが追加されます。

  • servers(,2): 任意のグループに属するすべてのパラレル実行サーバーを対象とします。ただし、各グループのセット1で実行されるサーバーのみです(各グループには、最大2セットのパラレル実行サーバーが含まれています)。

  • servers(1,1): グループ1、セット1のみを対象とします。

  • servers(1,2,4): グループ1、セット2、サーバー番号4のみを対象とします。この設定では、1つのパラレル・サーバー処理がレポートされます。

  • qc servers(1,2,4): 問合せコーディネータも含めることによって、前述の設定と同じになります。

event_detail

値が'YES'(デフォルト)の場合は、レポート対象となるGV$ACTIVE_SESSION_HISTORYのアクティビティが、(wait_class, event_name)によって集計されます。wait_classでのみ集計するには、'NO'を使用します。

bucket_max_count

指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。

bucket_interval

指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、bucket_max_countは無視されます。

base_path

外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするためにフレックスHTML形式が必要なため、フレックスHTMLリソースのURLパス。

last_refresh_time

NULL(デフォルトではNULL)ではない場合、レポートが最後に取得された時刻(レポート・タグのSYSDATE属性を参照)。このオプションは、実行中の問合せのレポートを表示するため、およびレポートが定期的に更新される際に使用します。新しい情報または変更された情報のみが戻されるため、レポートのサイズを最適化します。特に、次が最適化されます。

  • このオプションを指定すると、SQLテキストが戻されません。

  • アクティビティ・ヒストグラムはその時点で交差するバケットで開始されます。last_refresh_timeがバケットの開始後でも、バケットの内容全体が戻されます。

report_level

レポートの詳細なレベル('NONE''BASIC''TYPICAL'または'ALL')です。デフォルトでは、'TYPICAL'を想定します。

また、レポートの個々のセクションは、+/- section_nameを使用して、有効または無効にすることもできます。複数のセクションが定義されます。

  • 'XPLAN': EXPLAIN PLANを表示します。デフォルトはONです。

  • 'PLAN': 計画監視統計を表示します。デフォルトはONです。

  • 'SESSIONS': セッションの詳細を表示します。パラレル問合せにのみ適用され、デフォルトはONです。

  • 'INSTANCE': インスタンスの詳細を表示します。パラレルおよびインスタンス間にのみ適用され、デフォルトはONです。

  • 'PARALLEL': セッションおよびインスタンスの詳細を指定するための包括的なパラメータです。

  • 'ACTIVITY' - グローバル・レベル、プラン・ライン・レベルおよびセッションまたはインスタンス・レベル(該当する場合)でアクティビティの要約を表示します。デフォルトはONです。

  • 'BINDS' - 該当する場合にバインド情報を表示します。デフォルトはONです。

  • 'METRICS' - 一定期間のメトリック・データ(CPU、IO、...)を表示します。デフォルトはONです。

  • 'ACTIVITY_HISTOGRAM' - 全体的な問合せアクティビティのヒストグラムを表示します。デフォルトはONです。

  • 'PLAN_HISTOGRAM' - プラン・ライン・レベルでアクティビティ・ヒストグラムを表示します。デフォルトはOFFです。

  • 'OTHER' - その他の情報。デフォルトはONです。

また、SQLテキストは異なるレベルで指定できます。

  • SQL_TEXT - レポートにSQLテキストなし。

  • +SQL_TEXT: GV$SQL_MONITORに格納される最初の2000文字までの部分的なSQLテキストが有効。

  • -SQL_FULLTEXT: 完全なSQLテキストなし(+SQL_TEXT)。

  • +SQL_FULLTEXT: 完全なSQLテキストを表示(デフォルト値)

report_level (続き)

3つのトップ・レベルのレポート・レベルの意味は次のとおりです。

  • NONE - 可能なかぎり最小

  • +BASIC: SQL_TEXT-PLAN-XPLAN-SESSIONS-INSTANCE-ACTIVITY_HISTOGRAM-PLAN_HISTOGRAM-METRICS

  • TYPICAL - PLAN_HISTOGRAMを除くすべて

  • ALL - すべて

これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、REPORT_LEVEL文字列の先頭にある必要があります。

type

レポート形式で、デフォルトは'TEXT'です。可能な値は、'TEXT'、'HTML''XML'または'ACTIVE'です(「使用上のノート」を参照)。

sql_plan_hash_value

指定したplan_hash_valueのあるSQL実行のみを対象にします。デフォルトはNULLです。

con_name

マルチテナント・コンテナ・データベース(CDB)の名前。

report_id

自動レポート・リポジトリ内のレポートのID。レポートIDは、DBA_HIST_REPORTSにあります。

戻り値

必要なレポートが含まれているCLOB

使用上のノート

  • このレポートの対象となるSQL文の特徴を次に示します。

    • Oracle Databaseによって監視された最後のSQL。これはデフォルト動作であるため、パラメータを指定する必要はありません。

    • 特定のセッションで実行され、さらにOracleで監視された最後のSQL。セッションは、セッションID、および必要に応じてシリアル番号によって識別されます。たとえば、現行のセッションに対してはsession_id =>を使用し、セッションID 20、シリアル番号103に対してはsession_id => 20, session_serial => 103を使用します。

    • sql_idで識別された特定の文の最新の実行。

    • 実行キー(sql_idsql_exec_startおよびsql_exec_id)によって識別されたSQL文の特定の実行。

  • このレポートでは、次に示すいくつかの固定ビューで公開されるパフォーマンス・データが生成されます。このため、レポート・ファンクションを起動するには、これらの固定ビューからデータを選択する権限(SELECT_CATALOGロールなど)が必要です。

    • GV$SQL_MONITOR

    • GV$SQL_PLAN_MONITOR

    • GV$SQL_PLAN

    • GV$ACTIVE_SESSION_HISTORY

    • GV$SESSION_LONGOPS

    • GV$SQL

  • bucket_max_countおよびbucket_intervalパラメータはアクティビティ・ヒストグラムを制御します。

    デフォルトでは、バケットの最大数は128に設定されます。データベースは、この数に基づいてbucket_interval値を導出します。bucket_interval(値は秒単位)は、バケットの最大数を超えない許容最小限の2の累乗(最小は1秒)になるように計算されます。たとえば、問合せが600秒間実行された場合、データベースは8秒間(2のべき乗)のbucket_intervalを選択します。600/8 = 74で最大値の128バケットを下回るため、データベースは8の値を選択します。8秒より小さいと4秒になりますが、この場合は最大の128を超えるバケットになります。bucket_intervalを指定した場合は、指定した値がデータベースで使用され、bucket_max_countからの導出は行われません。

  • ACTIVEレポートは、Enterprise Managerと類似した豊富な対話型ユーザー・インタフェースを備えていますが、EMのインストールは必要ありません。

    レポート・ファイルはHTML形式です。アクティブ・レポートに機能を付与するコードは、レポートを最初に表示するときにWebブラウザにより透過的にダウンロードされます。このため、レポートを表示するには外部接続が必要です。

参照:

リアルタイムSQL監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

157.5.28 REPORT_SQL_MONITOR_LISTファンクション

このファンクションは、Oracle Databaseによって監視されるすべての文または文のサブセットに関するレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します。

REPORT_SQL_MONITORファンクションを使用して、単一のSQL文に関する詳細な監視情報を取得します。

参照:

このグループの他のサブプログラムについては、「リアルタイムSQL監視」を参照してください。

構文

DBMS_SQLTUNE.REPORT_SQL_MONITOR_LIST(
   sql_id                    IN VARCHAR2  DEFAULT  NULL,
   session_id                IN NUMBER    DEFAULT  NULL,
   session_serial            IN NUMBER    DEFAULT  NULL,
   inst_id                   IN NUMBER    DEFAULT  NULL,
   active_since_date         IN DATE      DEFAULT  NULL,
   active_since_sec          IN NUMBER    DEFAULT  NULL,
   active_before_date        IN DATE      DEFAULT  NULL,
   last_refresh_time         IN DATE      DEFAULT  NULL,
   dbop_name                 IN VARCHAR2  DEFAULT  NULL,
   monitor_type              IN NUMBER    DEFAULT  MONITOR_TYPE_ALL,
   max_sqltext_length        IN NUMBER    DEFAULT  NULL,
   top_n_count               IN NUMBER    DEFAULT  NULL,
   top_n_rankby              IN VARCHAR2  DEFAULT  'LAST_ACTIVE_TIME',
   report_level              IN VARCHAR2  DEFAULT  'TYPICAL',
   auto_refresh              IN NUMBER    DEFAULT  NULL,
   base_path                 IN VARCHAR2  DEFAULT  NULL,
   type                      IN VARCHAR2  DEFAULT 'TEXT',
   con_name                  IN VARCHAR2  DEFAULT  NULL,
   top_n_detail_count        IN NUMBER    DEFAULT  NULL)
 RETURN CLOB;

パラメータ

表157-34 REPORT_SQL_MONITOR_LISTファンクションのパラメータ

パラメータ 説明

sql_id

監視情報を表示する対象のSQL_ID。Oracleによって監視される最後の文をレポートする場合は、NULL(デフォルト)を使用します。

session_id

NULL以外に設定すると、指定したセッションで実行される文のサブセットのみがこのパラメータの対象となります。デフォルトはNULLです。現行のセッションに対しては、-1またはUSERENV('SID')を使用します。

session_serial

session_idパラメータに加えて、目的のセッション・インカネーションが対象となるように、セッションのシリアルを指定することもできます。session_idNULLの場合、このパラメータは無視されます。

inst_id

指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、NULL(デフォルト)を指定します。

active_since_date

NULL(デフォルト)以外を指定すると、指定した時刻以後にアクティブである監視対象の文のみを戻します。これには、指定した日時の後で実行を完了したあらゆる文とともに実行中のすべての文が含まれます。

active_since_sec

active_since_dateと同じですが、現行のSYSDATEから指定の秒数を引いた値を基準にして日付が指定されます。たとえば、1時間の制限を適用するには3600を指定します。

active_before_date

NULL (デフォルト)以外を指定すると、指定した日時より前にアクティブであった監視対象の文のみを戻します。

last_refresh_time

NULL(デフォルト)ではない場合、リスト・レポートが最後に取得された日時。これにより、アプリケーションがリストを表示し、定期的(5秒ごとなど)にレポートを更新する場合に最適化されます。この場合、レポートは、指定したlast_refresh_time以降アクティブになっている監視対象の問合せの実行に関する詳細を示します。その他の問合せについては、レポートは実行キー(sql_idsql_exec_startsql_exec_id)を戻します。指定した日付以降の最初のリフレッシュ時の問合せでは、このファンクションによってSQL実行キーと統計情報のみが戻されます。

dbop_name

DB操作名。監視対象のDB操作をすべて表示するには、NULLを指定します。

monitor_type

SQL監視操作のタイプ。次のいずれかの値を指定します。

  • MONITOR_TYPE_SQL: SQL文のみを戻します。

  • MONITOR_TYPE_DBOP: データベース操作のみを戻します。

  • MONITOR_TYPE_ALL: SQL文とデータベース操作を戻します。

max_sqltext_length

SQLテキストの最大長。デフォルトはNULL (無制限)です。

top_n_count

レポートに含める必要がある上位N番までのSQL文の数を制限します。

top_n_rankby

SQL文をランク付けするための属性を指定します。top_n_count値がNULLでないときにこの値を指定します。SQL文のランク付けは、次のいずれかの値に基づいて行われます。

  • LAST_ACTIVE_TIME - 最後のアクティブな日時(最近の上位N番まで)

  • DURATION - 実行の合計期間

  • DB_TIME - 使用されたDB時間

  • CPU_TIME - 使用されたCPU時間

  • IO_REQUESTS - I/O要求の数

  • IO_BYTES - I/Oバイトの数

report_level

レポートの詳細なレベル。レベルは、次のいずれかになります。

  • BASIC - 最大200文字までのSQLテキスト

  • TYPICAL - カーソルが期限切れになっていないことを前提に、完全なSQLテキストを含みます。期限切れの場合は、最大2000文字のSQLテキストが含まれます。

  • ALL - 現在はTYPICALと同じです。

auto_refresh

現在は実行できず、将来使用するために予約されています。

base_path

フレックスHTMLリソースのURLパス。これが必要な理由は、外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするにはフレックスHTML形式が必要なためです。

type

レポート形式のTEXT(デフォルト)、HTMLまたはXML

con_name

マルチテナント・コンテナ・データベース(CDB)の名前

top_n_detail_count

SQL監視の詳細をレポートに含める必要がある上位N番までのSQL文の数を制限します。

戻り値

監視されているSQL文のリストに対するレポート。レポート・タイプは、テキスト、XMLまたはHTMLです。

使用上のノート

固定ビューGV$SQL_MONITORおよびGV$SQLにアクセスする権限を持っている必要があります。

参照:

リアルタイムSQL監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

157.5.29 REPORT_SQL_MONITOR_LIST_XMLファンクション

このファンクションはREPORT_SQL_MONITOR_LISTファンクションと同じですが、XMLTypeを戻します。

157.5.30 REPORT_TUNING_TASKファンクション

このファンクションは、チューニング・タスクの結果を表示します。デフォルトでは、レポートはテキスト形式です。

構文

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム」を参照してください。

DBMS_SQLTUNE.REPORT_TUNING_TASK(
   task_name        IN   VARCHAR2,
   type             IN   VARCHAR2   := 'TEXT',
   level            IN   VARCHAR2   := 'TYPICAL',
   section          IN   VARCHAR2   := ALL,
   object_id        IN   NUMBER     := NULL,
   result_limit     IN   NUMBER     := NULL,
   owner_name       IN   VARCHAR2   := NULL,
   execution_name   IN   VARCHAR2   := NULL,
   database_link_to IN   VARCHAR2   := NULL)
RETURN CLOB;

パラメータ

表157-35 REPORT_TUNING_TASKファンクションのパラメータ

パラメータ 説明

task_name

チューニング・タスクの名前。

type

作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成するTEXTです。

level

レポートの詳細なレベル。

  • BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

  • TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

  • ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

含めるレポートのセクション。

レポートを次のいずれかの単一セクションに制限できます(すべてのセクションに関するレポートの場合は、ALLを指定します)。

  • SUMMARY - サマリー情報

  • FINDINGS - チューニングの結果

  • PLAN - EXPLAIN PLAN

  • INFORMATION - 一般的な情報

  • ERROR - エラーが発生した文

  • ALL - すべての文

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポートに表示されるSQL文の最大数。

owner_name

関連するチューニング・タスクの所有者。デフォルトは現在のスキーマ所有者です。

execution_name

使用するタスク実行の名前。NULLの場合、このファンクションは、最後のタスク実行に関するレポートを生成します。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

戻り値

必要なレポートが含まれているCLOB

-- Display the report for a single statement.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:stmt_task) 
FROM   DUAL;
 
-- Display the summary for a SQL tuning set.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL', 'SUMMARY')
FROM   DUAL;
 
-- Display the findings for a specific statement.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL','FINDINGS', 5)
FROM   DUAL;

157.5.31 REPORT_TUNING_TASK_XMLファンクション

このファンクションは、チューニング・タスクのXMLレポートを表示します。

構文

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム」を参照してください。

DBMS_SQLTUNE.REPORT_TUNING_TASK_LIST_XML(
   task_name        IN   VARCHAR2   := NULL,
   level            IN   VARCHAR2   := LEVEL_TYPICAL,
   section          IN   VARCHAR2   := SECTION_ALL,
   object_id        IN   NUMBER     := NULL,
   result_limit     IN   NUMBER     := 160,
   owner_name       IN   VARCHAR2   := NULL,
   execution_name   IN   VARCHAR2   := NULL,
   autotune_period  IN   NUMBER     := NULL,
   report_tag       IN   VARCHAR2   := NULL)
RETURN XMLTYPE;

パラメータ

表157-36 REPORT_TUNING_TASK_XMLファンクションのパラメータ

パラメータ 説明

task_name

チューニング・タスクの名前。

level

レポートの詳細なレベル。

  • BASIC: 簡単なバージョンのレポート。アドバイザによって実行されるアクションに関する情報を表示します。

  • TYPICAL: 分析対象の各文に関する情報(実装されていない要求など)を表示します。

  • ALL: 高度に詳細なレポート・レベル。スキップされた文に関する注釈も表示します。

section

含めるレポートのセクション。

レポートを次のいずれかの単一セクションに制限できます(すべてのセクションに関するレポートの場合は、ALLを指定します)。

  • SUMMARY - サマリー情報

  • ALL - すべての文

object_id

レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、NULLを指定します。単一の実行を対象とするレポートでのみ有効です。

result_limit

レポート生成の対象となる、SQLチューニング・セットまたはスナップショット範囲内の文の数。デフォルトは160 (20文* 8カテゴリ)です。カテゴリは次のとおりです。

  • プロファイル

  • 索引

  • SQLの再構築

  • 代替計画

  • 統計

  • エラー

  • 情報

  • 検索結果なし

owner_name

関連するチューニング・タスクの所有者。デフォルトは現在のスキーマ所有者です。

execution_name

使用するタスク実行の名前。NULLの場合、このファンクションは、最新のタスク実行に関するレポートを生成します。

autotune_period

自動SQLチューニングの時間。この設定は、自動SQLチューニング・アドバイザ・タスクにのみ適用されます。次の値があります。

  • NULLまたは負の値(デフォルト) - すべてまたは完全。結果にはすべてのタスク実行が含まれます。

  • 0 - 現在または直近のタスク実行の結果。

  • 1 - 直近24時間の結果。

  • 7 - 直近7日間の結果。

このプロシージャは、その他の値を直近のタスク実行からこの引数の値を引いた時間として解釈します。

report_tag

ルートXMLタグの名前。デフォルトでは、このタグは、レポート・フレームワークにより生成されたレポート参照です。

戻り値

必要なレポートが含まれているCLOB

157.5.32 RESET_TUNING_TASKプロシージャ

このプロシージャは、現在実行されていないチューニング・タスクに対してコールされ、そのチューニング・タスクを再実行できるように準備します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.RESET_TUNING_TASK(
 task_name         IN VARCHAR2);

パラメータ

表157-37 RESET_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

リセットするチューニング・タスクの名前。

-- reset and re-execute a task
EXEC DBMS_SQLTUNE.RESET_TUNING_TASK(:sts_task);
 
-- re-execute the task
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:sts_task);

157.5.33 RESUME_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.RESUME_TUNING_TASK(
 task_name         IN VARCHAR2,
 basic_filter      IN VARCHAR2 := NULL);

パラメータ

表157-38 RESUME_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

再開するチューニング・タスクの名前。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。このフィルタは、CREATE_TUNING_TASKファンクションのコール時に、パラメータbasic_filterとともに適用されます。

使用上のノート

単一のSQLチューニング・タスク(SQLチューニング・セットではなく、1つのSQL文をチューニングするために作成されたタスク)の再開はサポートされていません。

-- Interrupt the task
EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:conc_task);
 
-- Once a task is interrupted, we can elect to reset it, resume it, or check
-- out its results and then decide.  For this example we will just resume.
 
EXEC DBMS_SQLTUNE.RESUME_TUNING_TASK(:conc_task);

157.5.34 SCHEDULE_TUNING_TASKファンクション

このファンクションは、単一のSQL文に対してチューニング・タスクを作成し、DBMS_SCHEDULERジョブをスケジュールしてこのチューニング・タスクを実行します。このファンクションの1つの形式では、チューニングされる文の情報が共有SQL領域で検出され、別の形式では、AWRで情報が検出されます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

共有SQL領域の形式:

DBMS_SQLTUNE.SCHEDULE_TUNING_TASK(
  sql_id          IN VARCHAR2,
  plan_hash_value IN NUMBER                   := NULL,
  start_date      IN TIMESTAMP WITH TIME ZONE := NULL,   
  scope           IN VARCHAR2                 := SCOPE_COMPREHENSIVE,   
  time_limit      IN NUMBER                   := TIME_LIMIT_DEFAULT,
  task_name       IN VARCHAR2                 := NULL,    
  description     IN VARCHAR2                 := NULL,
  con_name        IN VARCHAR2                 := NULL)
RETURN VARCHAR2;

AWR形式:

DBMS_SQLTUNE.SCHEDULE_TUNING_TASK(
  begin_snap      IN NUMBER,
  end_snap        IN NUMBER,
  sql_id          IN VARCHAR2,
  plan_hash_value IN NUMBER                   := NULL,    
  start_date      IN TIMESTAMP WITH TIME ZONE := NULL,   
  scope           IN VARCHAR2                 := SCOPE_COMPREHENSIVE,   
  time_limit      IN NUMBER                   := TIME_LIMIT_DEFAULT,
  task_name       IN VARCHAR2                 := NULL,    
  description     IN VARCHAR2                 := NULL,
  con_name        IN VARCHAR2                 := NULL,
  dbid            IN NUMBER                   := NULL)
RETURN VARCHAR2;

パラメータ

表157-39 SCHEDULE_TUNING_TASKファンクションのパラメータ

パラメータ 説明

begin_snap

開始スナップショット識別子。範囲は排他的です。つまり、このスナップショットIDのSQL文は含まれません。

end_snap

終了スナップショット識別子。範囲は包括的です。つまり、このスナップショットIDのSQL文は含まれます。

sql_id

チューニングされる文のSQL ID。

plan_hash_value

チューニングされる文の計画ハッシュ値。たとえば、チューニング・ジョブは、このSQL計画に対して取得されたバインドをフェッチします。

start_date

スケジュールが有効になる日付。NULLの場合、SQLチューニング・アドバイザはすぐにタスクを実行します。

scope

チューニング・ジョブのスコープ: 制限付きまたは包括的。

time_limit

SQLチューニング・セッションの最大継続時間(秒)。

task_name

SQLチューニング・タスク名(オプション)。

description

SQLチューニング・セッションの説明。説明は、最大256文字です。

con_name

SQLチューニング・アドバイザがSQL文の情報にアクセスする際のアクセス元のコンテナ。

dbid

インポート済またはPDBレベルのAWRデータに使用されるDBID。NULLの場合、現在のデータベースDBIDが使用されます。

セキュリティ・モデル

コール元には、ジョブに対するCREATE JOB権限が必要です。

戻り値

各ユーザーに一意であるSQLチューニング・タスク名。複数のユーザーがアドバイザ・タスクに同じ名前を割り当てることができます。

使用上のノート

  • タスクをスケジュールできるのは1回のみです。

  • スケジューラ・ジョブの名前は次のように作成されます。sqltune_job_taskid_orahash(systimestamp)

157.5.35 SCRIPT_TUNING_TASKファンクション

このファンクションは、SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連の推奨事項を実装できます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SCRIPT_TUNING_TASK(
  task_name         IN VARCHAR2,
  rec_type          IN VARCHAR2  := REC_TYPE_ALL,
  object_id         IN NUMBER    := NULL,
  result_limit      IN NUMBER    := NULL,
  owner_name        IN VARCHAR2  := NULL,
  execution_name    IN VARCHAR2  := NULL,
  database_link_to  IN VARCHAR2  := NULL)
 RETURN CLOB;

パラメータ

表157-40 SCRIPT_TUNING_TASKファンクションのパラメータ

パラメータ 説明

task_name

スクリプトを適用するチューニング・タスクの名前。

rec_type

対象とするリコメンデーションのタイプで、スクリプトをフィルタします。値'PROFILES''STATISTICS''INDEXES'をカンマで区切ったサブセットまたは'ALL'を指定できます。たとえば、プロファイルおよび統計情報のスクリプトの場合は、フィルタ'PROFILES,STATISTICS'を使用します。

object_id

1つのオブジェクトIDでフィルタします(オプション)。

result_limit

オプションで上位N番のSQLのみに対してコマンドを示します(順序はobject_idで決定され、object_idも指定されている場合は無視されます)。

owner_name

関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。

excution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するスクリプトが生成されます。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

戻り値

CLOBの形式でスクリプトを戻します。

使用上のノート

  • スクリプトが戻された後、実行前にスクリプトをチェックします。

  • スクリプトをファイルに入れるには、DBMS_ADVISOR.CREATE_FILEのコールでラップしてください。

SET LINESIZE 140
 
-- Get a script for all actions recommended by the task.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task) FROM DUAL;
 
-- Get a script of only the sql profiles we should create.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'PROFILES') FROM DUAL;
 
-- Get a script of only stale / missing stats
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'STATISTICS') FROM DUAL;
 
-- Get a script with recommendations about only one SQL statement when we have
-- tuned an entire STS.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:sts_task, 'ALL', 5) FROM DUAL;

157.5.36 SELECT_CURSOR_CACHEファンクション

このファンクションは、共有SQL領域からSQL文を収集します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_CURSOR_CACHE (
  basic_filter        IN   VARCHAR2 := NULL,
  object_filter       IN   VARCHAR2 := NULL,
  ranking_measure1    IN   VARCHAR2 := NULL,
  ranking_measure2    IN   VARCHAR2 := NULL,
  ranking_measure3    IN   VARCHAR2 := NULL,
  result_percentage   IN   NUMBER   := 1,
  result_limit        IN   NUMBER   := NULL,
  attribute_list      IN   VARCHAR2 := NULL,
  recursive_sql       IN   VARCHAR2 := HAS_RECURSIVE_SQL)
 RETURN sys.sqlset PIPELINED;

パラメータ

表157-41 SELECT_CURSOR_CACHEファンクションのパラメータ

パラメータ 説明

basic_filter

SQLSET_ROWの属性で定義された共有SQL領域からSQLをフィルタするためのSQL述語を指定します。

basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGEタイプの文のみを取得します。

object_filter

現在はサポートされていません。

ranking_measure(n)

選択したSQLにORDER BY句を定義します。

result_percentage

提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。

この値は、1つのランキング・メジャーが指定されている場合にのみ適用されます。

result_limit

ランキング・メジャーでランク付けしたフィルタ済のソースの先頭から数件取得されるSQL文を定義します。

attribute_list

結果として戻すSQL文の属性リストを指定します。

使用可能な値は次のとおりです。

  • TYPICALBASIC + SQL計画(行ソース統計を除く)を指定します。オブジェクト参照リストは除かれます(デフォルト)。

  • BASIC — 計画を除くすべての属性(実行統計、バインドなど)を指定します。実行コンテキストは必ず結果に含まれます。

  • ALL — すべての属性を指定します。

  • 属性名のカンマ区切りのリスト。

    この値は、SQL属性のサブセットのみを戻します。

    • EXECUTION_STATISTICS

    • BIND_LIST

    • OBJECT_LIST

    • SQL_PLAN

    • SQL_PLAN_STATISTICSSQL_PLAN + 行ソース統計に類似

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)を指定します。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上のノート

  • このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

  • ユーザーには、共有SQL領域ビューの権限が必要です。

-- Get sql ids and sql text for statements with 500 buffer gets.
SELECT sql_id, sql_text 
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('buffer_gets > 500')) 
ORDER BY sql_id;
 
-- Get all the information we have about a particular statement.
SELECT * 
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('sql_id = ''4rm4183czbs7j'''));
 
-- Notice that some statements can have multiple plans.  The output of the
-- SELECT_XXX table functions is unique by (sql_id, plan_hash_value).  This is
-- because a data source can store multiple plans per sql statement.
SELECT sql_id, plan_hash_value
FROM table(dbms_sqltune.select_cursor_cache('sql_id = ''ay1m3ssvtrh24'''))
ORDER BY sql_id, plan_hash_value;
 
-- PL/SQL examples: load_sqlset is called after opening a cursor, along the
-- lines given below
 
-- Select all statements in the shared SQL area.
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT value(P) 
    FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE) P;
 
  -- Process each statement (or pass cursor to load_sqlset).
 
  CLOSE cur;
END;/
 
 
-- Look for statements not parsed by SYS.
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur for
    SELECT VALUE(P) 
    FROM table(
     DBMS_SQLTUNE.SELECT_CURSOR_CACHE('parsing_schema_name <> ''SYS''')) P;
 
  -- Process each statement (or pass cursor to load_sqlset).
 
  CLOSE cur;
end;/
 
 
-- All statements from a particular module/action.
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(
      DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
         'module = ''MY_APPLICATION'' and action = ''MY_ACTION''')) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
END;/
 
 
-- all statements that ran for at least five seconds
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('elapsed_time > 5000000')) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
end;/
 
 
-- select all statements that pass a simple buffer_gets threshold and 
-- are coming from an APPS user
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(
      DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
        'buffer_gets > 100 and parsing_schema_name = ''APPS'''))P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
end;/
 
 
-- select all statements exceeding 5 seconds in elapsed time, but also
-- select the plans (by default we only select execution stats and binds
-- for performance reasons - in this case the SQL_PLAN attribute of sqlset_row
-- is NULL) 
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(dbms_sqltune.select_cursor_cache(
      'elapsed_time > 5000000', NULL, NULL, NULL, NULL, 1, NULL,
      'EXECUTION_STATISTICS, SQL_BINDS, SQL_PLAN')) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
END;/
 
 
-- Select the top 100 statements in the shared SQL area ordering by elapsed_time.
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(NULL,
                                                NULL,
                                                'ELAPSED_TIME', NULL, NULL,
                                                1,
                                                100)) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
end;/
 
 
-- Select the set of statements which cumulatively account for 90% of the 
-- buffer gets in the shared SQL area.  This means that the buffer gets of all
-- of these statements added up is approximately 90% of the sum of all 
-- statements currently in the cache.
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE(P) 
    FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(NULL,
                                                NULL,
                                                'BUFFER_GETS', NULL, NULL,
                                                .9)) P;
 
  -- Process each statement (or pass cursor to load_sqlset).
 
  CLOSE cur;
END;
/

157.5.37 SELECT_SQL_TRACEファンクション

この表ファンクションは、1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文をsqlset_rowの形式で戻します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_SQL_TRACE (
  directory              IN VARCHAR2,
  file_name              IN VARCHAR2 := NULL,
  mapping_table_name     IN VARCHAR2 := NULL,
  mapping_table_owner    IN VARCHAR2 := NULL,,
  select_mode            IN POSITIVE := SINGLE_EXECUTION,
  options                IN BINARY_INTEGER := LIMITED_COMMAND_TYPE,
  pattern_start          IN VARCHAR2 := NULL,
  pattern_end            IN VARCHAR2 := NULL,
  result_limit           IN POSITIVE := NULL)
 RETURN sys.sqlset PIPELINED;

パラメータ

表157-42 SELECT_SQL_TRACEファンクションのパラメータ

パラメータ 説明

directory

トレース・ファイルを含むディレクトリ・オブジェクトを定義します。このフィールドは必須です。

file_name

トレース・ファイルの名前の全体または一部を指定します。

NULLの場合は、ファンクションは指定した場所またはパスにある現行のファイルまたは最新のファイルを使用します。トレース・ファイル名の一致検索については、ワイルドカード'%'がサポートされています。

mapping_table_name

マッピング表名を指定します。

マッピング表名は大/小文字が区別されないことに注意してください。マッピング表名がNULLの場合は、ファンクションは現行のデータベースにあるマッピングを使用します。

mapping_table_owner

マッピング表の所有者を指定します。

NULLの場合、ファンクションは現行ユーザーを使用します。

select_mode

トレースからSQLを選択するためのモードを指定します。

使用可能な値は次のとおりです。

  • SINGLE_EXECUTION — 1つのSQL実行を戻します。これはデフォルトです。

  • ALL_EXECUTIONS — すべての実行を戻します。

options

戻されるSQL文のタイプを指定します。

  • LIMITED_COMMAND_TYPE — コマンド・タイプがCREATEINSERTSELECTUPDATEDELETEMERGEのSQL文を戻します。この値がデフォルトです。

  • ALL_COMMAND_TYPE — すべてのコマンド・タイプのSQL文を戻します。

pattern_start

対象とするトレース・ファイル・セクションの区切りパターンを指定します。現在使用できません。

pattern_end

処理するトレース・ファイル・セクションの終了区切りパターンを指定します。現在使用できません。

result_limit

除外されたソースの上位SQLを指定します。NULLの場合は、デフォルトのMAXSB4が設定されます。

戻り値

このファンクションは、SQLSET_ROWオブジェクトを戻します。

使用上のノート

システム・ディレクトリのディレクトリ・オブジェクトを作成する機能により、セキュリティ上の問題が発生する可能性があります。たとえば、CDBですべてのコンテナがトレース・ファイルを同じディレクトリに書き込みます。このディレクトリに対するSELECT権限を持つローカル・ユーザーは、任意のコンテナに属するトレース・ファイルの内容を読み取ることができます。

このタイプの不正アクセスを防ぐには、ファイルをデフォルトのSQLトレース・ディレクトリから別のディレクトリにコピーしてから、ディレクトリ・オブジェクトを作成します。CREATE PLUGGABLE DATABASE文のPATH_PREFIX句を使用して、PDBと関連付けられているすべてのディレクトリ・オブジェクト・パスが、指定したディレクトリまたはそのサブディレクトリに制限されるようにします。

次のコードは、いくつかのSQL文のSQLトレースを使用可能にして、SQLチューニング・セットに結果をロードする方法を示しています。

-- turn on the SQL trace in the capture database
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 4'

-- run sql statements
SELECT 1 FROM DUAL;
SELECT COUNT(*) FROM dba_tables WHERE table_name = :mytab;
 
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
 
-- create mapping table from the capture database
CREATE TABLE mapping AS
SELECT object_id id, owner, substr(object_name, 1, 30) name
   FROM dba_objects
   WHERE object_type NOT IN ('CONSUMER GROUP', 'EVALUATION CONTEXT',
                             'FUNCTION', 'INDEXTYPE', 'JAVA CLASS',
                             'JAVA DATA', 'JAVA RESOURCE', 'LIBRARY',
                             'LOB', 'OPERATOR', 'PACKAGE',
                             'PACKAGE BODY', 'PROCEDURE', 'QUEUE',
                             'RESOURCE PLAN', 'TRIGGER', 'TYPE',
                             'TYPE BODY')
UNION ALL
SELECT user_id id, username owner, NULL name
   FROM dba_users;
 
-- create the directory object where the SQL traces are stored
CREATE DIRECTORY SQL_TRACE_DIR as '/home/foo/trace';

-- create the STS
EXEC DBMS_SQLTUNE.CREATE_SQLSET('my_sts', 'test purpose');
 
-- load the SQL statements into STS from SQL TRACE
DECLARE
   cur sys_refcursor;
BEGIN
   OPEN cur FOR
   SELECT value(p)
     FROM TABLE(
        DBMS_SQLTUNE.SELECT_SQL_TRACE(
           directory=>'SQL_TRACE_DIR',
           file_name=>'%trc',
           mapping_table_name=>'mapping')) p;
   DBMS_SQLTUNE.LOAD_SQLSET('my_sts', cur);
   CLOSE cur;
END;
/ 

参照:

PATH_PREFIX句についてさらに学習するには、Oracle Database SQL言語リファレンスを参照してください。

157.5.38 SELECT_SQLPA_TASKファンクション

このファンクションは、SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。

参照:

構文

DBMS_SQLTUNE.SELECT_SQLPA_TASK(
    task_name         IN VARCHAR2,
    task_owner        IN VARCHAR2 := NULL,
    execution_name    IN VARCHAR2 := NULL,
    level_filter      IN VARCHAR2 := 'REGRESSED',
    basic_filter      IN VARCHAR2 := NULL,
    object_filter     IN VARCHAR2 := NULL,
    attribute_list    IN VARCHAR2 := 'TYPICAL')
RETURN sys.sqlset PIPELINED;

パラメータ

表157-43 SELECT_SQLPA_TASKファンクションのパラメータ

パラメータ 説明

task_name

SQLパフォーマンス・アナライザ・タスクの名前を指定します。

task_owner

SQLパフォーマンス・アナライザ・タスクの所有者を指定します。NULLの場合、現行のユーザーとみなされます。

execution_name

指定したフィルタの適用元になるSQLパフォーマンス・アナライザ・タスクの実行の名前(タイプCOMPARE PERFORMANCE)を指定します。NULLの場合、最新のCOMPARE PERFORMANCEの実行とみなされます。

level_filter

SQL文のどのサブセットを含めるかを指定します。DBMS_SQLPA.REPORT_ANALYSIS_TASK.LEVELと同じ形式で、一部の文字列が削除されています。

  • IMPROVED: 改善されたSQLのみが含まれます。

  • REGRESSED: 低下したSQLのみが含まれます(デフォルト)。

  • CHANGED: パフォーマンスが変更されたSQLのみが含まれます。

  • UNCHANGED: パフォーマンスが変更されていないSQLのみが含まれます。

  • CHANGED_PLANS: 計画が変更されたSQLのみが含まれます。

  • UNCHANGED_PLANS: 計画が変更されていないSQLのみが含まれます。

  • ERRORS: エラーが発生したSQLのみが含まれます。

  • MISSING_SQL: (STS全体で)欠落しているSQL文のみが含まれます。

  • NEW_SQL: (STS全体で)新規のSQL文のみが含まれます。

basic_filter

レベル・フィルタに加えてSQLをフィルタするためのSQL述語を指定します。

object_filter

現在はサポートされていません。

attribute_list

結果として戻すSQL文の属性を定義します。

使用可能な値は次のとおりです。

  • TYPICALBASIC + SQL計画(行ソース統計を除く)を戻します。オブジェクト参照リストは除かれます。これはデフォルトです。

  • BASIC — 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

  • ALL — すべての属性を戻します。

  • 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICSSQL_BINDSSQL_PLAN_STATISTICS (SQL_PLAN + 行ソース統計に類似)です。

戻り値

このファンクションは、SQLチューニング・セット・オブジェクトを戻します。

使用上のノート

たとえば、このファンクションを使用して、SQLパフォーマンス・アナライザ(SPA)の試用中に低下したSQL文のサブセットを含むSQLチューニング・セットを作成できます。また、他の任意のフィルタを指定することもできます。

157.5.39 SELECT_SQLSETファンクション

SQLチューニング・セットのコンテンツを読み取るテーブル・ファンクションです。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SELECT_SQLSET (
  sqlset_name         IN   VARCHAR2,
  basic_filter        IN   VARCHAR2 := NULL,
  object_filter       IN   VARCHAR2 := NULL,
  ranking_measure1    IN   VARCHAR2 := NULL,
  ranking_measure2    IN   VARCHAR2 := NULL,
  ranking_measure3    IN   VARCHAR2 := NULL,
  result_percentage   IN   NUMBER   := 1,
  result_limit        IN   NUMBER   := NULL)
  attribute_list      IN   VARCHAR2 := NULL,
  plan_filter         IN   VARCHAR2 := NULL,
  sqlset_owner        IN   VARCHAR2 := NULL,
  recursive_sql       IN   VARCHAR2 := HAS_RECURSIVE_SQL)
 RETURN sys.sqlset PIPELINED;

パラメータ

表157-44 SELECT_SQLSETファンクションのパラメータ

パラメータ 説明

sqlset_name

問い合せるSQLチューニング・セットの名前を指定します。

basic_filter

SQLSET_ROWの属性に対して定義されたSQLチューニング・セットからSQLをフィルタするためのSQL述語を指定します。

object_filter

現在はサポートされていません。

ranking_measure(n)

選択したSQLにORDER BY句を指定します。

result_percentage

提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。

このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されます。

result_limit

ランキング・メジャーでランク付けしたフィルタ済のソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性を定義します。

有効な値は、次のとおりです。

  • BASIC — 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは結果に含まれます。

  • TYPICALBASIC + SQL計画(行ソース統計を除く)を戻します。オブジェクト参照リストは除かれます。これはデフォルトです。

  • ALL — すべての属性を戻します。

  • 属性名のカンマ区切りのリスト。この値により、ファンクションはSQL属性のサブセットのみを戻すことができます。

    • EXECUTION_STATISTICS

    • SQL_BINDS

    • SQL_PLAN_STATISTICS (SQL_PLAN + 行ソース統計に類似)

plan_filter

計画フィルタを指定します。

このパラメータにより、文に複数の計画がある場合に1つの計画を選択できます。使用可能な値は次のとおりです。

  • LAST_GENERATED — タイムスタンプが最も新しい計画を戻します。

  • FIRST_GENERATED — タイムスタンプが最も古い計画を戻します。

  • LAST_LOADEDFIRST_LOAD_TIME統計情報が最も新しい計画を戻します。

  • FIRST_LOADEDFIRST_LOAD_TIME統計情報が最も古い計画を戻します。

  • MAX_ELAPSED TIME — 経過時間が最も長い計画を戻します。

  • MAX_BUFFER_GETS — バッファ取得回数が最も多い計画を戻します。

  • MAX_DISK_READS — ディスク読取り回数が最も多い計画を戻します。

  • MAX_DIRECT_WRITES — 直接書込み回数が最も多い計画を戻します。

  • MAX_OPTIMIZER_COST — オプティマイザ・コスト値が最も大きい計画を戻します。

sqlset_owner

SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合はNULLを指定します。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)を指定します。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上のノート

このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

-- select from a sql tuning set
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE (P) 
    FROM table(dbms_sqltune.select_sqlset('my_workload')) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
END;
/

157.5.40 SELECT_WORKLOAD_REPOSITORYファンクション

このファンクションは、ワークロード・リポジトリからSQL文を収集します。

オーバーロードされたフォームにより、次のソースからSQL文を収集できます。

  • begin_snapend_snapの間のすべてのスナップショット

  • ワークロード・リポジトリのベースライン

構文

DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY (
  begin_snap        IN NUMBER,
  end_snap          IN NUMBER,
  basic_filter      IN VARCHAR2 := NULL,
  object_filter     IN VARCHAR2 := NULL,
  ranking_measure1  IN VARCHAR2 := NULL,
  ranking_measure2  IN VARCHAR2 := NULL,
  ranking_measure3  IN VARCHAR2 := NULL,
  result_percentage IN NUMBER   := 1,
  result_limit      IN NUMBER   := NULL,
  attribute_list    IN VARCHAR2 := NULL,
  recursive_sql     IN VARCHAR2 := HAS_RECURSIVE_SQL,
  dbid              IN NUMBER   := NULL)
 RETURN sys.sqlset PIPELINED;

DBMS_SQLTUNE.SELECT_WORKLOAD REPOSITORY (
  baseline_name     IN VARCHAR2,
  basic_filter      IN VARCHAR2 := NULL,
  object_filter     IN VARCHAR2 := NULL,
  ranking_measure1  IN VARCHAR2 := NULL,
  ranking_measure2  IN VARCHAR2 := NULL,
  ranking_measure3  IN VARCHAR2 := NULL,
  result_percentage IN NUMBER   := 1,
  result_limit      IN NUMBER   := NULL,
  attribute_list    IN VARCHAR2 := NULL,
  recursive_sql     IN VARCHAR2 := HAS_RECURSIVE_SQL,
  dbid              IN NUMBER   := NULL)
 RETURN sys.sqlset PIPELINED;

パラメータ

表157-45 SELECT_WORKLOAD_REPOSITORYファンクションのパラメータ

パラメータ 説明

begin_snap

開始AWRスナップショット(この値を含めない)を定義します。

end_snap

終了AWRスナップショット(この値を含む)を定義します。

baseline_name

AWRベースライン時間の名前を指定します。

basic_filter

ワークロード・リポジトリからSQLをフィルタするためのSQL述語を指定します。フィルタはSQLSET_ROWの属性に対して定義されます。

basic_filterがコール元によって設定されていない場合、このサブプログラムはCREATE TABLEINSERTSELECTUPDATEDELETEおよびMERGEタイプの文のみを取得します。

object_filter

現在はサポートされていません。

ranking_measure(n)

選択したSQLにORDER BY句を定義します。

result_percentage

提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。このパーセンテージは、1つのランキング・メジャーが指定されている場合にのみ適用されます。

result_limit

提供されたランキング・メジャーに応じてソースの先頭から数件取得されるSQL文を指定します。

attribute_list

結果として戻すSQL文の属性を指定します。有効な値は、次のとおりです。

  • TYPICALBASIC + SQL計画(行ソース統計を除く)を戻します。オブジェクト参照リストは除かれます。これはデフォルトです。

  • BASIC — 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

  • ALL — すべての属性を戻します

  • 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICSSQL_BINDSSQL_PLAN_STATISTICS(SQL_PLAN + 行ソース統計に類似)です。

recursive_sql

SQLチューニング・セットに再帰的SQLを含めるフィルタ(HAS_RECURSIVE_SQL)、または再帰的SQLを除外するフィルタ(NO_RECURSIVE_SQL)を指定します。

dbid

インポート済またはPDBレベルのAWRデータのDBIDを指定します。NULLの場合、ファンクションは現在のデータベースDBIDを使用します。

戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上のノート

このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。

-- select statements from snapshots 1-2
DECLARE
  cur sys_refcursor;
BEGIN
  OPEN cur FOR
    SELECT VALUE (P) 
    FROM table(dbms_sqltune.select_workload_repository(1,2)) P;
 
  -- Process each statement (or pass cursor to load_sqlset)
 
  CLOSE cur;
END;
/

157.5.41 SET_TUNING_TASK_PARAMETERプロシージャ

このプロシージャは、VARCHAR2タイプまたはNUMBERタイプのSQLチューニング・パラメータの値を更新します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
   task_name        IN  VARCHAR2,
   parameter        IN  VARCHAR2,
   value            IN  VARCHAR2,
   database_link_to IN  VARCHAR2);

DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER (
   task_name        IN  VARCHAR2,
   parameter        IN  VARCHAR2,
   value            IN  NUMBER,
   database_link_to IN  VARCHAR2);
);

パラメータ

表157-46 SET_TUNING_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

task_name

実行するタスクの識別子。

parameter

設定するパラメータの名前。パラメータをVARCHAR2形式で使用してこのプロシージャで設定できるチューニング・パラメータは、次のとおりです。

  • APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

  • BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

  • DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

  • DEFAULT_EXECUTION_TYPE: EXECUTE_TUNING_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

  • EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

  • LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

  • MODE: チューニング・スコープ(制限付き/包括的)。

  • OBJECT_FILTER: SQLチューニング・セットのオブジェクト・フィルタ。

  • PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

  • RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

  • RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

  • RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

  • RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

  • SQL_LIMIT: チューニングするSQL文の最大数。

  • SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

  • TEST_EXECUTE: FULL/AUTO/OFF

    * FULL: SQLのローカル時間制限(SQLの時間制限が設定されていない場合はグローバル・タスクの時間制限)まで、必要な時間テスト実行します。

    * AUTO: チューニング時間に比例して自動的に選択された時間テスト実行します。

    * OFF: テスト実行しません。

  • TIME_LIMIT: グローバル・タイムアウト(秒)。

  • USERNAME: 文を解析するユーザーの名前。

value

指定したパラメータの新しい値。

database_link_to

スタンバイ・データベースに存在するデータベース・リンクの名前。

このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。

Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、DBMS_SQLTUNEを使用します。スタンバイ・データベースでローカルにREPORT_TUNING_TASKを実行すると、このファンクションはデータベース・リンクを使用してプライマリ・データベースからデータを取得し、それをスタンバイ・データベース上にローカルに作成します。

database_link_toパラメータはプライベート・データベース・リンクを指定する必要があります。このリンクはSYSによって所有され、デフォルト権限を持つユーザーSYS$UMFによってアクセスされる必要があります。次のサンプル文では、lnk_to_priという名前のリンクが作成されます。

CREATE DATABASE LINK lnk_to_pri CONNECT TO SYS$UMF IDENTIFIED BY password USING 'inst1';

使用上のノート

自動チューニング・タスクのパラメータを設定する場合、DBMS_AUTO_SQLTUNEパッケージのSET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用してください。

157.5.42 SQLTEXT_TO_SIGNATUREファンクション

このファンクションは、SQLテキストのシグネチャを戻します。このシグネチャを使用して、dba_sql_profilesのSQLテキストを識別できます。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE (
  sql_text    IN CLOB,  
  force_match IN BOOLEAN  := FALSE)
RETURN NUMBER;

パラメータ

表157-47 SQLTEXT_TO_SIGNATUREファンクションのパラメータ

パラメータ 説明

sql_text

シグネチャが必要なSQLテキスト。必須。

force_match

TRUEに設定すると、リテラル値をバインド変数に変換するSQLマッチングがサポートされているシグネチャを戻します。FALSEに設定すると、リテラルが変換されないテキストに基づいてシグネチャを戻します。

戻り値

このファンクションは、指定したSQLテキストのシグネチャを戻します。

157.5.43 UNPACK_STGTAB_SQLPROFプロシージャ

このプロシージャは、ステージング表に保存されているプロファイル・データを使用して、システム上にプロファイルを作成します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF (
   profile_name          IN VARCHAR2 := '%',
   profile_category      IN VARCHAR2 := 'DEFAULT',
   replace               IN BOOLEAN,
   staging_table_name    IN VARCHAR2,
   staging_schema_owner  IN VARCHAR2 := NULL);

パラメータ

表157-48 UNPACK_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

profile_name

アンパックするプロファイルの名前(%ワイルドカード使用可、大/小文字区別)。

profile_category

アンパックするプロファイルのカテゴリ(%ワイルドカード使用可、大/小文字区別)。

replace

プロファイルがすでに存在する場合、そのプロファイルを置換するオプション。ステージング表にあるプロファイルが別のSQL文でアクティブなプロファイルと同じ名前の場合は、プロファイルを置換できないことに注意してください。FALSEの場合、すでに存在するプロファイルを作成しようとすると、このファンクションによりエラーが生成されます

staging_table_name

再マップ操作を行う表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須。

staging_schema_owner

表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合はNULL

使用上のノート

このプロシージャを使用するには、ステージング表に対するCREATE ANY SQL PROFILE権限およびSELECT権限が必要です。

-- Unpack all profiles stored in a staging table.
BEGIN 
  DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(
      replace            => FALSE
  ,   staging_table_name => 'PROFILE_STGTAB');
END;

-- If there is a failure during the unpack operation, you can find the profile
-- that caused the error and perform a remap_stgtab_sqlprof operation targeting it.
-- You can resume the unpack operation by setting replace to TRUE so that
-- the profiles that were already created are replaced.
BEGIN
  DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(
      replace            => TRUE
  ,   staging_table_name => 'PROFILE_STGTAB');
END;

157.5.44 UNPACK_STGTAB_SQLSETプロシージャ

このプロシージャは、1つ以上のSQLチューニング・セットを、ステージング表内のそれぞれの場所からSQLチューニング・セット・スキーマにコピーして、適切なSQLチューニング・セットを作成します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET (
   sqlset_name          IN VARCHAR2 := '%',
   sqlset_owner         IN VARCHAR2 := NULL,
   replace              IN BOOLEAN,
   staging_table_name   IN VARCHAR2,
   staging_schema_owner IN VARCHAR2 := NULL);

パラメータ

パラメータはDBMS_SQLTUNE.UNPACK_STGTAB_SQLSETおよびDBMS_SQLSET.UNPACK_STGTABプロシージャの場合と同じです。

表157-49 UNPACK_STGTAB_SQLSETおよびUNPACK_STGTABプロシージャのパラメータ

パラメータ 説明

sqlset_name

アンパックするチューニング・セットの名前(NULL以外)を指定します。

ワイルドカード文字(%)がサポートされていて、1回のコールで複数のチューニング・セットをアンパックできます。たとえば、%と指定すると、すべてのチューニング・セットがステージング表からアンパックされます。

sqlset_owner

チューニング・セットの所有者の名前を指定します。現行のスキーマ所有者の場合はNULLを指定します。ワイルドカード文字(%)はサポートされています。

replace

既存のSQLチューニング・セットを置き換えるかどうかを指定します。FALSEの場合、すでに存在するチューニング・セットを作成しようとすると、このプロシージャによりエラーが生成されます。

staging_table_name

DBMS_SQLTUNE.PACK_STGTAB_SQLSETまたはDBMS_SQLSET.PACK_STGTABプロシージャへのコール後に移動されたステージング表の名前(大/小文字区別)を指定します。

staging_schema_owner

ステージング表の所有者の名前(大/小文字区別)を指定します。現行のスキーマ所有者の場合はNULLを指定します。

 -- unpack all STS in the staging table
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET(sqlset_name         => '%', -
                                       sqlset_owner        => '%', -
                                       replace             => FALSE, -
                                       staging_table_name  => 'STGTAB_SQLSET');
 
-- errors can arise during STS unpack when a STS in the staging table has the
-- same name/owner as STS on the system.  In this case, users should call
-- remap_stgtab_sqlset to patch the staging table and with which to call unpack
-- Replace set to TRUE.
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET(sqlset_name         => '%', -
                                       sqlset_owner        => '%', -
                                       replace             => TRUE, -
                                       staging_table_name  => 'STGTAB_SQLSET');

157.5.45 UPDATE_SQLSETプロシージャ

このオーバーロードされたプロシージャは、SQLチューニング・セットのSQL文の選択されているフィールドを更新します。

参照:

このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。

構文

DBMS_SQLTUNE.UPDATE_SQLSET (
   sqlset_name      IN  VARCHAR2,
   sql_id           IN  VARCHAR2,
   attribute_name   IN  VARCHAR2,
   attribute_value  IN  VARCHAR2 := NULL);

DBMS_SQLTUNE.UPDATE_SQLSET (
   sqlset_name      IN  VARCHAR2,
   sql_id           IN  VARCHAR2,
   attribute_name   IN  VARCHAR2,
   attribute_value IN NUMBER := NULL);

パラメータ

表157-50 UPDATE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

sql_id

更新するSQL文の識別子を指定します。

plan_hash value

SQL文の実行計画のハッシュ値を指定します。

このパラメータは、文のすべての計画ではなく、文の特定の計画の属性を更新する場合に使用します。

attribute_name

変更する属性の名前を指定します。

MODULEACTIONPARSING_SCHEMA_NAMEおよびOTHERのテキスト・フィールドを更新できます。更新できる唯一の数値フィールドはPRIORITYです。

文に複数の計画がある場合、プロシージャはすべての計画の属性値を変更します。

attribute_value

属性の新しい値を指定します。