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パッケージには、EXECUTE、REPORTおよびSETサブプログラムが含まれています。
                  
表34-1 DBMS_AUTO_SQLTUNEパッケージのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| 
                                  自動SQLチューニング・タスクを即座に実行します(  | 
                           |
| 
                                  自動チューニング・タスクの履歴のテキスト・レポートを表示します。  | 
                           |
| 
                                  毎日の自動実行のタスク・パラメータ値を変更します。  | 
                           
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ファンクションおよびプロシージャのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
                                        
  | 
                                    
                                        実行を修飾して識別するための名前。 指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。  | 
                                 
| 
                                        
  | 
                                    
                                        指定した実行のパラメータ(名前、値)のリスト。 実行パラメータは、指定した実行に対してのみ影響します。 これらのパラメータは、(SET_AUTO_TUNING_TASK_PARAMETERプロシージャを使用して設定された)タスクに格納されているパラメータの値より優先されます。  | 
                                 
| 
                                        
  | 
                                    
                                        実行について説明する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ファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
                                        
  | 
                                    
                                        使用する開始タスク実行の名前。   | 
                                 
| 
                                        
  | 
                                    
                                        使用する終了タスク実行の名前。   | 
                                 
| 
                                        
  | 
                                    
                                        作成するレポートのタイプ。 設定可能な値は、テキストのレポートを作成する  | 
                                 
| 
                                        
  | 
                                    
                                        レポートの詳細なレベル。 
  | 
                                 
| 
                                        
  | 
                                    
                                        含めるレポートのセクション。 
  | 
                                 
| 
                                        
  | 
                                    
                                        レポートの制限対象となる単一の文を表すアドバイザ・フレームワーク・オブジェクトの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;34.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);パラメータ
表34-4 SET_AUTO_TUNING_TASK_PARAMETERプロシージャのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
                                        
  | 
                                    
                                        設定するパラメータの名前。 パラメータを 
 自動チューニング・タスクでのみ、次のパラメータがサポートされます。 
  | 
                                 
| 
                                        
  | 
                                    
                                        指定したパラメータの新しい値。  |