ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

125 DBMS_SQLTUNE

DBMS_SQLTUNEパッケージは、SQL文をチューニングするためのインタフェースを提供します。

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


DBMS_SQLTUNEの使用方法


概要

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

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

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

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プロファイルは、サンプリングおよび部分的に実行する方法を使用して追加情報を収集し、これらの推定を調整することで、この問題に対処します。

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

SQLチューニング・セット

SQLチューニング・アドバイザには、1つまたは一連のSQL文を入力できます。複数の文を1つのアドバイザ・タスクでチューニングする場合は、SQLチューニング・セット(STS)の形式で入力します。SQLチューニング・セットは、SQL文およびその実行コンテキストをシステム提供のスキーマ内に格納するデータベース・オブジェクトです。SQLチューニング・セットでは、SQLのワークロードを処理するためのインフラストラクチャが用意されているため、大量のSQL文を簡単にチューニングできます。

SQLチューニング・セットでSQL文とともに格納されるものは、次のとおりです。

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

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

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

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

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

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

  3. ステージング表を移動先システムに移動した後、UNPACK_STGTAB_SQLPROFプロシージャまたはUNPACK_STGTAB_SQLSETプロシージャをコールして、新しいシステム上でオブジェクトを再作成します。


関連項目:

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

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

"SYS_AUTO_SQL_TUNING_TASK"というシステム・タスクが予約されています。このタスクでは、自動タスク・フレームワーク内のメンテナンス・ウィンドウでSQLチューニングが実行されます。AWRから一連の高負荷SQLが自動的に選択され、それらのSQLに対してSQLチューニング・アドバイザが実行されます。他のSQLチューニング・タスクと同じ包括的な分析が実行されます。また、新旧のクエリー・プランを実行して検出されたSQLプロファイルがテストされ、メリットの大きいSQLプロファイルが実装されます。SQLプロファイルは、新しいプランのメリットをシステムで自動的に得ることができるように、チューニング後すぐに実装されます。各メンテナンス・ウィンドウでは、タスクの結果を新しい実行として格納できるため、タスクの期間中はすべての結果を使用できます。これらの結果は、タスク名で相互に関連付けられ、実行名で区別されています。 DBA_ADVISOR_EXECUTIONSビューを使用すると、タスクの実行に関する情報を表示できます。自動タスクは、カスタム・スクリプトの一部としてシステムで作成されます。 この自動タスクには、レポートの表示専用のインタフェース(REPORT_AUTO_TUNING_TASKファンクション)があり、標準的なチューニング・タスクと他のインタフェースを共有します。 このタスクには、複数の実行にわたるレポートの表示専用のインタフェースがあります。自動タスクのパラメータを設定するには、SET_TUNING_TASK_PARAMETERプロシージャを使用します。 タスクをすぐに実行するには、EXECUTE_TUNING_TASKファンクションおよびプロシージャのファンクション・バージョンを使用します。 タスクを無効にするには、DBMS_AUTO_TASK_ADMINパッケージを使用します。

リアルタイムSQL監視

リアルタイムSQL監視を使用すると、DBAまたはパフォーマンス・アナリストは、長時間にわたって実行されるSQL文の実行を、実行中に監視できます。カーソルの統計(CPU時間、IO時間など)と実行計画の統計(出力行、メモリー、使用される一時領域の数など)の両方が、文の実行中にほぼリアルタイムで更新されます。 これらの統計は、2つの新しい固定ビュー(V$SQL_MONITORおよびV$SQL_PLAN_MONITOR)に公開されます。 また、DBMS_SQLTUNEパッケージには、監視情報をレポートするためのサブプログラムREPORT_SQL_MONITOR()が用意されています。


セキュリティ・モデル

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


データ構造

DBMS_SQLTUNEパッケージは、次のOBJECTタイプを定義します。

オブジェクト・タイプ


SQLSET_ROWオブジェクト・タイプ

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

DBMS_SQLTUNEパッケージのいくつかのサブプログラムは、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)

属性

表125-1 SQLSET_ROWの属性

属性 説明

sql_id

一意なSQL ID。

forcing_matching_signature

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

sql_text

文の全文。

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

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

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

EXPLAIN PLAN。

bind_list

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



サブプログラム・グループ

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


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

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

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

サブプログラム 説明

CANCEL_TUNING_TASKプロシージャ


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

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チューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。

SCRIPT_TUNING_TASKファンクション


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

SET_TUNING_TASK_PARAMETERプロシージャ


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


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


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

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

表125-3 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サブプログラムの要約」を参照してください。


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

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

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

サブプログラム 説明

ADD_SQLSET_REFERENCEファンクション


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

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ


