156 DBMS_SQLPA

DBMS_SQLPAパッケージは、SQLパフォーマンス・アナライザを実装するためのインタフェースを提供します。

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

156.1 DBMS_SQLPAの概要

DBMS_SQLPAパッケージは、システム環境の変更がSQLワークロードのパフォーマンスに与える影響をユーザーが予測する場合に役立つ機能を提供します。このインタフェースを使用すると、2つの異なるバージョンのワークロード・パフォーマンスを作成してから比較し、それらの2つのバージョンの違いを分析して、変更によって影響を受ける可能性があるSQL文を明らかにできます。

このパッケージは、SQLパフォーマンス・アナライザを実装するためのタスク指向のインタフェースを提供します。次に例を示します。

  1. CREATE_ANALYSIS_TASKファンクションを使用して、1つの文またはSQL文の集合に対する分析タスクを作成します。

  2. EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャを使用して、作成した分析タスクを実行します。

  3. REPORT_ANALYSIS_TASKファンクションを使用して、分析タスクの結果を表示します。

156.2 DBMS_SQLPAのセキュリティ・モデル

このパッケージは、PUBLICで使用可能で、独自のセキュリティ・チェックが実行されます。すべての分析タスク・インタフェース(XXX_ANALYSIS_TASK)にはADVISOR権限が必要です。

156.3 DBMS_SQLPAサブプログラムの要約

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

表156-1 DBMS_SQLPAパッケージのサブプログラム

サブプログラム 説明

CANCEL_ANALYSIS_TASKプロシージャ

1つ以上のSQL文に対して現在実行中の分析タスクを取り消します。

CREATE_ANALYSIS_TASKファンクション

1つ以上のSQL文を処理および分析するアドバイザ・タスクを作成します。

DROP_ANALYSIS_TASKプロシージャ

SQL分析タスクを削除します。

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

以前に作成した分析タスクを実行します。

INTERRUPT_ANALYSIS_TASKプロシージャ

現在実行中の分析タスクを中断します。

REPORT_ANALYSIS_TASKファンクション

分析タスクの結果を表示します。

RESET_ANALYSIS_TASKプロシージャ

現在実行中の分析タスクを初期状態にリセットします。

RESUME_ANALYSIS_TASKプロシージャ

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

SET_ANALYSIS_TASK_PARAMETERプロシージャ

SQL分析タスク・パラメータの値を設定します。

SET_ANALYSIS_DEFAULT_PARAMETERプロシージャ

SQL分析タスク・パラメータのデフォルト値を設定します。

156.3.1 CANCEL_ANALYSIS_TASKプロシージャ

このプロシージャは、現在実行中の分析タスクを取り消します。タスクから、すべての中間結果データが削除されます。

構文

DBMS_SQLPA.CANCEL_ANALYSIS_TASK(
 task_name         IN VARCHAR2);

パラメータ

表156-2 CANCEL_ANALYSIS_TASKプロシージャのパラメータ

パラメータ 説明

task_name

取り消すタスクの名前。

タスクの実行を停止する必要があり、実行済結果の確認が不要な場合のタスクの取消し

EXEC DBMS_SQLPA.CANCEL_ANALYSIS_TASK(:my_task);

156.3.2 CREATE_ANALYSIS_TASKファンクション

このファンクションは、1つ以上のSQL文を処理および分析するアドバイザ・タスクを作成します。

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

  • テキストを指定して、単一の文に対する分析タスクを作成する。

  • 識別子を指定して、カーソル・キャッシュ内の単一の文に対する分析タスクを作成する。

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

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

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

構文

SQLテキスト形式。この形式のファンクションは、テキストを指定して、単一の文の診断を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
  sql_text         IN CLOB,
  bind_list        IN sql_binds := NULL,
  parsing_schema   IN VARCHAR2  := NULL,
  task_name        IN VARCHAR2  := NULL,
  description      IN VARCHAR2  := NULL)
