ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

16 DBMS_ADDM

DBMS_ADDMパッケージによって、自動データベース診断モニターに関するアドバイザ機能を簡単に使用できるようになります。


関連項目:

  • Oracle Real Application Clusters環境の自動ワークロード・リポジトリの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

  • 自動パフォーマンス診断の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。


この章では、次の項目について説明します。


DBMS_ADDMの使用方法


セキュリティ・モデル

DBMS_ADDMパッケージは、定義者の権限ではなくコール元の権限で実行され、DBMS_ADVISORパッケージで必要なセキュリティ制約が適用されます。


関連項目:

セキュリティ・モデルの詳細は、「DBMS_ADVISOR」パッケージを参照してください。


DBMS_ADDMサブプログラムの要約

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

サブプログラム 説明

ANALYZE_DBプロシージャ


データベース分析モードで分析するためのADDMタスクを作成して実行します。

ANALYZE_INSTプロシージャ


インスタンス分析モードで分析するためのADDMタスクを作成して実行します。

ANALYZE_PARTIALプロシージャ


部分的な分析モードでインスタンスのサブセットを分析するためのADDMタスクを作成して実行します。

DELETEプロシージャ


作成済のすべてのADDMタスクを削除します。

DELETE_FINDING_DIRECTIVEプロシージャ


検索結果ディレクティブを削除します。

DELETE_PARAMETER_DIRECTIVEプロシージャ


パラメータ・ディレクティブを削除します。

DELETE_SEGMENT_DIRECTIVEプロシージャ


セグメント・ディレクティブを削除します。

DELETE_SQL_DIRECTIVEプロシージャ


SQLディレクティブを削除します。

GET_ASH_QUERYファンクション


検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。

GET_REPORTファンクション


実行済のADDMタスクのデフォルトのテキスト・レポートを取得します。

INSERT_FINDING_DIRECTIVEプロシージャ


特定の検索結果タイプのレポートを制限するディレクティブを作成します。

INSERT_PARAMETER_DIRECTIVEプロシージャ


特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。

INSERT_SEGMENT_DIRECTIVEプロシージャ


特定のセグメントに対してセグメント・アドバイザを実行するアクションがADDMによって作成されないようにするディレクティブを作成します。

INSERT_SQL_DIRECTIVEプロシージャ


特定のSQLに対するアクションのレポートを制限するディレクティブを作成します。



ANALYZE_DBプロシージャ

このプロシージャは、データベース分析モードで分析するためのADDMタスクを作成して実行します。

構文

DBMS_ADDM.ANALYZE_DB (
   task_name           IN OUT VARCHAR2,
   begin_snapshot      IN     NUMBER,
   end_snapshot        IN     NUMBER,
   db_id               IN     NUMBER := NULL);

パラメータ

表16-2 ANALYZE_DBプロシージャのパラメータ

パラメータ 説明

task_name

作成するタスクの名前。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。


戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

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)に合うように書式化されます。


ANALYZE_INSTプロシージャ

このプロシージャは、インスタンス分析モードで分析するための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);

パラメータ

表16-3 ANALYZE_INSTプロシージャのパラメータ

パラメータ 説明

task_name

作成するタスクの名前。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

instance_number

分析するインスタンスの番号。デフォルトでは、これは、現在接続しているインスタンスです。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。


戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

使用上の注意

シングル・インスタンス・システム(Oracle RACを使用していないインスタンス・システムの場合)では、作成されるタスクはANALYZE_DBプロシージャを使用した場合と同じです。

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)に合うように書式化されます。


ANALYZE_PARTIALプロシージャ

このプロシージャは、部分的な分析モードでインスタンスのサブセットを分析する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);

パラメータ

表16-4 ANALYZE_PARTIALプロシージャのパラメータ

パラメータ 説明

task_name

作成するタスクの名前。

instance_numbers

分析するインスタンスの番号のカンマ区切りリスト。

begin_snapshot

分析期間を開始するスナップショットの数。

end_snapshot

分析期間を終了するスナップショットの数。

db_id

分析するデータベースのデータベースID。デフォルトでは、これは、現在接続しているデータベースです。


戻り値

作成するタスクの名前は、task_nameパラメータに戻されます。この名前は、入力として指定されている値と異なる場合があります(その名前が別のタスクですでに使用されている場合のみ)。

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)に合うように書式化されます。


DELETEプロシージャ

このプロシージャは、作成済のすべてのADDMタスクを削除します。データベース分析モードおよび部分的な分析モードの場合は、メイン・タスクに関連付けられているローカル・タスクを削除します。

構文

DBMS_ADDM.DELETE (
   task_name           IN VARCHAR2);

パラメータ

表16-5 DELETEプロシージャのパラメータ

パラメータ 説明

task_name

削除するタスクの名前。


BEGIN
  DBMS_ADDM.DELETE ('my_partial_analysis_mode_task');
END

DELETE_FINDING_DIRECTIVEプロシージャ

このプロシージャは、検索結果ディレクティブを削除します。

構文

DBMS_ADDM.DELETE_FINDING_DIRECTIVE (
   task_name           IN VARCHAR2,
   dir_name            IN VARCHAR2);

パラメータ

表16-6 DELETE_FINDING_DIRECTIVEプロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。



DELETE_PARAMETER_DIRECTIVEプロシージャ

このプロシージャは、パラメータ・ディレクティブを削除します。また、パラメータ用の特定のシステム・ディレクティブを削除します。後続のADDMタスクは、このディレクティブの影響を受けません。

構文