指定した期間、カーソル・キャッシュからワークロードを増分取得して、SQLチューニング・セットに入れます。

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


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

CREATE_STGTAB_SQLSETプロシージャ


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

DELETE_SQLSETプロシージャ


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

DROP_SQLSETプロシージャ


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

LOAD_SQLSETプロシージャ


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

PACK_STGTAB_SQLSETプロシージャ


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

REMOVE_SQLSET_REFERENCEプロシージャ


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

SELECT_CURSOR_CACHEファンクション


カーソル・キャッシュからSQL文を収集します。

SELECT_SQL_TRACEファンクション


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

SELECT_SQLSETファンクション


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

SELECT_WORKLOAD_REPOSITORYファンクション


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

UNPACK_STGTAB_SQLSETプロシージャ


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

UPDATE_SQLSETプロシージャ


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


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


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

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

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

サブプログラム 説明

REPORT_SQL_MONITORファンクション


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



DBMS_SQLTUNEサブプログラムの要約

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

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

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


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

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


ADD_SQLSET_REFERENCEファンクション


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

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


ALTER_SQL_PROFILEプロシージャ


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

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


CANCEL_TUNING_TASKプロシージャ


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

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


CAPTURE_CURSOR_CACHE_SQLSETプロシージャ


指定した期間、カーソル・キャッシュからワークロードを増分取得して、SQLチューニング・セットに入れます。

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


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


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

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


CREATE_STGTAB_SQLPROFプロシージャ


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

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


CREATE_STGTAB_SQLSETプロシージャ


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

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


CREATE_TUNING_TASKファンクション


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

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


DELETE_SQLSETプロシージャ


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

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


DROP_SQL_PROFILEプロシージャ


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

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


DROP_SQLSETプロシージャ


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

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


DROP_TUNING_TASKプロシージャ


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

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


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


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

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


IMPLEMENT_TUNING_TASKファンクション


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

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


INTERRUPT_TUNING_TASKプロシージャ


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

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


LOAD_SQLSETプロシージャ


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

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


PACK_STGTAB_SQLPROFプロシージャ


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

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


PACK_STGTAB_SQLSETプロシージャ


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

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


REMAP_STGTAB_SQLPROFプロシージャ


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

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


REMAP_STGTAB_SQLSETプロシージャ


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

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


REMOVE_SQLSET_REFERENCEプロシージャ


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

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


REPORT_AUTO_TUNING_TASKファンクション


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

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


REPORT_SQL_MONITORファンクション


リアルタイムSQL監視に関するレポートを表示します。

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


REPORT_TUNING_TASKファンクション


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

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


RESET_TUNING_TASKプロシージャ


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

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


RESUME_TUNING_TASKプロシージャ


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

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


SCRIPT_TUNING_TASKファンクション


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

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


SELECT_CURSOR_CACHEファンクション


カーソル・キャッシュからSQL文を収集します。

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


SELECT_SQL_TRACEファンクション


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

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


SELECT_SQLSETファンクション


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

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


SELECT_WORKLOAD_REPOSITORYファンクション


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

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


SET_TUNING_TASK_PARAMETERプロシージャ


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

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


SQLTEXT_TO_SIGNATUREファンクション


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

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


UNPACK_STGTAB_SQLPROFプロシージャ


ステージング表に保存されているプロファイル・データを使用して、このシステム上にプロファイルを作成します。

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


UNPACK_STGTAB_SQLSETプロシージャ


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

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


UPDATE_SQLSETプロシージャ


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

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




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

このプロシージャおよびファンクションは、SQLチューニング・アドバイザによって推奨されるSQLプロファイルを作成します。SQLテキストは、マッチング用に正規化されていますが、データ・ディクショナリに格納される場合は読みやすさを考慮して正規化されていません。SQLテキストは、SQLチューニング・タスクへの参照を介して提供されます。参照されたSQL文が存在しない場合、エラーが報告されます。


関連項目:

このグループの他のサブプログラムについては、「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);
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)
 RETURN VARCHAR2;

パラメータ

表125-7 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オプションで使用される一致アルゴリズムと似ています。


戻り値

SQLプロファイルの名前。

使用上の注意

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);

ADD_SQLSET_REFERENCEファンクション

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


関連項目:

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

構文

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

パラメータ

表125-8 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チューニング・セットに関するすべての参照を確認できます。


ALTER_SQL_PROFILEプロシージャ

このプロシージャは、既存のSQLプロファイル・オブジェクトの特定の属性を変更します。次の属性を変更できます(これらの属性名を使用)。


関連項目:

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

構文

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

パラメータ

表125-9 ALTER_SQL_PROFILEプロシージャのパラメータ