RETURN VARCHAR2;

SQL ID形式。この形式のファンクションは、識別子を指定して、カーソル・キャッシュ内の単一の文に対する分析を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
  sql_id           IN VARCHAR2,
  plan_hash_value  IN NUMBER    := NULL,
  task_name        IN VARCHAR2  := NULL,
  con_name         IN VARCHAR2     DEFAULT,
  description      IN VARCHAR2  := NULL)
RETURN VARCHAR2;

ワークロード・リポジトリ形式。この形式のファンクションは、スナップショット識別子の範囲を指定して、ワークロード・リポジトリ内の単一の文に対する分析を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
  dbid             IN NUMBER       DEFAULT,
  begin_snap       IN NUMBER,
  end_snap         IN NUMBER,
  sql_id           IN VARCHAR2,
  plan_hash_value  IN NUMBER    := NULL,
  task_name        IN VARCHAR2  := NULL,
  description      IN VARCHAR2  := NULL)
  con_name         IN VARCHAR2     DEFAULT,
RETURN VARCHAR2;

SQLSET形式。この形式のファンクションは、SQLチューニング・セットの診断を準備する場合にコールします。

DBMS_SQLPA.CREATE_ANALYSIS_TASK(
  sqlset_name       IN VARCHAR2,
  basic_filter      IN VARCHAR2 :=  NULL,
  con_name          IN VARCHAR2     DEFAULT,
  order_by          IN VARCHAR2 :=  NULL,
  top_sql           IN VARCHAR2 :=  NULL,
  task_name         IN VARCHAR2 :=  NULL,
  description       IN VARCHAR2 :=  NULL
  sqlset_owner      IN VARCHAR2 :=  NULL)
RETURN VARCHAR2;

パラメータ

表156-3 CREATE_ANALYSIS_TASKファンクションのパラメータ

パラメータ 説明

sql_text

SQL文のテキスト。

bind_list

バインド値のセット。

parsing_schema

文をコンパイルできるスキーマの名前。

task_name

分析タスク名(オプション)。

dbid

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

con_name

SPAタスクのコンテナ。セマンティクスはファンクションの形式によって、次のように異なります。

SQL ID形式の場合、このパラメータは、データベースがSPAで使用するSQL文を取得するコンテナを指定します。SPAはこのコンテナの文を分析します。Nullの場合、データベースはSPA分析に現在のPDBを使用します。

AWR形式の場合、このパラメータは、データベースがSPAで使用するSQL文を取得するAWRデータが含まれるコンテナを指定します。SPAはこのコンテナの文を分析します。Nullの場合、データベースはSPA分析に現在のPDBを使用します。

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

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

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

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

description

SQL分析タスクの説明(最大256文字)。

sql_id

SQL文の識別子。

plan_hash_value

SQL実行計画のハッシュ値。

begin_snap

開始スナップショット識別子

end_snap

終了スナップショット識別子

sqlset_name

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

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。

order_by

選択したSQLのorder-by句。

top_sql

フィルタ処理およびランク付け後のTop N SQL。

sqlset_owner

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

戻り値

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

variable stmt_task VARCHAR2(64);
variable sts_task  VARCHAR2(64);
 
-- Sql text format
EXEC :stmt_task := DBMS_SQLPA.CREATE_ANALYSIS_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_SQLPA.CREATE_ANALYSIS_TASK(
    sql_id       => 'ay1m3ssvtrh24');
 
-- Workload repository format
exec :stmt_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
    begin_snap  => 1, 
    end_snap    => 2, 
    sql_id      => 'ay1m3ssvtrh24');
 
-- Sql tuning set format (first we need to load an STS, then analyze it)
EXEC :sts_task := DBMS_SQLPA.CREATE_ANALYSIS_TASK( -
  sqlset_name    =>   'my_workload', -
  order_by       =>   'BUFFER_GETS', -
  description    =>   'process workload ordered by buffer gets'); 

