30 DBMS_AUTO_SQLTUNE
DBMS_AUTO_SQLTUNE
パッケージは、自動SQLチューニング・タスクを管理するためのインタフェースです。DBMS_SQLTUNE
とは異なり、DBMS_AUTO_SQLTUNE
パッケージには、DBA
ロールが必要です。
この章の内容は次のとおりです。
30.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ファンクションを使用します。
30.2 DBMS_AUTO_SQLTUNEのセキュリティ・モデル
このパッケージは、DBA
ロールを持つユーザーが使用できます。他のユーザーには、パッケージに対するEXECUTE
権限を明示的に付与する必要があります。EXECUTE_AUTO_TUNING_TASK
プロシージャは例外で、SYS
のみが起動できることに注意してください。
ユーザーは、このパッケージのAPIをコールして、自動チューニング・タスクの実行時の動作方法(自動SQLプロファイル作成の有効化や、タスク実行時の合計時間制限およびSQL単位の時間制限の構成など)を制御できます。これらの設定は、データベースのパフォーマンス全体に影響するため、ADVISOR
権限を持つすべてのユーザーがこのパッケージにアクセスすることは、適切ではない場合があります。
30.3 DBMS_AUTO_SQLTUNEサブプログラムの要約
DBMS_AUTO_SQLTUNE
パッケージには、EXECUTE
、REPORT
およびSET
サブプログラムが含まれています。
表30-1 DBMS_AUTO_SQLTUNEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
自動SQLチューニング・タスクを即座に実行します( |
|
自動チューニング・タスクの履歴のテキスト・レポートを表示します。 |
|
毎日の自動実行のタスク・パラメータ値を変更します。 |
30.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);
パラメータ
表30-2 EXECUTE_AUTO_TUNING_TASKファンクションおよびプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。 |
|
指定した実行のパラメータ(名前、値)のリスト。実行パラメータは、指定した実行に対してのみ影響します。これらのパラメータは、(SET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。 |
|
実行について説明する256文字の長さの文字列。 |
使用上のノート
SYS
のみこのサブプログラムを起動できます。チューニング・タスクは、リセットせずに複数回実行できます。
例
EXEC DBMS_AUTO_SQLTUNE.EXECUTE_AUTO_TUNING_TASK('SYS_AUTO_SQL_TUNING_TASK');
30.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;
パラメータ
表30-3 REPORT_AUTO_TUNING_TASKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
使用する開始タスク実行の名前。 |
|
使用する終了タスク実行の名前。 |
|
作成するレポートのタイプ。設定可能な値は、テキストのレポートを作成する |
|
レポートの詳細なレベル。
|
|
含めるレポートのセクション。
|
|
レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトのID。すべての文を表す場合は、 |
|
レポートに表示される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;
30.3.3 SET_AUTO_TUNING_TASK_PARAMETERプロシージャ
このプロシージャは、SYS_AUTO_SQL_TUNING_TASK
のVARCHAR2
タイプまたは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);
パラメータ
表30-4 SET_AUTO_TUNING_TASK_PARAMETERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
設定するパラメータの名前。パラメータを
自動チューニング・タスクでのみ、次のパラメータがサポートされます。
|
|
指定したパラメータの新しい値。 |