パラメータ 説明

name

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

attribute_name

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

value

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


使用上の注意

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

-- Disable a profile, so it will be 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 will be 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');

CANCEL_TUNING_TASKプロシージャ

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


関連項目:

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

構文

DBMS_SQLTUNE.CANCEL_TUNING_TASK(
 task_name         IN VARCHAR2);

パラメータ

表125-10 CANCEL_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

取り消すタスクの名前。


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

EXEC DBMS_SQLTUNE.CANCEL_TUNING_TASK(:my_task);

CAPTURE_CURSOR_CACHE_SQLSETプロシージャ

このプロシージャは、指定した期間、カーソル・キャッシュからワークロードを増分取得して、SQLチューニング・セットに入れます。このプロシージャは、カーソル・キャッシュからワークロードを取得してSQLチューニング・セットに入れ、特定の期間キャッシュを複数回ポーリングして、格納したワークロード・データを更新します。必要な期間実行して、システム・ワークロード全体を取得できます。


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-11 CAPTURE_CURSOR_CACHE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

time_limit

実行する合計時間(秒)。

repeat_interval

サンプリングの実行間隔(秒)。

capture_option

取得時の動作(新しい文の挿入、既存の文の更新またはその両方)。load_sqlsetload_optionと同様に、'INSERT'、'UPDATE'または'MERGE'を指定できます。

capture_mode

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

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

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

basic_filter

各サンプリングでカーソル・キャッシュに適用するフィルタ(「select_xxxサブプログラム」を参照)。

sqlset_owner

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


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

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


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');

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

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

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


関連項目:

このグループの他のサブプログラムについては、「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;

パラメータ

表125-12 CREATE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

description

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

sqlset_owner

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


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

CREATE_STGTAB_SQLPROFプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-13 CREATE_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

table_name

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

schema_name

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

tablespace_name

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


使用上の注意

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

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

CREATE_STGTAB_SQLSETプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-14 CREATE_STGTAB_SQLSETプロシージャのパラメータ

パラメータ 説明

table_name

作成する表の名前(大/小文字区別)。

schema_name

作成する表を格納するスキーマ(大/小文字区別)。現行のスキーマの場合はNULL

tablespace_name

ステージング表を格納する表領域(大/小文字区別)。現行ユーザーのデフォルト表領域の場合はNULL


使用上の注意

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

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

CREATE_TUNING_TASKファンクション

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

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


関連項目:

このグループの他のサブプログラムについては、「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)
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)
RETURN VARCHAR2;

ワークロード・リポジトリ形式:

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)
RETURN VARCHAR2;

SQLSET形式:

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)
RETURN VARCHAR2;

パラメータ

表125-15 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をフィルタするためのSQL述語。

object_filter

オブジェクト・フィルタ。

rank(i)

選択したSQLのorder-by句。

result_percentage

ランキング・メジャーの合計のパーセント。

result_limit

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

user_name

チューニング対象のSQL文があるユーザーの名前。

scope

チューニング・スコープ(制限付き/包括的)。

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


戻り値

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

使用上の注意

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

variable stmt_task VARCHAR2(64);
variable sts_task  VARCHAR2(64);

-- Sql text format
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'')');

-- Sql id format (cursor cache)
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24');

-- tune in limited scope
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
   scope => 'LIMITED');

-- only give 10 minutes for tuning statement
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24', -
   time_limit => 600);

-- Workload repository format
exec :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(begin_snap => 1, -
   end_snap => 2, sql_id => 'ay1m3ssvtrh24');

-- Sql tuning set format (first we need to load an STS, then tune it)

-- Tune our statements in order by buffer gets, time limit of one hour
-- the default ranking measure is elapsed time.
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');

DELETE_SQLSETプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-16 DELETE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。この基本フィルタはSQLチューニング・セットのコンテンツ上でwhere句として使用され、目的の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');

DROP_SQL_PROFILEプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-17 DROP_SQL_PROFILEプロシージャのパラメータ

パラメータ 説明

name

削除するSQLプロファイルの名前(必須)。大文字と小文字が区別されます。

ignore

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


使用上の注意

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

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

DROP_SQLSETプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-18 DROP_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

sqlset_owner

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


使用上の注意

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

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

DROP_TUNING_TASKプロシージャ

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


関連項目:

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

構文

DBMS_SQLTUNE.DROP_TUNING_TASK(
 task_name         IN VARCHAR2);

パラメータ

表125-19 DROP_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

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



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

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


関連項目:

このグループの他のサブプログラムについては、「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)
 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);

パラメータ

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

パラメータ 説明

task_name

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

execution_name

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

execution_params

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

execution_desc

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