156.3.3 DROP_ANALYSIS_TASKプロシージャ

このプロシージャは、SQL分析タスクを削除します。タスクとそのすべての結果データが削除されます。

構文

DBMS_SQLPA.DROP_ANALYSIS_TASK(
 task_name         IN VARCHAR2);

パラメータ

表156-4 DROP_ANALYSIS_TASKプロシージャのパラメータ

パラメータ 説明

task_name

削除する分析タスクの名前。

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

このファンクションおよびプロシージャは、以前に作成した分析タスクを実行します。ファンクション・バージョンは、新しい実行名を戻します。

構文

DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name         IN VARCHAR2,
   execution_type    IN VARCHAR2               := 'test execute',
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN dbms_advisor.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL)
 RETURN VARCHAR2;
DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name         IN VARCHAR2,
   execution_type    IN VARCHAR2               := 'test execute',
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN dbms_advisor.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL);

パラメータ

表156-5 EXECUTE_ANALYSIS_TASKファンクションおよびプロシージャのパラメータ

パラメータ 説明

task_name

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

execution_type

ファンクションで実行するアクションのタイプ。NULLの場合、デフォルト値はDEFAULT_EXECUTION_TYPEパラメータの値に設定されます。使用可能な値は次のとおりです。

  • [TEST] EXECUTE: すべてのSQL文をテスト実行し、実行計画および実行の統計情報を収集します。生成される計画および統計情報は、アドバイザ・フレームワークに格納されます。これがデフォルトです。

  • EXPLAIN PLAN: SQLワークロード内のすべての文に対してEXPLAIN PLANを生成します。これは、EXPLAIN PLANコマンドに類似しています。生成される計画は、タスクに関連付けられているアドバイザ・フレームワークに格納されます。

  • COMPARE [PERFORMANCE]: 2つのバージョンのSQLパフォーマンス・データを分析および比較します。パフォーマンス・データを生成するには、SQL文のテスト実行またはそのEXPLAIN PLANの生成を行います。このオプションは、2つの実行タイプEXPLAIN_PLANまたはTEST_EXECUTEが、タスクにすでに存在する場合に使用します。

  • CONVERT SQLSET: SQLチューニング・セットに取得されている統計情報を読み取り、タスク実行のモデルとして使用します。試用に対する有効なデータがすでにSQLチューニング・セットに存在する場合は、このオプションを使用してSQL文の実行を省略できます。

execution_name

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

execution_params

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

execution_desc

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

使用上のノート

SQLパフォーマンス・アナライザのタスクは、リセットせずに複数回実行できます。たとえば、SQLワークロードに対して変更の影響分析を実行するためにタスクが作成された場合は、システム環境を変更する前に、作成されたタスクを実行して、パフォーマンス分析の資料として使用されるワークロードのバージョンを構築する必要があります。変更が行われた後で、変更後バージョンのワークロードを構築するには、2回目の実行が必要になります。最後に、両方のバージョンのワークロードのパフォーマンスをアドバイザで分析および比較するために、タスクの3回目の実行が必要になります。

1. 変更の影響を分析する目的でのタスクの作成

EXEC :tname := DBMS_SQLPA.CREATE_ANALYSIS_TASK(
    sqlset_name     => 'my_sts');

2. ベースラインの作成または変更前の実行

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
    task_name       => :tname,
    execution_type  => 'test execute', 
    execution_name  => 'before_change');

3. 変更の実行

...

4. 変更後バージョンのワークロード・パフォーマンスの作成

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name          => :tname, -
   execution_type     => 'test execute',
   execution_name     => 'after_change')

5. 2つのバージョンのワークロードの比較

デフォルトでは、最後の2回の実行結果を常に比較します。SQLパフォーマンス・アナライザは、比較用のデフォルトのメトリックとしてelapsed_timeを使用します。ここでは、デフォルトのメトリックをbuffer_getsに変更しています。

