183 DBMS_SQLTUNE
DBMS_SQLTUNE
パッケージは、オンデマンドでSQLをチューニングするためのインタフェースです。関連パッケージのDBMS_AUTO_SQLTUNE
パッケージは、自動タスクとして実行されるSQLチューニング・アドバイザに対するインタフェースを提供します。
この章の内容は次のとおりです。
183.1 DBMS_SQLTUNEの概要
DBMS_SQLTUNE
パッケージは、相互に関連する次のいくつかの機能領域を提供します。
この項では、次の項目について説明します。
SQLチューニング・アドバイザ
アドバイザ・スイートの1つであるSQLチューニング・アドバイザは、データベースのパフォーマンス問題を特定および解決する一連のエキスパート・システムです。具体的には、SQLチューニング・アドバイザによって、問題のあるSQL文のチューニングが自動化されます。SQLチューニング・アドバイザに1つ以上のSQL文を入力すると、その文のチューニング方法に関する的確なアドバイスを取得できます。アドバイザは、SQLをチューニングするためのSQLアクションの形でアドバイスを提供するとともに、予測されるパフォーマンス上のメリットも示します。
DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラムのグループには、アドバイザへのアクセスを可能にするタスク指向のインタフェースが用意されています。次に示すサブプログラムを、次の順序でコールすると、SQLチューニング・アドバイザの機能の一部を使用できます。
-
CREATE_TUNING_TASKファンクションは、1つ以上のSQL文をチューニングするためのチューニング・タスクを作成します。
-
EXECUTE_TUNING_TASKファンクションおよびプロシージャは、以前作成したチューニング・タスクを実行します。
-
REPORT_TUNING_TASKファンクションを使用して、チューニング・タスクの結果を表示します。
-
SCRIPT_TUNING_TASKファンクションを使用して、SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、アドバイザによる一連の推奨事項を実装できます。
SQLプロファイル・サブプログラム
SQLチューニング・アドバイザによって、文のパフォーマンスを向上させるSQLプロファイルの作成を推奨される場合があります。SQLプロファイルは、その文に固有な補助統計で構成されます。カーディナリティ、選択性およびコストは問合せオプティマイザによって推定されますが、これらの値が大幅にずれているために不適切な実行計画が生成される場合があります。SQLプロファイルは、サンプリングおよび部分的に実行する方法を使用して追加情報を収集し、これらの推定を調整することで、この問題に対処します。
DBMS_SQLTUNE SQLプロファイル・サブプログラムのグループでは、特定の単一SQL文を対象とするオプティマイザに統計情報を伝えるためのメカニズムが用意されており、可能なかぎり正確な統計情報を伝えることによって、オプティマイザでその文に対する優れた判断を行うことができるようにします。たとえば:
-
ACCEPT_SQL_PROFILEプロシージャおよびファンクションを使用すると、SQLチューニング・アドバイザによって推奨されたSQLプロファイルを受け入れることができます。
-
ALTER_SQL_PROFILEプロシージャを使用すると、既存のSQLプロファイルの属性(
STATUS
、NAME
、DESCRIPTION
およびCATEGORY
)を変更できます。 -
DROP_SQL_PROFILEプロシージャを使用すると、SQLプロファイルを削除できます。
SQLチューニング・セット
SQLチューニング・セットは、SQL文とともに次の情報を格納します。
-
解析スキーマ名、バインド値などの実行コンテキスト。
-
平均経過時間、実行件数などの実行統計情報。
-
実行計画(データベースでSQL文を実行するために行われる一連の操作)
-
行ソース統計(計画で実行される各操作の処理行数など)。
SQLチューニング・セットを作成する場合は、次のソースを使用してSQL文にフィルタ処理やランキングを実行します。
-
SELECT_CURSOR_CACHEファンクションを使用した共有SQL領域。
-
自動ワークロード・リポジトリの先頭にあるSQL文(SELECT_WORKLOAD_REPOSITORYファンクションを使用)。
-
その他のSQLチューニング・セット(SELECT_SQLSETファンクションを使用)。
-
SQLパフォーマンス・アナライザ・タスクの比較結果(SELECT_SQLPA_TASKファンクションを使用)。
-
SQLトレース・ファイル(SELECT_SQL_TRACEファンクションを使用)。
-
ユーザー定義ワークロード
この機能は、すべてのDBMS_SQLTUNE SQLチューニング・セット・サブプログラムを使用すると、簡単に実行できます。次に例を示します。
-
CREATE_SQLSETプロシージャおよびファンクションでは、データベース内にSQLチューニング・セット・オブジェクトを作成します。
-
選択した一連のSQLをSQLチューニング・セットに入力する場合は、LOAD_SQLSETプロシージャを使用します。
-
CAPTURE_CURSOR_CACHE_SQLSETプロシージャでは、指定した期間にわたり共有SQL領域からSQL文を収集し、データベース・ワークロードにおける実際のピクチャの作成を試みます。
ノート:
SQLチューニング・セットを操作する場合は、DBMS_SQLTUNE
のかわりにDBMS_SQLSETを使用できます。
SQLチューニング・セットおよびSQLプロファイルのインポートとエクスポート
DBMS_SQLTUNE
サブプログラムを使用して、共通のプログラム・モデルを使用するシステム間でSQLプロファイルおよびSQLチューニング・セットを移動します。いずれの場合も、ソース・データベース上にステージング表を作成し、関連するデータをそのステージング表に入力します。次に、選択した方法(Oracle Data Pump、データベース・リンクなど)に従ってそのステージング表を移動先システムに移動し、そのステージング表を使用してオブジェクトを元の形式で再構成します。次のステップは、このパッケージに含まれるサブプログラムによって実行されます。
-
ソース・システムにステージング表を作成するには、CREATE_STGTAB_SQLPROFプロシージャまたはCREATE_STGTAB_SQLSETプロシージャをコールします。
-
ソース・システムの情報をステージング表に移入するには、PACK_STGTAB_SQLPROFプロシージャまたはPACK_STGTAB_SQLSETプロシージャをコールします。
-
ステージング表を移動先システムに移動します。
-
新しいシステム上にオブジェクトを再作成するには、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
パラメータが含まれます。
183.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
が推奨されます。 -
183.3 DBMS_SQLTUNEのデータ構造
DBMS_SQLTUNE
パッケージのSELECT_*
サブプログラムはSQLSET_ROW
タイプのオブジェクトを戻します。
オブジェクト・タイプ
183.3.1 SQLSET_ROWオブジェクト・タイプ
SQLSET_ROW
オブジェクトは、ユーザーのSQLチューニング・セットの内容をモデル化します。
論理的には、SQLチューニング・セットはSQLSET_ROW
オブジェクトの集まりです。各SQLSET_ROW
には、1つのSQL文とその実行コンテキスト、統計、バインドおよび計画が含まれます。各SELECT_*
サブプログラムは、(sql_id
、plan_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))
属性
表183-1 SQLSET_ROWの属性
属性 | 説明 |
---|---|
|
一意なSQL ID。 |
|
リテラル、ケースおよび空白を除くシグネチャ。 |
|
SQL文の全テキスト。 |
|
現在、実装されていません。 |
|
このSQLに対して取得されるバインド・データ。このパラメータの引数を指定し、 |
|
SQLが解析されるスキーマ。 |
|
SQLの最後のアプリケーション・モジュール。 |
|
SQLの最後のアプリケーション・アクション。 |
|
このSQL文の経過時間の合計。 |
|
このSQL文のCPU時間の合計。 |
|
バッファ取得回数の合計。 |
|
ディスク読取り回数の合計。 |
|
直接パス書込み回数の合計。 |
|
このSQL文による処理行数の合計。 |
|
フェッチ回数の合計。 |
|
このSQL文の実行回数の合計。 |
|
SQL文のすべての行がフェッチされ、文が完全に実行された回数。 |
|
このSQLのオプティマイザ・コスト。 |
|
このSQL文のオプティマイザ環境。 |
|
ユーザー定義の優先順位(1、2、3)。 |
|
文のタイプ( |
|
親カーソルのロード時間。 |
|
このSQL文の統計情報が収集された期間(秒)。 |
|
SQL文がアクティブだった有効期間(秒)。 |
|
他の列(ユーザー定義の属性用)。 |
|
計画の計画ハッシュ値。 |
|
SQL文の実行計画。 |
|
SQL文のユーザー指定バインドのリスト。ユーザー指定ワークロードに使用されます。このパラメータの引数を指定し、 |
|
PDBまたはCDBルートのDBID。 |
|
最後に実行されたSQL文の開始時刻。 |
183.4 DBMS_SQLTUNEのサブプログラム・グループ
DBMS_SQLTUNE
のサブプログラムは、機能ごとに次のようにグループ分けされています。
183.4.1 DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム
このサブプログラム・グループは、SQLチューニング・タスクを管理するためのインタフェースを提供します。
表183-2 SQLチューニング・タスク・サブプログラム
サブプログラム | 説明 |
---|---|
現在実行中のチューニング・タスクを取り消します。 |
|
既存の計画のSQL計画ベースラインを作成します。 |
|
SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。 |
|
SQLチューニング・タスクを削除します。 |
|
以前に作成したチューニング・タスクを実行します。 |
|
SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。 |
|
現在実行中のチューニング・タスクを中断します。 |
|
自動チューニング・タスクによるレポートを表示して、特定の範囲の実行についてレポートします。 |
|
チューニング・タスクの結果を表示します。 |
|
現在実行中のチューニング・タスクを初期状態にリセットします。 |
|
SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。 |
|
チューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。 |
|
SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。 |
|
|
このパッケージ内のすべてのサブプログラムのリストは、DBMS_SQLTUNEサブプログラムの要約を参照してください。
183.4.2 DBMS_SQLTUNE SQLプロファイル・サブプログラム
このサブプログラム・グループは、SQLプロファイルを管理するためのインタフェースを提供します。
表183-3 SQLプロファイル・サブプログラム
サブプログラム | 説明 |
---|---|
チューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。 |
|
指定されたチューニング・タスクのSQLプロファイルを作成します。 |
|
既存のSQLプロファイル・オブジェクトの特定の属性を変更します。 |
|
システム間でのSQLプロファイルのコピーに使用されるステージング表を作成します。 |
|
データベースから名前付きSQLプロファイルを削除します。 |
|
プロファイル・データを |
|
ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。 |
|
SQLテキストのシグネチャを戻します。 |
|
ステージング表に格納されたプロファイル・データを使用して、システムでプロファイルを作成します。 |
このパッケージ内のすべてのサブプログラムのリストは、DBMS_SQLTUNEサブプログラムの要約を参照してください。
183.4.3 DBMS_SQLTUNE SQLチューニング・セット・サブプログラム
このサブプログラム・グループは、SQLチューニング・セットを管理するためのインタフェースを提供します。
表183-4 SQLチューニング・セット・サブプログラム
サブプログラム | 説明 |
---|---|
新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。 |
|
指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。 |
|
データベース内にSQLチューニング・セット・オブジェクトを作成します。 |
|
SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。 |
|
SQL文のセットをSQLチューニング・セットから削除します。 |
|
SQLチューニング・セットがアクティブでない場合はそれを削除します。 |
|
選択したSQLのセットをSQLチューニング・セットに入力します。 |
|
|
|
ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。 |
|
SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。 |
|
共有SQL領域からSQL文を収集します。 |
|
1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文を |
|
SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。 |
|
既存のSQLチューニング・セットからSQL文を収集します。 |
|
ワークロード・リポジトリからSQL文を収集します。 |
|
ステージング表から1つ以上のSQLチューニング・セットをコピーします。 |
|
SQLチューニング・セットのSQL文の選択されている文字列フィールドを更新するか、SQLチューニング・セットのSQLの設定済の数値属性を更新します。 |
このパッケージ内のすべてのサブプログラムのリストは、「DBMS_SQLTUNEサブプログラムの要約」を参照してください。
183.4.4 DBMS_SQLTUNEリアルタイムSQL監視サブプログラム
このサブプログラム・グループでは、V$SQL_MONITOR
およびV$SQL_PLAN_MONITOR
に収集された監視データをレポートする機能が提供されています。
表183-5 リアルタイムSQL監視サブプログラム
サブプログラム | 説明 |
---|---|
リアルタイムSQL監視をレポートします。 |
|
Oracle Databaseによって監視されるすべての文または文のサブセットのレポートを作成します。 |
|
Oracle Databaseによって監視されるすべての文または文のサブセットのXMLレポートを作成します。 |
183.4.5 DBMS_SQLTUNE SQLパフォーマンス・レポート・サブプログラム
このサブプログラム・グループは、共有SQL領域および自動ワークロード・リポジトリ(AWR)の統計情報を使用して、SQLパフォーマンスの詳細なレポートを提供します。
表183-6 SQLパフォーマンス・レポート・サブプログラム
サブプログラム | 説明 |
---|---|
このファンクションは、特定のSQL IDについてレポートします。 |
|
このファンクションは、対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTMLまたはXML)を作成します。 |
|
このファンクションは、Oracleによって監視されるすべての文または文のサブセットのレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します。 |
|
このファンクションは、チューニング・タスクの結果を表示します。 |
|
このファンクションは、チューニング・タスクのXMLレポートを表示します。 |
183.5 DBMS_SQLTUNEサブプログラムの要約
この表は、DBMS_SQLTUNE
サブプログラムを示し、簡単に説明しています。
表183-7 DBMS_SQLTUNEパッケージのサブプログラム
サブプログラム | 説明 | グループ |
---|---|---|
特定のチューニング・タスクの特定の実行が推奨するすべてのSQLプロファイルを受け入れます。 |
||
指定されたチューニング・タスクのSQLプロファイルを作成します。 |
||
新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。 |
||
既存のSQLプロファイル・オブジェクトの特定の属性を変更します。 |
||
現在実行中のチューニング・タスクを取り消します。 |
||
指定した期間にわたり、共有SQL領域からワークロードを増分取得して、SQLチューニング・セットに移入します。 |
||
既存の計画のSQL計画ベースラインを作成します。 |
||
データベース内にSQLチューニング・セット・オブジェクトを作成します。 |
||
システム間でのSQLプロファイルのコピーに使用されるステージング表を作成します。 |
||
SQLチューニング・セットのインポートおよびエクスポートに使用するステージング表を作成します。 |
||
SQLチューニング・アドバイザ用に1つの文または1つのSQLチューニング・セットのチューニングを作成します。 |
||
SQL文のセットをSQLチューニング・セットから削除します。 |
||
データベースから名前付きSQLプロファイルを削除します。 |
||
SQLチューニング・セットがアクティブでない場合はそれを削除します。 |
||
SQLチューニング・タスクを削除します。 |
||
以前に作成したチューニング・タスクを実行します。 |
||
SQLチューニング・アドバイザによる一連のSQLプロファイル・リコメンデーションを実装します。 |
||
現在実行中のチューニング・タスクを中断します。 |
||
選択したSQLのセットをSQLチューニング・セットに入力します。 |
||
プロファイル・データを |
||
|
||
ステージング表に保存されているプロファイル・データの値を、アンパック操作を実行する前に変更します。 |
||
ホスト・システム上とは異なる値でアンパックできるように、ステージング表内のチューニング・セットの名前および所有者を変更します。 |
||
SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。 |
||
自動チューニング・タスクによるレポートを表示して、特定の範囲のサブタスクについてレポートします。 |
||
特定のSQL IDをレポートします。 |
||
対象の文の実行にかわって収集した監視情報に関するレポート(テキスト、単純なHTML、アクティブなHTML、XML)を作成します。 |
||
Oracle Databaseによって監視されるすべての文または文のサブセットのレポートを作成します。サブプログラムは、各文に対して、キー情報および関連付けられているグローバルな統計を付与します |
||
|
||
チューニング・タスクの結果を表示します。 |
||
チューニング・タスクのXMLレポートを表示します。 |
||
現在実行中のチューニング・タスクを初期状態にリセットします。 |
||
SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。 |
||
SQLチューニング・タスクを作成し、その実行をスケジューラ・ジョブとしてスケジュールします。 |
||
SQL*Plusスクリプトを作成します。その後、このスクリプトを実行すると、SQLチューニング・アドバイザによる一連のリコメンデーションを実装できます。 |
||
共有SQL領域からSQL文を収集します。 |
||
1つ以上のトレース・ファイルの内容を読み取り、検出したSQL文を |
||
SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。 |
||
既存のSQLチューニング・セットからSQL文を収集します。 |
||
ワークロード・リポジトリからSQL文を収集します。 |
||
|
||
SQLテキストのシグネチャを戻します。 |
||
ステージング表に格納されたプロファイル・データを使用して、システムでプロファイルを作成します。 |
||
ステージング表から1つ以上のSQLチューニング・セットを移動します。 |
||
SQLチューニング・セットのSQL文の選択されているフィールドを更新します。 |
183.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);
パラメータ
表183-8 ACCEPT_ALL_SQL_PROFILESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・タスクの名前(必須)。 |
|
これはカテゴリ名で、このSQLプロファイルを使用するセッションに対するセッションの |
|
これは、プロファイルがすでに存在する場合にこの引数を |
|
|
|
オプション:
|
|
自動SQLチューニングの時間。この設定は、自動SQLチューニング・アドバイザ・タスクにのみ適用されます。次の値があります。
このプロシージャは、その他の値を直近のタスク実行からこの引数の値を引いた時間として解釈します。 |
|
使用するタスク実行の名前。NULLの場合、このプロシージャは、直近のタスク実行のレポートを生成します。 |
|
チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。 |
|
SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
セキュリティ・モデル
ADMINISTER SQL MANAGEMENT OBJECT
権限が必要です。CREATE ANY SQL PROFILE
権限は非推奨になりました。
183.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;
パラメータ
表183-9 ACCEPT_SQL_PROFILEプロシージャおよびファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・タスクの名前(必須)。 |
|
チューニング・タスクに関連付けられたSQL文を示すアドバイザ・フレームワーク・オブジェクトの識別子。 |
|
SQLプロファイルの名前。二重引用符を含むことはできません。この名前は大文字と小文字を区別します。指定しない場合は、システムによってSQLプロファイルに一意の名前が生成されます。 |
|
SQLプロファイルの目的を記述したユーザー指定の文字列。256文字を超える場合は切り捨てられます。最大サイズは500文字です。 |
|
カテゴリ名。この名前は、このSQLプロファイルを使用するセッションに対するセッションの |
|
チューニング・タスクの所有者。これはオプションのパラメータで、他のユーザーが所有するチューニング・タスクに関連付けられているSQLプロファイルを受け入れるためには指定する必要があります。現行のユーザーがデフォルト値です。 |
|
これは、プロファイルがすでに存在する場合にこの引数を |
|
|
|
オプション:
|
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
戻り値
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);
183.5.3 ADD_SQLSET_REFERENCEファンクション
このプロシージャは、新しい参照を既存のSQLチューニング・セットに追加して、クライアントによるその使用状況を示します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.ADD_SQLSET_REFERENCE (
sqlset_name IN VARCHAR2,
description IN VARCHAR2 := NULL)
RETURN NUMBER;
パラメータ
パラメータはDBMS_SQLTUNE.ADD_SQLSET_REFERENCE
およびDBMS_SQLSET.ADD_REFERENCE
の場合と同じです。
表183-10 ADD_SQLSET_REFERENCEおよびADD_REFERENCEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します。 |
|
SQLチューニング・セットの使用方法の説明(オプション)を入力します。 256文字を超える場合は切り捨てられます。 |
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
戻り値
追加した参照の識別子。
例
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');
DBA_SQLSET_REFERENCES
ビューを使用して、特定のSQLチューニング・セットに関するすべての参照を確認できます。
183.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);
パラメータ
表183-11 ALTER_SQL_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更する既存のSQLプロファイルの名前(必須)。 |
|
有効な属性名を使用して変更する属性の名前(必須)。大文字と小文字は区別されません。 |
|
有効な属性値を使用した新しい属性の値(必須)。 |
使用上のノート
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');
183.5.5 CANCEL_TUNING_TASKプロシージャ
このプロシージャは、現在実行中のチューニング・タスクを取り消します。すべての中間結果データは削除されます。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.CANCEL_TUNING_TASK (
task_name IN VARCHAR2);
パラメータ
表183-12 CANCEL_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
取り消すタスクの名前を指定します。 |
例
タスクの取消しは、タスクの実行を停止し、実行済結果の確認が不要な場合に行います。
EXEC DBMS_SQLTUNE.CANCEL_TUNING_TASK(:my_task);
183.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);
パラメータ
パラメータはDBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET
およびDBMS_SQLSET.CAPTURE_CURSOR_CACHE
の場合と同じです。
表183-13 CAPTURE_CURSOR_CACHE_SQLSETおよびCAPTURE_CURSOR_CACHEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します |
|
実行する合計時間(秒)を定義します。 |
|
サンプリングの実行間隔(秒)を定義します。 |
|
新しい文の挿入、既存の文の更新またはその両方のいずれかを指定します。 値は、 |
|
取得モード(
|
|
各サンプルの共有SQL領域に適用するフィルタを定義します。
|
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
|
SQLチューニング・セットに再帰的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');
183.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);
パラメータ
表183-14 CREATE_SQL_PLAN_BASELINEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スクリプトを取得するタスクの名前。 |
|
SQLが対応するオブジェクトID。 |
|
計画ベースラインを作成する計画。 |
|
関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
183.5.8 CREATE_SQLSETプロシージャおよびファンクション
このプロシージャまたはファンクションは、データベース内に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;
パラメータ
表183-15 CREATE_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成するSQLチューニング・セットの名前を指定します。この名前はファンクションに渡される名前です。ファンクションに名前が渡されない場合、ファンクションは自動名を生成します。 |
|
SQLチューニング・セットの説明(オプション)を入力します。 |
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
例
EXEC DBMS_SQLTUNE.CREATE_SQLSET(-
sqlset_name => 'my_workload', -
description => 'complete application workload');
183.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);
パラメータ
表183-16 CREATE_STGTAB_SQLPROFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。 |
|
作成する表を格納するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合は |
|
ステージング表を格納する表領域(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のユーザーのデフォルト表領域の場合は |
使用上のノート
-
このプロシージャは、PACK_STGTAB_SQLPROFプロシージャへのコールを発行する前に、1回コールします。
-
異なるSQLプロファイルを異なるステージング表に配置する場合は、このプロシージャを複数回コールできます。
-
これはDDL操作であるため、トランザクション内では実行されません。
例
別のシステムに移動可能なプロファイル・データを格納するステージング表を作成します。
EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLPROF (table_name => 'PROFILE_STGTAB');
183.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);
パラメータ
表183-17 CREATE_STGTAB_SQLSETおよびCREATE_STGTABプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成する表の名前を指定します。この名前は大文字と小文字を区別します。 |
|
作成する表を格納するスキーマを定義します。現行のスキーマの場合は |
|
ステージング表を格納する表領域を指定します。現行ユーザーのデフォルト表領域の場合は |
|
ステージング表の形式を決定するデータベース・バージョンを指定します。 また、古いデータベース・バージョンのステージング表を作成して、STSを古いデータベース・バージョンにエクスポートすることもできます。以下の値のいずれかを使用します。
|
セキュリティ・モデル
指定されたスキーマおよび表領域に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;
183.5.11 CREATE_TUNING_TASKファンクション
このファンクションは、SQLチューニング・アドバイザ・タスクを作成します。
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
このファンクションを様々な形式で使用して次の操作ができます。
-
テキストを指定して、単一の文に対するチューニング・タスクを作成する。
-
識別子を指定して、共有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;
パラメータ
表183-18 CREATE_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQL文のテキストを指定します。 |
|
開始スナップショット識別子を指定します。 |
|
終了スナップショット識別子を指定します。 |
|
SQL文の識別子を指定します。 |
|
ノート: このパラメータは、スタンバイ・データベースではサポートされていません。 |
|
SQL実行計画のハッシュ値を指定します。 |
|
SQLチューニング・セットの名前を指定します |
|
SQLチューニング・セットからSQLをフィルタするために使用する述語を指定します。 |
|
オブジェクト・フィルタを指定します。 |
|
選択したSQL文に |
|
ランキング・メジャーの合計のパーセントを指定します。 |
|
フィルタ処理またはランク付けが済んでいるSQLの先頭から数件取得されるSQL文を指定します。 |
|
チューニング対象の文があるユーザーの名前を指定します。 |
|
次のようにして、チューニング・スコープを指定します。
|
|
チューニング・セッションの最大継続時間(秒)を指定します。 |
|
チューニング・タスク名(オプション)を指定します。 |
|
SQLチューニング・セッションの説明(最大256文字)を入力します。 |
|
計画フィルタを指定します。同じ文に関連付けられている計画(
|
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
|
パフォーマンスの低下をチューニングする必要があるSQLパフォーマンス・アナライザ・タスクの名前を指定します。 |
|
指定したSQLパフォーマンス・アナライザ・タスクの所有者を指定します。現行のユーザーの場合は |
|
SQLパフォーマンス・アナライザ・タスクのパフォーマンス比較試行の実行名を指定します。 |
dbid |
インポート済またはPDBレベルのAWRデータのDBIDを指定します。 |
|
チューニング・タスクのコンテナを指定します。セマンティクスはファンクションの形式によって、次のように異なります。
すべてのファンクション形式で、次のことが当てはまります。
|
database_link_to |
このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
戻り値
ユーザーごとに一意のSQLチューニング・タスク名(2人の異なるユーザーが自分のアドバイザ・タスクに同じ名前を付けることはできます)。
使用上のノート
SQLチューニング・セットを使用するこのサブプログラムの形式に関して、このファンクションで提供されるフィルタは、現行のユーザーが実行するSQLの一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。
例183-1 例
次の例では、次の変数定義を前提としています。
VARIABLE stmt_task VARCHAR2(64);
VARIABLE sts_task VARCHAR2(64);
VARIABLE spa_tune_task VARCHAR2(64);
例183-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'')');
例183-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);
例183-4 AWRスナップショット形式を使用したチューニング・タスクの作成
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(begin_snap => 1, -
end_snap => 2, sql_id => 'ay1m3ssvtrh24');
例183-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');
例183-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');
例183-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');
183.5.12 DELETE_SQLSETプロシージャ
このプロシージャは、SQL文のセットをSQLチューニング・セットから削除します。
構文
DBMS_SQLTUNE.DELETE_SQLSET (
sqlset_name IN VARCHAR2,
basic_filter IN VARCHAR2 := NULL,
sqlset_owner IN VARCHAR2 := NULL);
パラメータ
表183-19 DELETE_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します。 |
|
SQLチューニング・セットからSQLをフィルタするためのSQL述語を指定します。この基本フィルタはSQLチューニング・セットのコンテンツ上でwhere句として使用され、目的のSQLのサブセットをSQLチューニング・セットから選択します。 |
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
例
-- 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');
183.5.13 DROP_SQL_PROFILEプロシージャ
このプロシージャは、データベースから名前付きSQLプロファイルを削除します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLプロファイル・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.DROP_SQL_PROFILE (
name IN VARCHAR2,
ignore IN BOOLEAN := FALSE);
パラメータ
表183-20 DROP_SQL_PROFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するSQLプロファイルの名前(必須)。この名前は大文字と小文字を区別します。 |
|
オブジェクトが存在しないために起こるエラーは無視されます。 |
使用上のノート
DROP ANY SQL PROFILE
権限が必要です。
例
-- Drop the profile:
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE(:pname);
183.5.14 DROP_SQLSETプロシージャ
このプロシージャは、SQLチューニング・セットがアクティブでない場合はそれを削除します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.DROP_SQLSET (
sqlset_name IN VARCHAR2,
sqlset_owner IN VARCHAR2 := NULL);
パラメータ
表183-21 DROP_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します。 |
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
使用上のノート
SQLチューニング・セットは、1つ以上のクライアントが参照している場合は削除できません。
例
-- Drop the sqlset.
EXEC DBMS_SQLTUNE.DROP_SQLSET ('my_workload');
183.5.15 DROP_TUNING_TASKプロシージャ
このプロシージャは、SQLチューニング・タスクを削除します。タスクおよびすべての結果データは削除されます。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.DROP_TUNING_TASK (
task_name IN VARCHAR2);
パラメータ
表183-22 DROP_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するチューニング・タスクの名前を指定します。 |
183.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);
パラメータ
表183-23 EXECUTE_TUNING_TASKファンクションおよびプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
実行するチューニング・タスクの名前。 |
|
実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。 |
|
指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。 |
|
実行について説明する256文字の長さの文字列。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
使用上のノート
チューニング・タスクは、リセットせずに複数回実行できます。
例
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);
183.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);
パラメータ
表183-24 IMPLEMENT_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リコメンデーションを実装するチューニング・タスクの名前。 |
|
実装するリコメンデーションのタイプをフィルタします。現在は' |
|
関連するチューニング・タスクの所有者。現行のユーザーの場合は |
|
使用するタスク実行の名前。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
183.5.18 INTERRUPT_TUNING_TASKプロシージャ
このプロシージャは、現在実行中のチューニング・タスクを中断します。このタスクは、通常の終了と同様に操作を終了するため、ユーザーは中間結果にアクセスできます。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.INTERRUPT_TUNING_TASK (
task_name IN VARCHAR2);
パラメータ
表183-25 INTERRUPT_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
中断するチューニング・タスクの名前。 |
例
EXEC DBMS_SQLTUNE.INTERRUPT_TUNING_TASK(:my_task);
183.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);
パラメータ
表183-26 LOAD_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ロードするSQLチューニング・セットの名前を指定します。 |
|
ロードするSQLチューニング・セットへのカーソル参照を指定します。 |
|
SQLチューニング・セットにロードする文を指定します。有効な値は、次のとおりです。
|
|
既存のSQL文の更新方法を指定します。 このパラメータは、
|
|
更新を実行するタイミングを指定します。 このプロシージャは、指定した条件が満たされている場合にのみ更新を実行します。条件によって、データのソースまたは宛先のいずれかを参照できます。条件では、次の接頭辞を使用してソースまたは宛先の属性を参照する必要があります。
|
|
マージまたは更新時に更新するSQL文の属性のリストを指定します。 有効な値は、次のとおりです。
|
|
新しい値が
|
|
DML後に文をコミットするかどうかを指定します。 値が指定されている場合、指定された数の文が挿入されるたびにロードがコミットされます。 この引数に値を指定すると、SQLチューニング・セットのロード操作の進行状況を |
|
SQLチューニング・セットの所有者または現行のスキーマ所有者を定義します。現行の所有者の場合は |
例外
-
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;
/
183.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);
パラメータ
表183-27 PACK_STGTAB_SQLPROFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
パックするプロファイルの名前(%ワイルドカードを使用可、大/小文字区別)。 |
|
パックするプロファイルのカテゴリ(%ワイルドカードを使用可、大/小文字区別)。 |
|
使用する表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須。 |
|
表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合は |
セキュリティ・モデル
このプロシージャを実行するには、ステージング表に対する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');
183.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;
183.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);
パラメータ
表183-28 REMAP_STGTAB_SQLPROFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再マップ操作の対象となるプロファイルの名前(大/小文字区別)。 |
|
プロファイルの新しい名前(大/小文字区別)。変更しない場合は |
|
プロファイルの新しいカテゴリ(大/小文字区別)。変更しない場合は |
|
再マップ操作を行う表の名前(大/小文字区別)。必須。 |
|
表が存在するスキーマ(大/小文字区別)。現行のスキーマの場合は |
セキュリティ・モデル
このプロシージャには、ステージング表に対する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;
183.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プロシージャの場合と同じです。
表183-29 REMAP_STGTAB_SQLSETおよびREMAP_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再マップ操作の対象となるチューニング・セットの名前を指定します。ワイルドカード文字( |
|
再マップ操作の対象となるチューニング・セット所有者の名前を指定します。現行のスキーマ所有者の場合は |
|
チューニング・セットの新しい名前を指定します。チューニング・セット名を変更しない場合は |
|
チューニング・セットの新しい所有者を指定します。所有者を変更しない場合は |
|
再マップ操作を行う表の名前を指定します。値では大文字と小文字が区別されます。 |
|
ステージング表の所有者の名前を指定します。現行のスキーマ所有者の場合は |
|
新しいコンテナDBIDに再マップされる古いコンテナDBIDを指定します。 同じコンテナDBIDを使用するには |
|
古いコンテナDBIDと置き換える新しいコンテナDBIDを指定します。 同じコンテナ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;
183.5.24 REMOVE_SQLSET_REFERENCEプロシージャ
このプロシージャは、SQLチューニング・セットを非アクティブ化し、このSQLチューニング・セットをクライアントが使用していないことを示します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE (
sqlset_name IN VARCHAR2,
reference_id IN NUMBER,
sqlset_owner IN VARCHAR2 := NULL,
force_remove IN NUMBER := 0);
パラメータ
パラメータはDBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE
およびDBMS_SQLSET.REMOVE_REFERENCE
プロシージャの場合と同じです。
表183-30 REMOVE_SQLSET_REFERENCEおよびREMOVE_REFERENCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します。 |
|
削除する参照の識別子を指定します。 |
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
|
他のユーザーの参照を削除できるか( このパラメータを |
例
特定のSQLチューニング・セットの使用を終了した後、そのSQLチューニング・セットに関する参照を削除して、再度書込み可能にすることができます。次の例では、my_workload
への参照を削除します。
EXEC DBMS_SQLTUNE.REMOVE_SQLSET_REFERENCE( -
sqlset_name => 'my_workload', -
reference_id => :rid,
sqlset_owner => NULL,
force_remove => 0);
特定のSQLチューニング・セットへのすべての参照を確認するには、DBA_SQLSET_REFERENCES
ビューを問い合せます。
183.5.25 REPORT_AUTO_TUNING_TASKファンクション
このファンクションは、自動チューニング・タスクによるレポートを表示します。
このファンクションは、一定範囲のタスク実行についてレポートし、REPORT_TUNING_TASKファンクションは単一の実行についてレポートします。このファンクションは、DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK
が優先されるOracle Database 11gリリース2(11.2)では非推奨となっています。
参照:
-
このグループの他のサブプログラムについては、「DBMS_SQLTUNE 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)
RETURN CLOB;
パラメータ
表183-31 REPORT_AUTO_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートを開始する実行の名前を指定します。 |
|
レポートを終了する実行の名前を指定します。 |
|
作成するレポートのタイプを指定します。設定可能な値は、テキストのレポートを作成する |
|
レポートの詳細レベルを指定します。
|
|
レポートを単一のセクションに制限します(すべてのセクションに関するレポートの場合は、
|
|
レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのIDを指定します。すべての文を表す場合は、 |
|
レポートに表示されるSQL文の最大数を指定します。 |
戻り値
必要なレポートが含まれているCLOB
。
183.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;
パラメータ
表183-32 REPORT_SQL_DETAILファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
監視情報を表示する対象のSQLID。 |
|
特定の |
|
指定すると、この時刻に開始されるSQLアクティビティを( |
|
レポートに対するアクティビティの継続時間(秒)。 |
|
SQLの詳細を取得するターゲット・インスタンス。 |
|
SQLの詳細を取得するDBID。 |
|
|
|
指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。指定しない場合は、128の値が使用されます。 |
|
指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、 |
|
最上位のディメンション・セクションにディメンションごとに表示するエントリの数を制御します。指定しない場合は、デフォルト値の10が使用されます。 |
|
レポートの詳細なレベル( また、レポートの個々のセクションは、+/-
また、SQLテキストは異なるレベルで指定できます。
3つのトップ・レベルのレポート・レベルの意味は次のとおりです。
これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、 |
|
レポート形式: デフォルトは |
|
次のいずれかの値に基づいてSQLデータのデータ・ソースを決定します。
|
|
指定した場合、 |
|
レポートに関するAWR (時間単位)の追加SQL時間統計の期間。 |
|
マルチテナント・コンテナ・データベース(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
-
183.5.27 REPORT_SQL_HISTORYファンクション
このファンクションは、ユーザーが必要な表示権限を持っている場合に、指定された実行の問合せ履歴詳細レポートを生成します。
構文
DBMS_SQLTUNE.REPORT_SQL_HISTORY(
sql_id IN varchar2 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,
instance_id_filter IN number default NULL,
base_path IN varchar2 default NULL,
report_level IN varchar2 default 'TYPIC
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;
パラメータ
表183-33 REPORT_SQL_HISTORYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
実行対象のSQL ID。 |
|
実行処理が実行されたセッションのID。 |
|
実行処理が実行されたセッションのシリアル番号。 |
|
SQLの実行開始時間。 |
|
SQLの実行ID。 |
|
SQLが実行されたインスタンスID。 |
|
ベース・パスのURL。 |
|
レポート・レベル: 'NONE'、'BASIC'、'TYPICAL'または'ALL'。 |
|
レポート・タイプ: 'TEXT'、'HTML'、'XML'または'ACTIVE'。 |
|
SQL実行の計画ハッシュ値。 |
|
PDBコンテナ名。 |
report_id |
自動レポート・リポジトリ内のレポートのID。 |
183.5.28 REPORT_SQL_HISTORY_LISTファンクション
このファンクションは、指定されたユーザー・セッションにおけるすべての実行、または権限を持つユーザー(SYSユーザーまたはDBA権限を持つユーザー)のセッションにわたるすべての実行の問合せ履歴リスト・レポートを生成します。
構文
FUNCTION DBMS_SQLTUNE.REPORT_SQL_HISTORY_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,
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',
base_path IN varchar2 default NULL,
type IN varchar2 default 'TEXT',
con_name IN varchar2 default NULL)
RETURN CLOB;
パラメータ
表183-34 REPORT_SQL_HISTORY_LISTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
フィルタするSQL ID。 |
|
フィルタするセッションID。 |
|
フィルタするセッション・シリアル番号。 |
|
データベース・インスタンスID。 |
|
表示するSQLテキストの最大長。 |
|
上位N個のSQL文の履歴。 |
|
最終アクティブ時間でランク付けします。 |
|
レポート・レベル: 'NONE'、'BASIC'、'TYPICAL'または'ALL'。 |
|
ベース・パスのURL。 |
type |
レポート・タイプ: 'TEXT'、'HTML'、'XML'または'ACTIVE'。 |
con_name |
PDBコンテナ名。 |
183.5.29 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;
パラメータ
表183-35 REPORT_SQL_MONITORファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
監視情報を表示する対象の |
|
コンポジット・データベース操作の監視情報を表示する対象の |
|
監視情報の表示対象であるコンポジット・データベース操作の実行ID。 |
|
|
|
|
|
このパラメータは、 |
|
このパラメータは、 |
|
指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、 |
|
|
|
|
|
複数のOracle Real Application Clusters(Oracle RAC)インスタンスにわたってパラレル実行が行われた場合にのみ適用されます。このパラメータを使用すると、指定したインスタンスのアクティビティのみをレポートできます。パラレル問合せが実行されたすべてのインスタンスに関するアクティビティを含めるには、 |
|
パラレル実行にのみ適用され、パラレル実行に関連する処理(問合せコーディネータまたはパラレル実行サーバー、あるいはその両方)のサブセットのみのアクティビティを報告できるようにします。このパラメータの値は、次のいずれかになります。
次の例では、パラレル処理のサブセットを対象とする方法を示します。
|
|
値が' |
|
指定すると、レポートで作成されるヒストグラム・バケットの最大数になります。 |
|
指定すると、すべてのヒストグラム・バケットの正確な時間間隔(秒)を表します。指定すると、 |
|
外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするためにフレックスHTML形式が必要なため、フレックスHTMLリソースのURLパス。 |
|
|
|
レポートの詳細なレベル( また、レポートの個々のセクションは、+/-
また、SQLテキストは異なるレベルで指定できます。
|
|
3つのトップ・レベルのレポート・レベルの意味は次のとおりです。
これら4つのレベルのうち1レベルのみを指定でき、指定する場合は、 |
|
レポート形式で、デフォルトは |
|
指定した |
|
マルチテナント・コンテナ・データベース(CDB)の名前。 |
|
自動レポート・リポジトリ内のレポートのID。レポートIDは、 |
戻り値
必要なレポートが含まれているCLOB
。
使用上のノート
-
このレポートの対象となるSQL文の特徴を次に示します。
-
Oracle Databaseによって監視された最後のSQL文。これはデフォルト動作であるため、パラメータを指定する必要はありません。
-
特定のセッションで実行され、さらにOracleで監視された最後のSQL文。セッションは、セッションID、および必要に応じてシリアル番号によって識別されます。たとえば、現行のセッションに対しては
session_id =>
を使用し、セッションID 20、シリアル番号103に対してはsession_id => 20, session_serial => 103
を使用します。 -
sql_id
で識別された特定の文の最新の実行。 -
実行キー(
sql_id
、sql_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チューニング・ガイド』を参照してください。
183.5.30 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;
パラメータ
表183-36 REPORT_SQL_MONITOR_LISTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
監視情報を表示する対象の |
|
|
|
|
|
指定したインスタンスで開始された文のみを対象とします。ログイン・インスタンスを対象とする場合は、-1を使用します。すべてのインスタンスを対象とする場合は、 |
|
|
|
|
|
|
|
|
|
DB操作名。監視対象のDB操作をすべて表示するには、 |
|
SQL監視操作のタイプ。次のいずれかの値を指定します。
|
|
SQLテキストの最大長。デフォルトは |
|
レポートに含める必要がある上位N番までのSQL文の数を制限します。 |
|
SQL文をランク付けするための属性を指定します。
|
|
レポートの詳細なレベル。レベルは、次のいずれかになります。
|
|
現在は実行できず、将来使用するために予約されています。 |
|
フレックスHTMLリソースのURLパス。これが必要な理由は、外部ファイル(JavaスクリプトおよびフラッシュSWFファイル自体)にアクセスするにはフレックスHTML形式が必要なためです。 |
|
レポート形式の |
|
マルチテナント・コンテナ・データベース(CDB)の名前 |
|
SQL監視の詳細をレポートに含める必要がある上位N番までのSQL文の数を制限します。 |
戻り値
監視されているSQL文のリストに対するレポート。レポート・タイプは、テキスト、XMLまたはHTMLです。
使用上のノート
固定ビューGV$SQL_MONITOR
およびGV$SQL
にアクセスする権限を持っている必要があります。
参照:
リアルタイムSQL監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。
183.5.31 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;
パラメータ
表183-37 REPORT_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
チューニング・タスクの名前。 |
|
作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成する |
|
レポートの詳細なレベル。
|
|
含めるレポートのセクション。 レポートを次のいずれかの単一セクションに制限できます(すべてのセクションに関するレポートの場合は、
|
|
レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、 |
|
レポートに表示されるSQL文の最大数。 |
|
関連するチューニング・タスクの所有者。デフォルトは現在のスキーマ所有者です。 |
|
使用するタスク実行の名前。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
戻り値
必要なレポートが含まれている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;
183.5.32 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;
パラメータ
表183-38 REPORT_TUNING_TASK_XMLファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
チューニング・タスクの名前。 |
|
レポートの詳細なレベル。
|
|
含めるレポートのセクション。 レポートを次のいずれかの単一セクションに制限できます(すべてのセクションに関するレポートの場合は、
|
|
レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、 |
|
レポート生成の対象となる、SQLチューニング・セットまたはスナップショット範囲内の文の数。デフォルトは160 (20文* 8カテゴリ)です。カテゴリは次のとおりです。
|
|
関連するチューニング・タスクの所有者。デフォルトは現在のスキーマ所有者です。 |
|
使用するタスク実行の名前。 |
|
自動SQLチューニングの時間。この設定は、自動SQLチューニング・アドバイザ・タスクにのみ適用されます。次の値があります。
このプロシージャは、その他の値を直近のタスク実行からこの引数の値を引いた時間として解釈します。 |
|
ルートXMLタグの名前。デフォルトでは、このタグは、レポート・フレームワークにより生成されたレポート参照です。 |
戻り値
必要なレポートが含まれているCLOB
。
183.5.33 RESET_TUNING_TASKプロシージャ
このプロシージャは、現在実行されていないチューニング・タスクに対してコールされ、そのチューニング・タスクを再実行できるように準備します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.RESET_TUNING_TASK(
task_name IN VARCHAR2);
パラメータ
表183-39 RESET_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リセットするチューニング・タスクの名前。 |
例
-- 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);
183.5.34 RESUME_TUNING_TASKプロシージャ
このプロシージャは、SQLチューニング・セットを処理するために作成され、以前に中断されたタスクを再開します。
参照:
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・アドバイザ・サブプログラム」を参照してください。
構文
DBMS_SQLTUNE.RESUME_TUNING_TASK(
task_name IN VARCHAR2,
basic_filter IN VARCHAR2 := NULL);
パラメータ
表183-40 RESUME_TUNING_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再開するチューニング・タスクの名前。 |
|
SQLチューニング・セットからSQLをフィルタするためのSQL述語。このフィルタは、CREATE_TUNING_TASKファンクションのコール時に、パラメータ |
使用上のノート
単一の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);
183.5.35 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;
パラメータ
表183-41 SCHEDULE_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
開始スナップショット識別子。範囲は排他的です。つまり、このスナップショットIDのSQL文は含まれません。 |
|
終了スナップショット識別子。範囲は包括的です。つまり、このスナップショットIDのSQL文は含まれます。 |
|
チューニングされる文のSQL ID。 |
|
チューニングされる文の計画ハッシュ値。たとえば、チューニング・ジョブは、このSQL計画に対して取得されたバインドをフェッチします。 |
|
スケジュールが有効になる日付。NULLの場合、SQLチューニング・アドバイザはすぐにタスクを実行します。 |
|
チューニング・ジョブのスコープ: 制限付きまたは包括的。 |
|
SQLチューニング・セッションの最大継続時間(秒)。 |
|
SQLチューニング・タスク名(オプション)。 |
|
SQLチューニング・セッションの説明。説明は、最大256文字です。 |
|
SQLチューニング・アドバイザがSQL文の情報にアクセスする際のアクセス元のコンテナ。 |
|
インポート済またはPDBレベルのAWRデータに使用されるDBID。 |
セキュリティ・モデル
コール元には、ジョブに対するCREATE JOB
権限が必要です。
戻り値
各ユーザーに一意であるSQLチューニング・タスク名。複数のユーザーがアドバイザ・タスクに同じ名前を割り当てることができます。
使用上のノート
-
タスクをスケジュールできるのは1回のみです。
-
スケジューラ・ジョブの名前は次のように作成されます。
sqltune_job_taskid_orahash(systimestamp)
。
183.5.36 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;
パラメータ
表183-42 SCRIPT_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
スクリプトを適用するチューニング・タスクの名前。 |
|
対象とするリコメンデーションのタイプで、スクリプトをフィルタします。値 |
|
1つのオブジェクトIDでフィルタします(オプション)。 |
|
オプションで上位N番のSQLのみに対してコマンドを示します(順序は |
|
関連するチューニング・タスクの所有者。デフォルトは、現行のスキーマ所有者です。 |
|
使用するタスク実行の名前。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
戻り値
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;
183.5.37 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;
パラメータ
表183-43 SELECT_CURSOR_CACHEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
現在はサポートされていません。 |
|
選択したSQLに |
|
提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。 この値は、1つのランキング・メジャーが指定されている場合にのみ適用されます。 |
|
ランキング・メジャーでランク付けしたフィルタ済のソースの先頭から数件取得されるSQL文を定義します。 |
|
結果として戻すSQL文の属性リストを指定します。 使用可能な値は次のとおりです。
|
|
SQLチューニング・セットに再帰的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;
/
183.5.38 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;
パラメータ
表183-44 SELECT_SQL_TRACEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
トレース・ファイルを含むディレクトリ・オブジェクトを定義します。このフィールドは必須です。 |
|
トレース・ファイルの名前の全体または一部を指定します。
|
|
マッピング表名を指定します。 マッピング表名は大/小文字が区別されないことに注意してください。マッピング表名が |
|
マッピング表の所有者を指定します。
|
|
トレースからSQLを選択するためのモードを指定します。 使用可能な値は次のとおりです。
|
|
戻されるSQL文のタイプを指定します。
|
|
対象とするトレース・ファイル・セクションの区切りパターンを指定します。現在使用できません。 |
|
処理するトレース・ファイル・セクションの終了区切りパターンを指定します。現在使用できません。 |
|
除外されたソースの上位SQLを指定します。 |
戻り値
このファンクションは、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言語リファレンスを参照してください。
183.5.39 SELECT_SQLPA_TASKファンクション
このファンクションは、SQLパフォーマンス・アナライザの比較タスクからSQL文を収集します。
参照:
-
このグループの他のサブプログラムについては、「DBMS_SQLTUNE SQLチューニング・セット・サブプログラム」を参照してください。
-
SELECT_SQLPA_TASK
の例については、『Oracle Database Testingガイド』を参照してください。
構文
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;
パラメータ
表183-45 SELECT_SQLPA_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQLパフォーマンス・アナライザ・タスクの名前を指定します。 |
|
SQLパフォーマンス・アナライザ・タスクの所有者を指定します。 |
|
指定したフィルタの適用元になるSQLパフォーマンス・アナライザ・タスクの実行の名前(タイプ |
|
SQL文のどのサブセットを含めるかを指定します。
|
|
レベル・フィルタに加えてSQLをフィルタするためのSQL述語を指定します。 |
|
現在はサポートされていません。 |
|
結果として戻すSQL文の属性を定義します。 使用可能な値は次のとおりです。
|
戻り値
このファンクションは、SQLチューニング・セット・オブジェクトを戻します。
使用上のノート
たとえば、このファンクションを使用して、SQLパフォーマンス・アナライザ(SPA)の試用中に低下したSQL文のサブセットを含むSQLチューニング・セットを作成できます。また、他の任意のフィルタを指定することもできます。
183.5.40 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;
パラメータ
表183-46 SELECT_SQLSETファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
問い合せるSQLチューニング・セットの名前を指定します。 |
|
|
|
現在はサポートされていません。 |
|
選択したSQLに |
|
提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。 このパラメータは、1つのランキング・メジャーが指定されている場合にのみ適用されます。 |
|
ランキング・メジャーでランク付けしたフィルタ済のソースの先頭から数件取得されるSQL文。 |
|
結果として戻すSQL文の属性を定義します。 有効な値は、次のとおりです。
|
|
計画フィルタを指定します。 このパラメータにより、文に複数の計画がある場合に1つの計画を選択できます。使用可能な値は次のとおりです。
|
|
SQLチューニング・セットの所有者を指定します。現行のスキーマ所有者の場合は |
|
SQLチューニング・セットに再帰的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;
/
183.5.41 SELECT_WORKLOAD_REPOSITORYファンクション
このファンクションは、ワークロード・リポジトリからSQL文を収集します。
オーバーロードされたフォームにより、次のソースからSQL文を収集できます。
-
begin_snap
とend_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;
パラメータ
表183-47 SELECT_WORKLOAD_REPOSITORYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
開始AWRスナップショット(この値を含めない)を定義します。 |
|
終了AWRスナップショット(この値を含む)を定義します。 |
|
AWRベースライン時間の名前を指定します。 |
|
ワークロード・リポジトリからSQLをフィルタするためのSQL述語を指定します。フィルタは
|
|
現在はサポートされていません。 |
|
選択したSQLに |
|
提供されたランキング・メジャーに応じて先頭のn%を選択するフィルタを指定します。このパーセンテージは、1つのランキング・メジャーが指定されている場合にのみ適用されます。 |
|
提供されたランキング・メジャーに応じてソースの先頭から数件取得されるSQL文を指定します。 |
|
結果として戻すSQL文の属性を指定します。有効な値は、次のとおりです。
|
|
SQLチューニング・セットに再帰的SQLを含めるフィルタ( |
|
インポート済またはPDBレベルのAWRデータの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;
/
183.5.42 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);
);
パラメータ
表183-48 SET_TUNING_TASK_PARAMETERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
実行するタスクの識別子。 |
|
設定するパラメータの名前。パラメータを
|
|
指定したパラメータの新しい値。 |
database_link_to |
スタンバイ・データベースに存在するデータベース・リンクの名前。 このリンクは、プライマリ・データベースへの接続を指定します。デフォルトの値はNULLで、SQLチューニング・アドバイザ・セッションはローカルです。 Active Data Guardシナリオにおいてスタンバイ・データベースで実行されている高負荷SQL文をチューニングするには、
|
使用上のノート
自動チューニング・タスクのパラメータを設定する場合、DBMS_AUTO_SQLTUNEパッケージのSET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用してください。
183.5.43 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;
パラメータ
表183-49 SQLTEXT_TO_SIGNATUREファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
シグネチャが必要なSQLテキスト。必須。 |
|
|
戻り値
このファンクションは、指定したSQLテキストのシグネチャを戻します。
183.5.44 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);
パラメータ
表183-50 UNPACK_STGTAB_SQLPROFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アンパックするプロファイルの名前( |
|
アンパックするプロファイルのカテゴリ( |
|
プロファイルがすでに存在する場合、そのプロファイルを置換するオプション。ステージング表にあるプロファイルが別のSQL文でアクティブなプロファイルと同じ名前の場合は、プロファイルを置換できないことに注意してください。 |
|
再マップ操作を行う表の名前(二重引用符で囲まれていないかぎり、大/小文字区別なし)。必須。 |
|
表が存在するスキーマ(二重引用符で囲まれていないかぎり、大/小文字区別なし)。現行のスキーマの場合は |
使用上のノート
このプロシージャを使用するには、ステージング表に対する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;
183.5.45 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
プロシージャの場合と同じです。
表183-51 UNPACK_STGTAB_SQLSETおよびUNPACK_STGTABプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アンパックするチューニング・セットの名前(NULL以外)を指定します。 ワイルドカード文字( |
|
チューニング・セットの所有者の名前を指定します。現行のスキーマ所有者の場合は |
|
既存のSQLチューニング・セットを置き換えるかどうかを指定します。 |
|
|
|
ステージング表の所有者の名前(大/小文字区別)を指定します。現行のスキーマ所有者の場合は |
例
-- 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');
183.5.46 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);
パラメータ
表183-52 UPDATE_SQLSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQLチューニング・セットの名前を指定します。 |
|
更新するSQL文の識別子を指定します。 |
|
SQL文の実行計画のハッシュ値を指定します。 このパラメータは、文のすべての計画ではなく、文の特定の計画の属性を更新する場合に使用します。 |
|
変更する属性の名前を指定します。
文に複数の計画がある場合、プロシージャはすべての計画の属性値を変更します。 |
|
属性の新しい値を指定します。 |