使用上の注意

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

EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);

IMPLEMENT_TUNING_TASKプロシージャ

このプロシージャは、SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。 このサブプログラムをコールすることは、SCRIPT_TUNING_TASKファンクションをコールしてからスクリプトを実行することと同じです。


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-21 IMPLEMENT_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

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

rec_type

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

owner_name

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

execution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に対するリコメンデーションが実装されます。



INTERRUPT_TUNING_TASKプロシージャ

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


関連項目:

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

構文

DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(
 task_name         IN VARCHAR2);

パラメータ

表125-22 INTERRUPT_TUNING_TASKプロシージャのパラメータ

パラメータ 説明

task_name

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


EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:my_task);

LOAD_SQLSETプロシージャ

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


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-23 LOAD_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

populate_cursor

入力に使用するカーソル参照。

load_option

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

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

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

  • MERGE: 他の2つのオプションを組み合せたものです。このオプションを指定すると、新しい文の挿入および既存の文の情報の更新が行われます。

update_option

既存の文の更新方法を指定します。 このパラメータは、load_optionのオプションが'UPDATE'または'MERGE'に指定されている場合にのみ考慮されます。有効な値は、次のとおりです。

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

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

update_condition

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

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

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

update_attributes

マージ操作時または更新操作時に更新するSQL文の属性のリストを指定します。有効な値は、次のとおりです。

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

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

  • TYPICAL: BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます。

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

  • 更新する属性名のカンマ区切りリスト: EXECUTION_CONTEXTEXECUTION_STATISTICSBIND_LISTOBJECT_LISTSQL_PLANSQL_PLAN_STATISTICSSQL_PLAN + 行ソース統計に類似)。

ignore_null

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

commit_rows

数値を指定すると、その数の文が挿入されるたびにロードがコミットされます。NULLを指定すると、操作の最後に1回のみロードがコミットされます。 この引数に値を指定すると、SQLチューニング・セットのロード操作の進行状況をDBA_/USER_SQLSETビューで監視できます。 STATEMENT_COUNTの値は、新しいSQL文がロードされるたびに増加します。

sqlset_owner

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


例外

使用上の注意

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

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

-- create the tuning set
EXEC DBMS_SQLTUNE.CREATE_SQLSET('my_workload');
-- populate the tuning set from the cursor cache
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;
/

PACK_STGTAB_SQLPROFプロシージャ

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


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-24 PACK_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

profile_name

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

profile_category

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

staging_table_name

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

staging_schema_owner

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


使用上の注意

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');

PACK_STGTAB_SQLSETプロシージャ

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


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-25 PACK_STGTAB_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

パックするSQLチューニング・セットの名前(%ワイルドカードを使用可、大/小文字区別)。

sqlset_owner

パックするSQLチューニング・セットのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。

staging_table_name

使用する表の名前(大/小文字区別)。

staging_schema_owner

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


使用上の注意

システム上のすべてのSQLチューニング・セットをステージング表に入れます(ステージング表の作成方法については、CREATE_STGTAB_SQLSETプロシージャを参照)。

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(sqlset_name        => '%', -
                                     sqlset_owner       => '%', -
                                     staging_table_name => 'STGTAB_SQLSET');

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

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(sqlset_name        => '%', -
                                     staging_table_name => 'STGTAB_SQLSET');

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

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(sqlset_name        => 'my_workload', -
                                     staging_table_name => 'STGTAB_SQLSET');

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

EXEC DBMS_SQLTUNE.PACK_STGTAB_SQLSET(sqlset_name        => 'workload_subset', -
                                     staging_table_name => 'STGTAB_SQLSET');

REMAP_STGTAB_SQLPROFプロシージャ

このプロシージャを使用すると、DBAは、ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更できます。このプロシージャは、プロファイルのカテゴリを変更するために使用できます。また、同じ名前のプロファイルがシステム上にある場合、プロファイルの名前を変更するために使用することもできます。


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-26 REMAP_STGTAB_SQLPROFプロシージャのパラメータ

パラメータ 説明

old_profile_name

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

new_profile_name

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

new_profile_category

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

staging_table_name

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

staging_schema_owner

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


使用上の注意

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

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

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

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

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

REMAP_STGTAB_SQLSETプロシージャ

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


関連項目:

このグループの他のサブプログラムについては、「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,
   taging_schema_owner   IN VARCHAR2 := NULL);

パラメータ

表125-27 REMAP_STGTAB_SQLSETプロシージャのパラメータ

パラメータ 説明

old_sqlset_name

再マップ操作の対象となるチューニング・セットの名前。ワイルドカードはサポートされていません。

old_sqlset_owner

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

new_sqlset_name

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