EXEC DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
   :tname,'comparison_metric', 'buffer_gets');
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name         => :tname, -
   execution_type    => 'compare performance', - 
   execution_name    => 'after_change');

比較する2つの実行、および使用する比較メトリックを明示的に指定する場合は、次のコールを使用します。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(
   task_name        => :tname, -
   execution_type   => 'compare performance', 
   execution_params => dbms_advisor.arglist(
      'execution_name1', 
      'before_change', 
      'execution_name2', 
      'after_change',
      'comparison_metric', 
      'buffer_gets'));

156.3.5 INTERRUPT_ANALYSIS_TASKプロシージャ

このプロシージャは、現在実行中の分析タスクを中断します。タスクから、すべての中間結果データが削除されるわけではありません。

構文

DBMS_SQLPA.INTERRUPT_ANALYSIS_TASK(
   task_name         IN VARCHAR2);

パラメータ

表156-6 INTERRUPT_ANALYSIS_TASKプロシージャのパラメータ

パラメータ 説明

task_name

中断する分析タスクの識別子。

EXEC DBMS_SQLPA.INTERRUPT_ANALYSIS_TASK(:my_task);

156.3.6 REPORT_ANALYSIS_TASKファンクション

このプロシージャは、分析タスクの結果を表示します。

構文

DBMS_SQLPA.REPORT_ANALYSIS_TASK(
   task_name       IN   VARCHAR2,
   type            IN   VARCHAR2   := 'TEXT',
   level           IN   VARCHAR2   := 'TYPICAL',
   section         IN   VARCHAR2   := 'SUMMARY',
   object_id       IN   NUMBER     := NULL,
   top_sql         IN   NUMBER     := 100,
   execution_name  IN   VARCHAR2   := NULL,
   task_owner      IN   VARCHAR2   := NULL,
   order_by        IN   VARCHAR2   := NULL)
RETURN CLOB;

パラメータ

表156-7 REPORT_ANALYSIS_TASKファンクションのパラメータ

パラメータ 説明

task_name

レポートするタスクの名前。

type

作成するレポートのタイプ。設定可能な値は、TEXT(デフォルト)、HTMLXMLおよびACTIVEです(「使用上のノート」を参照)。

level

レポートの詳細なレベル。

  • ALL: すべてのSQLの詳細。

  • BASIC: 現時点ではTYPICALと同じ。

  • CHANGED: パフォーマンスが変更されたSQLのみ。

  • CHANGED_PLANS: 計画が変更されたSQLのみ。

  • ERRORS: エラーが発生したSQLのみ。

  • IMPROVED: 改善されたSQLのみ。

  • REGRESSED: 回帰されたSQLのみ。

  • TIMEOUT: 実行中にタイムアウトしたSQLのみ。

  • TYPICAL(デフォルト): 分析対象の各文に関する情報(変更やエラーなど)を表示します。

  • UNCHANGED: パフォーマンスが変更されていないSQLのみ。

  • UNCHANGED_PLANS: 計画が変更されていないSQLのみ。

  • UNSUPPORTED: SPAによってサポートされないSQLのみ。

section

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

  • SUMMARY(デフォルト): ワークロードのサマリーのみ。

  • ALL: SQLに関するサマリーおよび詳細。

object_id

チューニング・セット(STS)の特定のSQLを表すアドバイザ・フレームワーク・オブジェクトの識別子。

top_sql

レポート生成の対象となる、STS内のSQL文の数。

execution_name

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

task_owner

関連する分析タスクの所有者。デフォルトは、現行のスキーマ所有者です。

order_by

レポート(要約および本文)でSQL文をソートする方法。有効な値は、次のとおりです。

  • CHANGE_DIFF: 比較メトリックに基づいてSQLパフォーマンスの変更の差異によりSQL文をソート。

  • NULL(デフォルト): ワークロードに対する影響によりSQL文を順序付け。

  • SQL_IMPACT: SQLに対する変更の影響によりSQL文を順序付け。

  • WORKLOAD_IMPACT: NULLと同じ。

  • METRIC_DELTA: CHANGE_DIFFと同じ。