DBMS_ADDM.DELETE_PARAMETER_DIRECTIVE (
   task_name           IN VARCHAR2,
   dir_name            IN VARCHAR2);

パラメータ

表16-7 DELETE_PARAMETER_DIRECTIVEプロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。


BEGIN
   DBMS_ADDM.DELETE_PARAMETER_DIRECTIVE (NULL,'my Parameter directive'); 
END;

DELETE_SEGMENT_DIRECTIVEプロシージャ

このプロシージャは、セグメント・ディレクティブを削除します。

構文

DBMS_ADDM.DELETE_SEGMENT_DIRECTIVE (
   task_name           IN VARCHAR2,
   dir_name            IN VARCHAR2);

パラメータ

表16-8 DELETE_SEGMENT_DIRECTIVEプロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。



DELETE_SQL_DIRECTIVEプロシージャ

このプロシージャは、SQLディレクティブを削除します。

構文

DBMS_ADDM.DELETE_SQL_DIRECTIVE (
   task_name           IN VARCHAR2,
   dir_name            IN VARCHAR2);

パラメータ

表16-9 DELETE_SQL_DIRECTIVEプロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブはシステム・ディレクティブです。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。



GET_ASH_QUERYファンクション

このファンクションは、検索結果に影響するASHの行を特定するASH問合せのSQLテキストを含む文字列を戻します。ほとんどのタイプの検索結果では、これにより検索結果に対応する正確なASHの行が特定されます。検索結果のタイプによっては、問合せは近似値であるため、検索結果の影響や検索結果の特定のアクティビティを正確に識別するために使用しないでください。

構文

DBMS_ADDM.GET_ASH_QUERY (
   task_name           IN   VARCHAR2,
   finding_id          IN   NUMBER)
  RETURN VARCHAR2;

パラメータ

表16-10 GET_ASH_QUERYファンクションのパラメータ

パラメータ 説明

task_name

タスクの名前。

検索結果

タスク内の検索結果のID


戻り値

検査結果に影響するASHの行を特定するASH問合せを含むVARCHAR


GET_REPORTファンクション

このファンクションは、実行済のADDMタスクのデフォルトのテキスト・レポートを取得します。

構文

DBMS_ADDM.GET_REPORT (
   task_name           IN VARCHAR2)
  RETURN CLOB;

パラメータ

表16-11 GET_REPORTファンクションのパラメータ

パラメータ 説明

task_name

タスクの名前。


Set long 1000000
Set pagesize 50000
SELECT DBMS_ADDM.GET_REPORT('my_partial_analysis_mode_task') FROM DUAL;

INSERT_FINDING_DIRECTIVEプロシージャ

このプロシージャは、特定の検索結果タイプのレポートを制限するディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスが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プロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

finding_name

このディレクティブを適用するADDM検索結果の名前。すべての有効な検索結果の名前は、DBA_ADVISOR_FINDING_NAMESビューのNAME列に表示されます。

min_active_sessions

検査結果に対するアクティブなセッションの最小数。検索結果がこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。

min_perc_impact

分析期間の合計データベース時間に対する検索結果の影響の割合の最小数。検索結果の影響がこの数より小さい場合は、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;

INSERT_PARAMETER_DIRECTIVEプロシージャ

このプロシージャは、特定のシステム・パラメータの値を変更するアクションがADDMによって作成されないようにするディレクティブを作成します。ディレクティブは、特定のタスク用に作成したり(タスクのステータスがINITIALの場合のみ)、続いて作成されるすべてのADDMタスク用に作成できます。

構文

DBMS_ADDM.INSERT_PARAMETER_DIRECTIVE (
   task_name             IN VARCHAR2,
   dir_name              IN VARCHAR2,
   parameter_name        IN VARCHAR2);

パラメータ

表16-13 INSERT_PARAMETER_DIRECTIVEプロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

parameter_name

使用するパラメータを指定します。有効なパラメータの名前がV$PARAMETERに表示されます。


ローカル・インスタンスを分析するために新しい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;

INSERT_SEGMENT_DIRECTIVEプロシージャ

このプロシージャは、特定のセグメントに対してセグメント・アドバイザを実行するアクションが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プロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

owner_name

フィルタ処理するセグメントの所有者を指定します。LIKE制約に使用される同じ構文でワイルドカードを使用できます。

object_name

フィルタ処理するメイン・オブジェクトの名前。ワイルドカードを使用できます。NULLのデフォルト値は、'%'の値と同じです。

sub_object_name

フィルタ処理するメイン・オブジェクトの一部の名前。この名前には、パラメータ名または(.で区切られた)サブパーティション名を指定できます。ワイルドカードを使用できます。NULLのデフォルト値は、'%'の値と同じです。

object_number

このディレクティブによってフィルタ処理されるSEGMENTのオブジェクト番号。DBA_OBJECTSまたはDBA_SEGMENTSのビューにあります。


ローカル・インスタンスを分析するために新しい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;

INSERT_SQL_DIRECTIVEプロシージャ

このプロシージャは、特定の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プロシージャのパラメータ

パラメータ 説明

task_name

このディレクティブを適用するタスクの名前。値がNULLの場合、このディレクティブは、続いて作成されるすべてのADDMタスクに適用されます。

dir_name

ディレクティブの名前。すべてのディレクティブの名前は一意である必要があります。

sql_id

フィルタ処理するSQL文を識別します。有効な値には、0から9およびaからzまでの13文字が含まれています。

min_active_sessions

SQLに対するアクティブなセッションの最小数。SQLアクションがこの数より少ない場合は、ADDM結果に対してフィルタ処理が実行されています。

min_response_time

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;