new_sqlset_owner

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

staging_table_name

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

staging_schema_owner

ステージング表の所有者の名前(大/小文字区別)。現行のスキーマ所有者の場合はNULL


使用上の注意

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

-- Change the name of an STS in the staging table before we unpack it.
EXEC 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 we unpack it.
EXEC DBMS_SQLTUNE.REMAP_STGTAB_SQLSET(old_sqlset_name    => 'imp_workload', -
                                      old_sqlset_owner   => 'SH', -
                                      new_sqlset_owner   => 'SYS', -
                                      staging_table_name => 'STGTAB_SQLSET');

REMOVE_SQLSET_REFERENCEプロシージャ

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


関連項目:

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

構文

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

パラメータ

表125-28 REMOVE_SQLSET_REFERENCEプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

reference_id

削除する参照の識別子。


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

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

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


REPORT_AUTO_TUNING_TASKファンクション

このファンクションは、自動チューニング・タスクによるレポートを表示します。 このファンクションは、特定の範囲のサブタスクをレポートするREPORT_AUTO_TUNING_TASKファンクションとは異なります。


関連項目:

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

構文

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,
    segment_scheme IN VARCHAR2  := SEGMENT_NONE)
  RETURN CLOB;

パラメータ

表125-29 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文の最大数。

segment_scheme

現在は実行できません。


戻り値

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


REPORT_SQL_MONITORファンクション

このファンクションは、SQL文の実行に関連して収集された監視情報を示すレポートを(テキスト、HTMLまたはXML形式で)作成します。このファンクションは利便性のために提供されています。このレポートの構造または内容は今後のリリースで変更される可能性があります。


関連項目:

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

構文

DBMS_SQLTUNE.REPORT_SQL_MONITORK(
   sql_id                 IN VARCHAR2  := NULL,
   session_id             IN NUMBER    := NULL,
   session_serial         IN NUMBER    := NULL,
   sql_exec_start         IN DATE      := NULL,
   sql_exec_id            IN NUMBER    := NULL,
   inst_id                IN NUMBER    := -1,
   start_time_filter      IN DATE      := NULL,
   end_time_filter        IN DATE      := NULL,
   instance_id_filter     IN NUMBER    := NULL,
   parallel_filter        IN VARCHAR2  := NULL,
   event_detail           IN VARCHAR2  := 'YES',
   report_level           IN VARCHAR2  := 'TYPICAL',
   type                   IN VARCHAR2  := 'TEXT')
 RETURN CLOB;

パラメータ

表125-30 REPORT_SQL_MONITORファンクションのパラメータ

パラメータ 説明

sql_id

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

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(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'を使用します。

report_level

レポートの詳細なレベル('BASIC'、'TYPICAL'または'ALL'のいずれか)です。 レポートの個々のセクションは、+/-<section_name>を使用して、有効または無効にすることもできます。 'PLAN'、'PARALLEL'、'SESSIONS'、'INSTANCE'および'SQL_TEXT'という複数のセクションが定義されています。 たとえば、パラレル情報をレポートするセクションを追加して基本的なレポートを表示する場合は、'BASIC +PARALLEL'を使用します。また、詳細なレポートから計画の詳細およびインスタンス情報を除外する場合は、'ALL -PLAN -INSTANCE'を使用します。

type

レポート形式。デフォルトは'TEXT'です。'TEXT'、'HTML'または'XML'を指定できます。


戻り値

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

使用上の注意


関連項目:

リアルタイムSQL監視の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。


REPORT_TUNING_TASKファンクション

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


関連項目:

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

構文

DBMS_SQLTUNE.REPORT_TUNING_TASK(
   task_name       IN   VARCHAR2,
   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,
   owner_name      IN    VARCHAR2  := NULL,
   execution_name  IN  VARCHAR2    := NULL))
RETURN CLOB;

パラメータ

表125-31 REPORT_TUNING_TASKファンクションのパラメータ

パラメータ 説明

task_name

レポートするチューニング・タスクの名前。

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文の最大数。

owner_name

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

execution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するレポートが生成されます。


戻り値

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

-- Get the whole report for the single statement case.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:stmt_task) from dual;

-- Show me the summary for the sts case.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL', 'SUMMARY')
FROM DUAL;

-- Show me the findings for the statement I'm interested in.
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:sts_task, 'TEXT', 'TYPICAL', 'FINDINGS', 5) from dual;

RESET_TUNING_TASKプロシージャ

このプロシージャは、現在実行されていないチューニング・タスクに対してコールされ、そのチューニング・タスクを再実行できるように準備します。


関連項目:

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

構文