戻り値

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

使用上のノート

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

-- Get the whole report for the single statement case.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:stmt_task) from dual;
 
-- Show me the summary for the sts case.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:sts_task, 'TEXT', 'TYPICAL', 'SUMMARY')
FROM DUAL;
 
-- Show me the findings for the statement I'm interested in.
SELECT DBMS_SQLPA.REPORT_ANALYSIS_TASK(:sts_task, 'TEXT', 'TYPICAL', 'ALL', 5) from dual;

156.3.7 RESET_ANALYSIS_TASKプロシージャ

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

すべての中間結果データは削除されます。

構文

DBMS_SQLPA.RESET_ANALYSIS_TASK(
 task_name         IN VARCHAR2);

パラメータ

表156-8 RESET_ANALYSIS_TASKプロシージャのパラメータ

パラメータ 説明

task_name

リセットする分析タスクの識別子。

-- reset and re-execute a task
EXEC DBMS_SQLPA.RESET_ANALYSIS_TASK(:sts_task);
 
-- re-execute the task
EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(:sts_task);

156.3.8 RESUME_ANALYSIS_TASKプロシージャ

このプロシージャは、以前に中断されたか、または(致命的なエラーによって)FAILEDになったタスクの実行を再開します。

構文

DBMS_SQLPA.RESUME_ANALYSIS_TASK(
 task_name         IN VARCHAR2,
 basic_filter      IN VARCHAR2 := NULL);

パラメータ

表156-9 RESUME_ANALYSIS_TASKプロシージャのパラメータ

パラメータ 説明

task_name

再開する分析タスクの識別子。

basic_filter

SQLチューニング・セットからSQLをフィルタするためのSQL述語。このフィルタは、CREATE_ANALYSIS_TASKファンクションのコール時に、指定された基本フィルタ(パラメータbasic_filter)と組み合されて適用されます。

使用上のノート

単一のSQL分析タスク(SQLチューニング・セットではなく、1つのSQL文を分析するために作成されたタスク)の再開はサポートされていません。

-- Interrupt the task
EXEC DBMS_SQLPA.INTERRUPT_ANALYSIS_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_SQLPA.RESUME_ANALYSIS_TASK(:conc_task);

156.3.9 SET_ANALYSIS_TASK_PARAMETERプロシージャ

このプロシージャは、SQL分析タスク・パラメータの値を設定します。

構文

この形式のプロシージャは、VARCHAR2タイプのSQL分析パラメータの値を更新します。

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
  task_name         IN VARCHAR2,
  parameter         IN VARCHAR2,
  value             IN VARCHAR2);

この形式のプロシージャは、NUMBERタイプのSQL分析パラメータの値を更新します。

DBMS_SQLPA.SET_ANALYSIS_TASK_PARAMETER(
  task_name         IN VARCHAR2,
  parameter         IN VARCHAR2,
  value             IN NUMBER);

パラメータ

表156-10 SET_ANALYSIS_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

task_name

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

parameter

設定するパラメータの名前。このプロシージャによって設定可能な分析パラメータは、次のとおりです。

  • APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

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

  • CELL_SIMULATION_ENABLED: 詳細は、ADMINディレクトリ内のヘルパー・スクリプトtcellsim.sqlを参照してください。

  • COMPARISON_METRIC: パフォーマンスの比較で使用する実行統計の式を指定します(例: buffer_getscpu_time + buffer_gets * 10)。

  • DATABASE_LINK: PUBLICデータベース・リンクのグローバル名に設定できます。設定した場合、SQLパフォーマンス・アナライザでは、SQL文をリモート・データベースに送信してリモートで処理することによって、すべてのTEST EXECUTEおよびEXPLAIN PLAN操作に対してデータベース・リンクが使用されます。この場合でも、分析結果はローカル・データベースに格納されます。

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

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

