DBMS_ADDMパッケージによって、自動データベース診断モニターに関するアドバイザ機能を簡単に使用できるようになります。
関連項目:
|
この章では、次の項目について説明します。
セキュリティ・モデル
表16-1 DBMS_ADDMパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
データベース分析モードで分析するためのADDMタスクを作成して実行します。 |
|
インスタンス分析モードで分析するためのADDMタスクを作成して実行します。 |
|
部分的な分析モードでインスタンスのサブセットを分析するためのADDMタスクを作成して実行します。 |
|
作成済のすべてのADDMタスクを削除します。 |
DELETE_FINDING_DIRECTIVEプロシージャ |
検索結果ディレクティブを削除します。 |
DELETE_PARAMETER_DIRECTIVEプロシージャ |
パラメータ・ディレクティブを削除します。 |
DELETE_SEGMENT_DIRECTIVEプロシージャ |
セグメント・ディレクティブを削除します。 |
|
SQLディレクティブを削除します。 |
|
検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。 |
|
実行済のADDMタスクのデフォルトのテキスト・レポートを取得します。 |
INSERT_FINDING_DIRECTIVEプロシージャ |
特定の検索結果タイプのレポートを制限するディレクティブを作成します。 |
INSERT_PARAMETER_DIRECTIVEプロシージャ |
特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。 |
INSERT_SEGMENT_DIRECTIVEプロシージャ |
特定のセグメントに対してセグメント・アドバイザを実行するアクションがADDMによって作成されないようにするディレクティブを作成します。 |
|
特定のSQLに対するアクションのレポートを制限するディレクティブを作成します。 |
このプロシージャは、データベース分析モードで分析するためのADDMタスクを作成して実行します。
構文
DBMS_ADDM.ANALYZE_DB ( task_name IN OUT VARCHAR2, begin_snapshot IN NUMBER, end_snapshot IN NUMBER, db_id IN NUMBER := NULL);
例
tname
変数に名前を指定して、データベース分析モードでADDMタスクを作成して実行するには、次のように入力します。
var tname VARCHAR2(60); BEGIN :tname := 'my_database_analysis_mode_task'; DBMS_ADDM.ANALYZE_DB(:tname, 1, 2); END
レポートを表示するには、次のように入力します。
SET LONG 100000 SET PAGESIZE 50000 SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;
レポートの戻り値のタイプはCLOB
であり、行サイズ(80)に合うように書式化されます。
このプロシージャは、インスタンス分析モードで分析するためのADDMタスクを作成して実行します。
構文
DBMS_ADDM.ANALYZE_INST ( task_name IN OUT VARCHAR2, begin_snapshot IN NUMBER, end_snapshot IN NUMBER, instance_number IN NUMBER := NULL, db_id IN NUMBER := NULL);
例
tname
変数に名前を指定して、インスタンス分析モードでADDMタスクを作成して実行するには、次のように入力します。
var tname VARCHAR2(60); BEGIN :tname := 'my_instance_analysis_mode_task'; DBMS_ADDM.ANALYZE_INST(:tname, 1, 2); END
レポートを表示するには、次のように入力します。
SET LONG 100000 SET PAGESIZE 50000 SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;
レポートの戻り値のタイプはCLOB
であり、行サイズ(80)に合うように書式化されます。
このプロシージャは、部分的な分析モードでインスタンスのサブセットを分析するADDMタスクを作成して実行します。
構文
DBMS_ADDM.ANALYZE_PARTIAL ( task_name IN OUT VARCHAR2, instance_numbers IN VARCHAR2, begin_snapshot IN NUMBER, end_snapshot IN NUMBER, db_id IN NUMBER := NULL);
例
tname
変数に名前を指定して、部分的な分析モードでADDMタスクを作成して実行するには、次のように入力します。
var tname VARCHAR2(60); BEGIN :tname := 'my_partial_analysis_modetask'; DBMS_ADDM.ANALYZE_PARTIAL(:tname, '1,2,3', 1, 2); END
レポートを表示するには、次のように入力します。
SET LONG 100000 SET PAGESIZE 50000 SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL;
レポートの戻り値のタイプはCLOB
であり、行サイズ(80)に合うように書式化されます。
このプロシージャは、作成済のすべてのADDMタスクを削除します。データベース分析モードおよび部分的な分析モードの場合は、メイン・タスクに関連付けられているローカル・タスクを削除します。
このプロシージャは、パラメータ・ディレクティブを削除します。また、パラメータ用の特定のシステム・ディレクティブを削除します。後続のADDMタスクは、このディレクティブの影響を受けません。
このファンクションは、検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。ほとんどのタイプの検索結果では、これにより検索結果に対応する正確なASHの行が特定されます。検索結果のタイプによっては、問合せは近似値であるため、検索結果の影響や検索結果の特定のアクティビティを正確に識別するために使用しないでください。
このプロシージャは、特定の検索結果タイプのレポートを制限するディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIAL
の場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。
構文
DBMS_ADDM.INSERT_FINDING_DIRECTIVE ( task_name IN VARCHAR2, dir_name IN VARCHAR2, finding_name IN VARCHAR2, min_active_sessions IN NUMBER := 0, min_perc_impact IN NUMBER := 0);
パラメータ
表16-12 INSERT_FINDING_DIRECTIVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このディレクティブを適用するタスクの名前。値が |
|
ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。 |
|
このディレクティブを適用するADDM検索結果の名前。すべての有効な検索結果の名前は、 |
|
検査結果に対するアクティブなセッションの最小数。検索結果がこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。 |
|
分析期間の合計データベース時間に対する検索結果の影響の割合の最小数。検索結果の影響がこの数より小さい場合は、ADDM結果に対してフィルタ処理が実行されています。 |
例
ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、'Undersized SGA'検索結果に対して特別な処理が行われます。'Undersized SGA'検索結果は、分析期間中2つ以上の平均アクティブ・セッションに関与し、その分析期間中の10%以上の合計データベース時間を構成する場合にのみ、GET_REPORT
の結果に表示されます。
var tname VARCHAR2(60); BEGIN DBMS_ADDM.INSERT_FINDING_DIRECTIVE( NULL, 'Undersized SGA directive', 'Undersized SGA', 2, 10); :tname := 'my_instance_analysis_mode_task'; DBMS_ADDM.ANALYZE_INST(:tname, 1, 2); END;
ディレクティブに関係なく'Undersized SGA'検索結果が含まれているレポートを表示するには、次のように入力します。
SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;
このプロシージャは、特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIAL
の場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。
構文
DBMS_ADDM.INSERT_PARAMETER_DIRECTIVE ( task_name IN VARCHAR2, dir_name IN VARCHAR2, parameter_name IN VARCHAR2);
例
ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、'sga_target
'パラメータの変更を推奨するすべてのアクションに対して特別な処理が行われます。GET_REPORT
の結果に、これらのアクションは表示されません。
var tname varchar2(60); BEGIN DBMS_ADDM.INSERT_PARAMETER_DIRECTIVE( NULL, 'my Parameter directive', 'sga_target'); :tname := 'my_instance_analysis_mode_task'; DBMS_ADDM.ANALYZE_INST(:tname, 1, 2); END;
ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。
SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;
このプロシージャは、特定のセグメントに対してセグメント・アドバイザを実行するアクションがADDMによって作成されないようにするディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIAL
の場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。
構文
DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE ( task_name IN VARCHAR2, dir_name IN VARCHAR2, owner_name IN VARCHAR2, object_name IN VARCHAR2 := NULL, sub_object_name IN VARCHAR2 := NULL);
DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE ( task_name IN VARCHAR2, dir_name IN VARCHAR2, object_number IN NUMBER);
パラメータ
表16-14 INSERT_SEGMENT_DIRECTIVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このディレクティブを適用するタスクの名前。値が |
|
ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。 |
|
フィルタ処理するセグメントの所有者を指定します。LIKE制約に使用される同じ構文でワイルドカードを使用できます。 |
|
フィルタ処理するメイン・オブジェクトの名前。ワイルドカードを使用できます。 |
|
フィルタ処理するメイン・オブジェクトの一部の名前。この名前には、パラメータ名または(.で区切られた)サブパーティション名を指定できます。ワイルドカードを使用できます。 |
|
このディレクティブによってフィルタ処理される |
例
ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、ユーザーSCOTT
に属するすべてのセグメントに対して特別な処理が行われます。GET_REPORT
の結果に、SCOTT
に属するセグメントに対してセグメント・アドバイザを実行するためのアクションは表示されません。
var tname VARCHAR2(60); BEGIN DBMS_ADDM.INSERT_SEGMENT_DIRECTIVE(NULL, 'my Segment directive', 'SCOTT'); :tname := 'my_instance_analysis_mode_task'; DBMS_ADDM.ANALYZE_INST(:tname, 1, 2); END;
ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。
SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;
このプロシージャは、特定のSQLに対するアクションのレポートを制限するディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIAL
の場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。
構文
DBMS_ADDM.INSERT_SQL_DIRECTIVE ( task_name IN VARCHAR2, dir_name IN VARCHAR2, sql_id IN VARCHAR2, min_active_sessions IN NUMBER := 0, min_response_time IN NUMBER := 0);
パラメータ
表16-15 INSERT_SQL_DIRECTIVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このディレクティブを適用するタスクの名前。値が |
|
ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。 |
|
フィルタ処理するSQL文を識別します。有効な値には、0から9およびaからzまでの13文字が含まれています。 |
|
SQLに対するアクティブなセッションの最小数。SQLアクションがこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。 |
|
SQLの応答時間の最小値(マイクロ秒)。SQLの応答時間がこの値より小さい場合は、ADDM結果に対してフィルタ処理が実行されています。 |
例
ローカル・インスタンスを分析するために新しいADDMタスクが作成されます。ただし、IDがabcd123456789のSQLに対して特別な処理が行われます。そのSQLのアクション(SQLをチューニングするアクション、またはSQLを使用してアプリケーションを調査するアクション)は、そのSQLが分析期間中2つ以上の平均アクティブ・セッションに関与し、平均応答時間が1秒以上だった場合にのみ、GET_REPORT
の結果に表示されます。
var tname VARCHAR2(60); BEGIN DBMS_ADDM.INSERT_SQL_DIRECTIVE( NULL, 'my SQL directive', 'abcd123456789', 2, 1000000); :tname := 'my_instance_analysis_mode_task'; DBMS_ADDM.ANALYZE_INST(:tname, 1, 2); END;
ディレクティブに関係なくすべてのアクションが含まれるレポートを表示するには、次のように入力します。
SELECT DBMS_ADVISOR.GET_TASK_REPORT(:tname, 'TEXT', 'ALL') FROM DUAL;