DBMS_SQLTUNE.RESET_TUNING_TASK(
 task_name         IN VARCHAR2);

パラメータ

表125-32 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);

RESUME_TUNING_TASKプロシージャ

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


関連項目:

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

構文

DBMS_SQLTUNE.RESUME_TUNING_TASK(
 task_name         IN VARCHAR2,
 basic_filter      IN VARCHAR2 := NULL);

パラメータ

表125-33 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);

SCRIPT_TUNING_TASKファンクション

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


関連項目:

このグループの他のサブプログラムについては、「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 NUMNBER   := NULL,
  owner_name        IN VARCHAR2  := NULL,
  execution_name    IN VARCHAR2  := NULL)
 RETURN CLOB;

パラメータ

表125-34 SCRIPT_TUNING_TASKファンクションのパラメータ

パラメータ 説明

task_name

スクリプトを適用するチューニング・タスクの名前。

rec_type

対象とするリコメンデーションのタイプで、スクリプトをフィルタします。'PROFILES''STATISTICS''INDEXES'をカンマで区切ったサブセットまたは'ALL'を指定します。たとえば、プロファイルおよび統計のスクリプトの場合は、'PROFILES,STATISTICS'になります。

object_id

1つのオブジェクトIDでフィルタします(オプション)。

result_limit

上位N番(順序はobject_idで決定)のSQLのみに対するコマンドを示します(オプション)。object_idも指定されている場合は無視されます。

owner_name

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

excution_name

使用するタスク実行の名前。NULLの場合は、最後のタスク実行に関するスクリプトが生成されます。


戻り値

CLOBの形式でスクリプトを戻します。

使用上の注意

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 just the sql profiles we should create.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'PROFILES') FROM DUAL;

-- get a script of just stale / missing stats
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task, 'STATISTICS') FROM DUAL;

-- Get a script with recommendations about just one SQL statement when we have
-- tuned an entire STS.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:sts_task, 'ALL', 5) FROM DUAL;

SELECT_CURSOR_CACHEファンクション

このファンクションは、SQLカーソル・キャッシュからSQL文を収集します。


関連項目:

このグループの他のサブプログラムについては、「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)
 RETURN sys.sqlset PIPELINED;

パラメータ

表125-35 SELECT_CURSOR_CACHEファンクションのパラメータ

パラメータ 説明

sqlset_name

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

basic_filter

SQLSET_ROWの属性に対して定義されたカーソル・キャッシュからSQLをフィルタするためのSQL述語。

object_filter

カーソル・キャッシュから選択したSQLのオブジェクト・リストに存在するオブジェクトを指定します。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

  • BASIC(デフォルト): 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

  • TYPICAL: - BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます。

  • ALL: すべての属性を戻します。

  • 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICSBIND_LISTOBJECT_LIST、SQL_PLAN、SQL_PLAN_STATISTICSSQL_PLAN + 行ソース統計に類似)です。


戻り値

このファンクションは、各データ・ソースで検出されるSQL_IDまたはPLAN_HASH_VALUEの組合せごとに1つのSQLSET_ROWを戻します。

使用上の注意

-- 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 will be called after opening a cursor, along the
-- lines given below

-- Select all statements in the cursor cache.
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 cursor cache 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 cursor cache.  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;
/

SELECT_SQL_TRACEファンクション

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


関連項目:

このグループの他のサブプログラムについては、「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;

パラメータ

表125-36 SELECT_SQL_TRACEファンクションのパラメータ

パラメータ 説明

directory

トレース・ファイルを含むディレクトリ・オブジェクト。 このフィールドは必須です。

file_name

処理するトレース・ファイルの完全な名前または名前の一部。NULLの場合は、指定したディレクトリ内の現行のファイルまたは最も新しいファイルが使用されます。トレース・ファイル名の一致検索では、ワイルドカード'%'がサポートされています。

mapping_table_name

マッピング表名。 マッピング表名は大/小文字が区別されないことに注意してください。 マッピング表名がNULLの場合は、現行のデータベースにあるマッピングが使用されます。

mapping_table_owner

マッピング表の所有者。 NULLの場合は、現行のユーザーが使用されます。

select_mode

選択したSQLのorder-by句。 デフォルトは、SINGLE_EXECUTIONです。

  • SINGLE_EXECUTION: 1つのSQL実行を戻します(デフォルト)。

  • ALL_EXECUTIONS: すべての実行を戻します。

options

オプション。 デフォルトは、LIMITED_COMMAND_TYPEです。ただし、すべてのOracleコマンド・タイプへのSQL文を戻すように設定することもできます。

  • LIMITED_COMMAND_TYPE: コマンド・タイプがCREATEINSERTSELECTUPDATEDELETEUPSERTのSQL文を戻します。 これがデフォルトです。

  • ALL_COMMAND_TYPE: すべてのコマンド・タイプのSQL文を戻します。