parameter (続き)

  • DISABLE_MULTI_EXEC: SQL文を複数回実行した後ランタイム統計の平均を求めます。この機能を無効にするには、このパラメータをTRUEに設定します。この場合、SQLチューニング・セットの各SQLは、1回のみ実行されます。

  • EXECUTE_TRIGGERS: すべての文レベル・トリガーをFULLDMLモードで実行する場合は、このパラメータをTRUEに設定します。このパラメータをFALSEに設定すると、トリガーはテスト実行のFULLDMLモードでも実行されません。トリガーの潜在的な実行が原因で行われた変更は、常にSPAによってロールバックされます。このパラメータのデフォルト値はFALSEです。

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

  • EXECUTE_FULLDML: 行のロックの取得および行の変更を含め、DML文を完全に実行するにはTRUE、データを変更せずにDMLの問合せ部分のみを実行するにはFALSE(デフォルト)。TRUEの場合、SQLパフォーマンス・アナライザは、DML実行の後でロールバックを発行して、DMLにより永続的な変更が行われないようにします。

  • EXECUTION_NAME1: 分析する最初のタスク実行の名前。

  • EXECUTION_NAME2: 分析する2番目のタスク実行の名前。

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

  • METRIC_DELTA_THRESHOLD: 変更の前と後でのSQLパフォーマンス・メトリックの差異のしきい値。デフォルト値は0です。

  • NUM_ROWS_TO_FETCH: SQL問合せでフェッチする行数を指定します。次のいずれかの値を使用できます。

    • ALL_ROWS: SQL問合せですべての行をフェッチします。

    • AVERAGE: 結果行の数は、処理される行数の合計およびSTS内の各SQLの合計実行回数の比率として計算されます。

    • AUTO: 結果行の数は、STSで取得されたオプティマイザ環境のoptimizer_modeパラメータの値を使用して決定されます。optimizer_modeの値がALL_ROWSの場合、すべての結果行がフェッチされます。その値がFIRST_ROWS_nの場合、n個の結果行がSPAによってフェッチされます。

    • A valid number: SQL問合せで指定された数に正確に一致する行数がフェッチされます。

    デフォルト値はALL_ROWSです。

  • PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

  • PLAN_LINES_COMPARISON:

    - ALWAYS --すべてのシナリオの計画を行ごとに比較します。- AUTO -phv2が使用可能ではなく、phv1が異なる場合にのみ、計画を行ごとに比較します。- NONE (デフォルト) - phvが不明の場合にのみ、計画を行ごとに比較します。

  • RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

  • RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

  • RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

  • REPLACE_SYSDATE_WITH: SPAタスク実行内のすべてのSYSDATEコールで、固定日付を戻します。次のいずれかの値を使用できます。

    • CURRENT_SYSDATE: SYSDATEコールは現在の日付を戻します。

    • SQLSET_SYSDATE: SYSDATEコールは、STS内の列LAST_EXEC_START_TIMEの値を戻します。

    デフォルト値はCURRENT_SYSDATEです。

  • RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

  • SQL_IMPACT_THRESHOLD: SQLに対する変更の影響のしきい値。前述のパラメータ同じ(ただし、SQL文レベル)。

  • SQL_LIMIT: 処理するSQL文の最大数。

  • SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

  • SQLSET_NAME: 指定したタスクまたはタスク実行に関連付けるSQLチューニング・セットの名前。このパラメータは主に、SPAを使用する2つのSQLチューニング・セットを比較するために使用します。

  • SQLSET_OWNER: タスク・パラメータSQLSET_NAMEを使用して指定したSQLチューニング・セットの所有者。

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

