34 DBMS_AUTO_SQLTUNE

DBMS_AUTO_SQLTUNEパッケージは、自動SQLチューニング・タスクを管理するためのインタフェースです。DBMS_SQLTUNEとは異なり、DBMS_AUTO_SQLTUNEパッケージには、DBAロールが必要です。

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

34.1 DBMS_AUTO_SQLTUNEの概要

DBMS_AUTO_SQLTUNEパッケージは、自動タスク・フレームワーク内で実行されるSQLチューニング・アドバイザ(DBMS_SQLTUNE)へのインタフェースです。

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

自動タスクでは、新旧のクエリー・プランを実行して検出されたSQLプロファイルがテストされます。自動SQLチューニングは、1つの重要な点で手動SQLチューニングと異なります。SQLプロファイルの自動実装が有効になると(デフォルトは無効)、データベースによって、パフォーマンスの大幅な向上が保証されるSQLプロファイルが実装されます。実装は、データベースが新しい計画のメリットを即座に得ることができるように、チューニング時に行われます。自動実装を有効化または無効化するには、SET_AUTO_TUNING_TASK_PARAMETER APIを使用してACCEPT_SQL_PROFILESパラメータを設定します。

各メンテナンス・ウィンドウで、自動チューニング・タスクはその結果を新しい実行として格納します。各実行の結果は、タスク名は同じですが、実行名は異なります。タスク実行の詳細は、DBA_ADVISOR_EXECUTIONSビューを問い合せてください。複数の実行にわたるレポートを表示するには、REPORT_AUTO_TUNING_TASKファンクションを使用します。

34.2 DBMS_AUTO_SQLTUNEのセキュリティ・モデル

このパッケージは、DBAロールを持つユーザーが使用できます。他のユーザーには、パッケージに対するEXECUTE権限を明示的に付与する必要があります。EXECUTE_AUTO_TUNING_TASKプロシージャは例外で、SYSのみが起動できることに注意してください。

ユーザーは、このパッケージのAPIをコールして、自動チューニング・タスクの実行時の動作方法(自動SQLプロファイル作成の有効化や、タスク実行時の合計時間制限およびSQL単位の時間制限の構成など)を制御できます。これらの設定は、データベースのパフォーマンス全体に影響するため、ADVISOR権限を持つすべてのユーザーがこのパッケージにアクセスすることは、適切ではない場合があります。

34.3 DBMS_AUTO_SQLTUNEサブプログラムの要約

DBMS_AUTO_SQLTUNEパッケージには、EXECUTEREPORTおよびSETサブプログラムが含まれています。

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

サブプログラム 説明

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

自動SQLチューニング・タスクを即座に実行します(SYSのみ)。

REPORT_AUTO_TUNING_TASKファンクション

自動チューニング・タスクの履歴のテキスト・レポートを表示します。

SET_AUTO_TUNING_TASK_PARAMETERプロシージャ

毎日の自動実行のタスク・パラメータ値を変更します。

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

このファンクションおよびプロシージャは、自動SQLチューニング・タスク(SYS_AUTO_SQL_TUNING_TASK)を実行します。

ファンクションとプロシージャの両方とも、新しいタスク実行のコンテキストで実行されます。両者の違いは、ファンクションでは新しい実行名が戻される点です。

構文

DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK(
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN DBMS_ADVISOR.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL)
 RETURN VARCHAR2;
 
DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK(
   execution_name    IN VARCHAR2               := NULL,
   execution_params  IN DBMS_ADVISOR.argList   := NULL,
   execution_desc    IN VARCHAR2               := NULL);

パラメータ

表34-2 EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャのパラメータ

パラメータ 説明

execution_name

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

execution_params

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

execution_desc

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

使用上のノート

SYSのみこのサブプログラムを起動できます。チューニング・タスクは、リセットせずに複数回実行できます。

EXEC DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK('SYS_AUTO_SQL_TUNING_TASK');

34.3.2 REPORT_AUTO_TUNING_TASKファンクション

このプロシージャは、自動SQLチューニング・タスクの結果を表示します。

構文

DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(
   begin_exec      IN   VARCHAR2   := NULL,
   end_exec        IN   VARCHAR2   := NULL,
   type            IN   VARCHAR2   := 'TEXT',
   level           IN   VARCHAR2   := 'TYPICAL',
   section         IN   VARCHAR2   := ALL,
   object_id       IN   NUMBER     := NULL,
   result_limit    IN   NUMBER     := NULL)
RETURN CLOB;

パラメータ

表34-3 REPORT_AUTO_TUNING_TASKファンクションのパラメータ

パラメータ 説明

begin_exec

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

end_exec

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

type

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

level

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

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

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

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

section

含めるレポートのセクション。

  • SUMMARY: サマリー情報

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

  • PLAN: EXPLAIN PLAN

  • INFORMATION: 一般的な情報

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

  • ALL: すべてのセクション

object_id

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

result_limit

レポートに表示されるSQL文の最大数。

戻り値

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

-- Get the whole report for the most recent execution
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK
FROM   DUAL;
 
-- Show the summary for a range of executions
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(:begin_exec, :end_exec, 'TEXT', 
       'TYPICAL', 'SUMMARY')
FROM   DUAL;
 
-- Show the findings for the statement of interest
SELECT DBMS_AUTO_SQLTUNE.REPORT_AUTO_TUNING_TASK(:exec, :exec, 'TEXT', 
       'TYPICAL', 'FINDINGS', 5)
FROM   DUAL;

34.3.3 SET_AUTO_TUNING_TASK_PARAMETERプロシージャ

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

構文

DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER(
   parameter    IN  VARCHAR2,
   value        IN  VARCHAR2);
 
DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER(
   parameter    IN  VARCHAR2,
   value        IN  NUMBER);

パラメータ

表34-4 SET_AUTO_TUNING_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

parameter

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

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

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

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

  • EXECUTION_DAYS_TO_EXPIRE: タスク実行が削除されるまでの日数

  • DEFAULT_EXECUTION_TYPE: EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャで何も指定していないデフォルトの実行

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

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

  • TEST_EXECUTE:

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

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

    • OFF - テスト実行しません。

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

  • OBJECT_FILTER: SQLチューニング・セットのオブジェクト・フィルタ。

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

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

  • RANK_MEASURE2: SQLチューニング・セットの2番目のランキング・メジャー

  • RANK_MEASURE3: SQLチューニング・セットの3番目のランキング・メジャー

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

  • SQL_LIMIT: チューニングするSQL文の最大数。

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

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

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

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

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

value

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