pattern_start

対象となるトレース・ファイル・セクションの開始区切りパターン。(現在使用不可)

pattern_end

処理するトレース・ファイル・セクションの終了区切りパターン。(現在使用不可)

result_limit

フィルタ処理済のソースの先頭から数件取得されるSQL文。 NULLの場合は、デフォルトのMAXSB4が設定されます。


戻り値

このファンクションは、SQLSET_ROWオブジェクトを戻します。

次のコードは、いくつかの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;
/

SELECT_SQLSETファンクション

このファンクションは、SQLSETの内容を読み取ります。


関連項目:

このグループの他のサブプログラムについては、「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)
 RETURN sys.sqlset PIPELINED;

パラメータ

表125-37 SELECT_SQLSETファンクションのパラメータ

パラメータ 説明

sqlset_name

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

basic_filter

SQLSET_ROWの属性に対して定義されたSQLチューニング・セットからSQLをフィルタするためのSQL述語。

object_filter

カーソル・キャッシュから選択したSQLのオブジェクト・リストに存在するオブジェクトを指定します。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

  • BASIC(デフォルト): 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

  • TYPICAL: - BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます。

  • ALL: すべての属性を戻します。

  • 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICSBIND_LISTOBJECT_LIST、SQL_PLAN、SQL_PLAN_STATISTICSSQL_PLAN + 行ソース統計に類似)です。

plan_filter

計画フィルタ。

sqlset_owner

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


戻り値

このファンクションは、各データ・ソースで検出される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;
/

SELECT_WORKLOAD_REPOSITORYファンクション

このファンクションは、ワークロード・リポジトリからSQL文を収集します。オーバーロードされたフォームによって、次の操作を実行できます。


関連項目:

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

構文

DBMS_SQLTUNE.SELECT_WORKLAOD_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)
 RETURN sys.sqlset PIPELINED;

DBMS_SQLTUNE.SELECT_WORKLAOD 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)
 RETURN sys.sqlset PIPELINED;

パラメータ

表125-38 SELECT_WORKLOAD_REPOSITORYファンクションのパラメータ

パラメータ 説明

begin_snap

開始スナップショット(この値を含めない)

end_snap

終了スナップショット(この値を含む)

baseline_name

ベースライン時間の名前。

basic_filter

SQLSET_ROWの属性に対して定義されたワークロード・リポジトリからSQLをフィルタするためのSQL述語。

object_filter

SWRFから選択したSQLのオブジェクト・リストに存在するオブジェクトを指定します。

ranking_measure(n)

選択したSQLのorder-by句。

result_percentage

指定されたランキング・メジャーに従って、上位N%を選択するフィルタ。このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されることに注意してください。

result_limit

ランキング・メジャーでランク付けした(フィルタ済の)ソースの先頭から数件取得されるSQL文。

attribute_list

結果として戻すSQL文の属性リスト。有効な値は、次のとおりです。

  • BASIC(デフォルト): 計画を除くすべての属性(実行統計、バインドなど)を戻します。実行コンテキストは必ず結果に含まれます。

  • TYPICAL: - BASIC + SQL計画(行ソース統計を除く)。オブジェクト参照リストも除かれます。

  • ALL: すべての属性を戻します。

  • 属性名のカンマ区切りリスト。これによって、SQL属性のサブセットのみを戻すことができます。設定可能な値は、EXECUTION_STATISTICSBIND_LISTOBJECT_LISTSQL_PLANSQL_PLAN_STATISTICSSQL_PLAN + 行ソース統計に類似)です。


戻り値

このファンクションは、各データ・ソースで検出される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;
/

SET_TUNING_TASK_PARAMETERプロシージャ

このプロシージャは、VARCHAR2型またはNUMBER型のSQLチューニング・パラメータの値を更新します。

このプロシージャをコールする前に、タスクを初期状態に設定する必要があります。


関連項目:

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

構文

DBMS_SQLTUNE.set_tuning_task_parameter(   task_name    IN  VARCHAR2,
   parameter    IN  VARCHAR2,
   value        IN  VARCHAR2);
DBMS_SQLTUNE.set_tuning_task_parameter(   task_name    IN  VARCHAR2,
   parameter    IN  VARCHAR2,
   value        IN  NUMBER);

パラメータ

表125-39 SET_TUNING_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

task_name

実行するタスクの識別子。

parameter