parameter (続き)

  • WORKLOAD_IMPACT_THRESHOLD: ワークロードに対するSQL文の影響のしきい値。ワークロードに対する変更の影響がこのしきい値の絶対値より低い文は無視され、改善および回帰は考慮されません。

  • CON_DBID_MAPPING: マルチテナント・コンテナ・データベース(CDB) IDのマッピングを指定します。設定した場合、SQL Performance Analyzerは以前のCDB IDの一致を検出すると新しいCDB IDを使用し、そのコンテナ内でSQLを実行します。

value

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

156.3.10 SET_ANALYSIS_DEFAULT_PARAMETERプロシージャ

このプロシージャは、SQL分析タスク・パラメータのデフォルト値を設定します。

構文

この形式のプロシージャは、VARCHAR2タイプのアナライザ・パラメータのデフォルト値を更新します。

DBMS_SQLPA.SET_ANALYSIS_DEFAULT_PARAMETER(
   parameter    IN  VARCHAR2,
   value        IN  VARCHAR2);

この形式のプロシージャは、NUMBERタイプのアナライザ・パラメータのデフォルト値を更新します。

DBMS_SQLPA.SET_ANALYSIS_DEFAULT_PARAMETER(
   parameter    IN  VARCHAR2,
   value        IN  NUMBER);

パラメータ

表156-11 SET_ANALYSIS_DEFAULT_PARAMETERプロシージャのパラメータ

パラメータ 説明

parameter

設定するパラメータの名前。このプロシージャによって設定可能な分析パラメータは、次のとおりです。

  • APPLY_CAPTURED_COMPILENV: SQL文で取得されたコンパイル環境をアドバイザで使用できるかどうかを示します。デフォルトは0(NO)です。

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

  • COMPARISON_METRIC: パフォーマンスの比較で使用する実行統計の式を指定します(例: buffer_getscpu_time + buffer_gets * 10)。

  • DATABASE_LINK: PUBLICデータベース・リンクのグローバル名に設定できます。設定した場合、SQLパフォーマンス・アナライザでは、SQL文をリモート・データベースに送信してリモートで処理することによって、すべてのTEST EXECUTEおよびEXPLAIN PLAN操作に対してデータベース・リンクが使用されます。この場合でも、分析結果はローカル・データベースに格納されます。

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

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

  • EXECUTE_FULLDML: 行のロックの取得および行の変更を含め、DML文を完全に実行するにはTRUE、データを変更せずにDMLの問合せ部分のみを実行するにはFALSE(デフォルト)。TRUEの場合、SQLパフォーマンス・アナライザは、DML実行の後でロールバックを発行して、DMLにより永続的な変更が行われないようにします。

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

  • EXECUTION_NAME1: 分析する最初のタスク実行の名前。

  • EXECUTION_NAME2: 分析する2番目のタスク実行の名前。

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

parameter (続き)

  • PLAN_FILTER: SQLチューニング・セットの計画フィルタ(設定可能な値については、SELECT_SQLSETを参照してください)。

  • RANK_MEASURE1: SQLチューニング・セットの最初のランキング・メジャー。

  • RANK_MEASURE2: SQLチューニング・セットの2番目の設定可能なランキング・メジャー。

  • RANK_MEASURE3: SQLチューニング・セットの3番目の設定可能なランキング・メジャー。

  • RESUME_FILTER: SQLチューニング・セットのBASIC_FILTER以外の追加フィルタ。

  • SQL_IMPACT_THRESHOLD: SQLに対する変更の影響のしきい値。前述のパラメータ同じ(ただし、SQL文レベル)。

  • SQL_LIMIT: 処理するSQL文の最大数。

  • SQL_PERCENTAGE: SQLチューニング・セットの文のパーセント・フィルタ。

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

  • WORKLOAD_IMPACT_THRESHOLD: ワークロードに対するSQL文の影響のしきい値。ワークロードに対する変更の影響がこのしきい値の絶対値より低い文は無視され、改善および回帰は考慮されません。

value

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