設定するパラメータの名前。パラメータをVARCHAR2形式で使用してこのプロシージャで設定できるチューニング・パラメータは、次のとおりです。

  • MODE: チューニング・スコープ(制限付き/包括的)。

  • USERNAME: 文を解析するユーザーの名前。

  • DAYS_TO_EXPIRE: タスクが削除されるまでの日数。

  • EXECUTION_DAYS_TO_EXPIRE: (タスクが削除されることなく)タスクの実行が削除されるまでの日数。

  • DEFAULT_EXECUTION_TYPE: EXECUTE_TUNING_TASKファンクションおよびプロシージャによって何も指定されていない場合、タスクの実行タイプはデフォルトでこのタイプに設定されます。

  • TIME_LIMIT: グローバル・タイムアウト(秒)。

  • LOCAL_TIME_LIMIT: 文単位のタイムアウト(秒)。

  • TEST_EXECUTE: FULL/AUTO/OFF

    * FULL: SQLのローカル時間制限(SQLの時間制限が設定されていない場合はグローバル・タスクの時間制限)まで、必要な時間テスト実行します。

    * AUTO: チューニング時間に比例して自動的に選択された時間テスト実行します。

    * OFF: テスト実行しません。

  • BASIC_FILTER: SQLチューニング・セットの基本フィルタ。

  • 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チューニング・セットの文のパーセント・フィルタ。

parameter(続き)

自動チューニング・タスクでのみ、次のパラメータがサポートされます。

  • ACCEPT_SQL_PROFILES: タスクでSQLプロファイルを自動的に受け入れるかどうかによってTRUEまたはFALSE

  • MAX_AUTO_SQL_PROFILES: システムで許容される自動SQLプロファイルの最大数(合計)。

  • MAX_SQL_PROFILES_PER_EXEC: タスクを実行するたびに自動的に実装できるSQLプロファイルの最大数。

value

指定したパラメータの新しい値。



SQLTEXT_TO_SIGNATUREファンクション

このファンクションは、SQLテキストのシグネチャを戻します。 このシグネチャを使用して、dba_sql_profilesのSQLテキストを識別できます。


関連項目:

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

構文

DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE (
  sql_text    IN CLOB,  force_match IN BOOLEAN  := FALSE)
 RETURN NUMBER;

パラメータ

表125-40 SQLTEXT_TO_SIGNATUREファンクションのパラメータ

パラメータ 説明

sql_text

シグネチャが必要なSQLテキスト。必須です。

force_match

TRUEに設定すると、リテラル値をバインド変数に変換するSQLマッチングがサポートされているシグネチャを戻します。FALSEに設定すると、リテラルが変換されないテキストに基づいてシグネチャを戻します。


戻り値

このファンクションは、指定したSQLテキストのシグネチャを戻します。


UNPACK_STGTAB_SQLPROFプロシージャ

このプロシージャは、ステージング表に保存されているプロファイル・データを使用して、システム上にプロファイルを作成します。


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-41 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
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace            => FALSE, -
                                        staging_table_name => 'PROFILE_STGTAB');

-- If there is a failure during the unpack operation, users can find the profile
-- we failed on and perform a remap_stgtab_sqlprof operation targeting it.  Then
-- they can resume the unpack operation by setting replace to TRUE so that
-- the profiles that were already created will just be replaced
EXEC DBMS_SQLTUNE.UNPACK_STGTAB_SQLPROF(replace            => TRUE, -
                                        staging_table_name => 'PROFILE_STGTAB');

UNPACK_STGTAB_SQLSETプロシージャ

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


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-42 UNPACK_STGTAB_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

アンパックするチューニング・セットの名前(NULL以外)。 ワイルドカード文字('%')がサポートされていて、1回のコールで複数のチューニング・セットをアンパックできます。 たとえば、'%'と指定すると、すべてのチューニング・セットがステージング表からアンパックされます。

sqlset_owner

チューニング・セットの所有者の名前。現行のスキーマ所有者の場合はNULL。ワイルドカードがサポートされています。

replace

すでに存在するチューニング・セットを置換します。FALSEに設定した場合、すでに存在するチューニング・セットを作成しようとするとエラーが発生します。

staging_table_name

ステージング表の名前(大/小文字区別)。このステージング表は、PACK_STGTAB_SQLSETプロシージャへのコールによって移動された表です。

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');

UPDATE_SQLSETプロシージャ

このプロシージャは、SQLチューニング・セットのSQL文の選択されているフィールドを更新します。


関連項目:

このグループの他のサブプログラムについては、「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);

パラメータ

表125-43 UPDATE_SQLSETプロシージャのパラメータ

パラメータ 説明

sqlset_name

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

sql_id

更新する文の識別子。

attribute_name

変更する属性の名前。

attribute_value

属性の新しい値。