121 DBMS_MONITOR

DBMS_MONITORは、PL/SQLを使用して統計情報収集とSQLトレースを制御するためのパッケージです。

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

121.1 DBMS_MONITORサブプログラムの要約

この表は、DBMS_MONITORサブプログラムを示し、簡単に説明しています。

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

サブプログラム 説明

CLIENT_ID_STAT_DISABLEプロシージャ

指定されたクライアント識別子に対して以前に有効にされた統計情報収集を無効にします。

CLIENT_ID_STAT_ENABLEプロシージャ

指定されたクライアント識別子に対する統計情報収集を有効にします。

CLIENT_ID_TRACE_DISABLEプロシージャ

指定されたクライアント識別子に対して以前に有効にされたトレースをデータベース全体で無効にします。

CLIENT_ID_TRACE_ENABLEプロシージャ

指定されたクライアント識別子に対するトレースをデータベース全体で有効にします。

DATABASE_TRACE_DISABLEプロシージャ

データベース全体または特定のインスタンスに対するSQLトレースを無効にします。

DATABASE_TRACE_ENABLEプロシージャ

データベース全体または特定のインスタンスに対するSQLトレースを有効にします。

SERV_MOD_ACT_STAT_DISABLEプロシージャ

サービス名、MODULEおよびACTIONの指定された組合せに対して有効にされた統計情報収集を無効にします。

SERV_MOD_ACT_STAT_ENABLEプロシージャ

サービス名、MODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にします。

SERV_MOD_ACT_TRACE_DISABLEプロシージャ

サービス名、MODULEおよびACTION名の指定された組合せに対して有効にされたすべてのインスタンスに対するトレースを全体で無効にします。

SERV_MOD_ACT_TRACE_ENABLEプロシージャ

instance_nameが指定されていないかぎり、サービス名、MODULEおよびACTIONの指定された組合せに対するSQLトレースを全体で有効にします。

SESSION_TRACE_DISABLEプロシージャ

指定されたデータベース・セッション識別子(SID)に対して以前に有効にされたトレースをローカル・インスタンス上で無効にします。

SESSION_TRACE_ENABLEプロシージャ

指定されたデータベース・セッション識別子(SID)に対するトレースをローカル・インスタンス上で有効にします。

121.1.1 CLIENT_ID_STAT_DISABLEプロシージャ

このプロシージャは、CLIENT_ID_STAT_ENABLEプロシージャによって有効にされたすべてのインスタンスに対する統計情報収集を無効にして、収集済の統計情報をV$CLIENT_STATSビューから削除します。

構文

DBMS_MONITOR.CLIENT_ID_STAT_DISABLE(
   client_id            IN   VARCHAR2);

パラメータ

表121-2 CLIENT_ID_STAT_DISABLEプロシージャのパラメータ

パラメータ 説明

client_id

統計情報収集が無効にされるクライアント識別子

統計情報収集を無効にするには、次のようにします。

EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_DISABLE('janedoe');

121.1.2 CLIENT_ID_STAT_ENABLEプロシージャ

このプロシージャは、指定されたクライアント識別子に対する統計情報収集を有効にします。

統計情報の収集はデータベース全体に対して実行され、インスタンスの起動や再起動を行っても中断されません。つまり、同じデータベースのすべてのインスタンス(再起動されたインスタンスを含む)に関する統計情報が収集されます。統計情報は、V$CLIENT_STATSビューを使用して参照できます。

構文

DBMS_MONITOR.CLIENT_ID_STAT_ENABLE(
   client_id            IN   VARCHAR2);

パラメータ

表121-3 CLIENT_ID_STAT_ENABLEプロシージャのパラメータ

パラメータ 説明

client_id

統計情報収集が有効にされるクライアント識別子

指定したクライアント識別子を持つクライアントに関する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.CLIENT_ID_STAT_ENABLE('janedoe');

121.1.3 CLIENT_ID_TRACE_DISABLEプロシージャ

このプロシージャは、CLIENT_ID_TRACE_ENABLEプロシージャによって有効にされたトレースを無効にします。

構文

DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE(
 client_id    IN  VARCHAR2);

パラメータ

表121-4 CLIENT_ID_TRACE_DISABLEプロシージャのパラメータ

パラメータ 説明

client_id

SQLトレースが無効にされるクライアント識別子

EXECUTE DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE ('janedoe');

121.1.4 CLIENT_ID_TRACE_ENABLEプロシージャ

このプロシージャは、指定されたクライアント識別子に対するトレースをデータベース全体で有効にします。

構文

DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE(
 client_id    IN  VARCHAR2,
 waits        IN  BOOLEAN DEFAULT TRUE,
 binds        IN  BOOLEAN DEFAULT FALSE,
 plan_stat    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表121-5 CLIENT_ID_TRACE_ENABLEプロシージャのパラメータ

パラメータ 説明

client_id

SQLトレースが有効にされるデータベース・セッション識別子。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上のノート

  • 指定されたクライアント識別子のために複数のOracleシャドウ・プロセスが動作するため、トレース情報は複数のトレース・ファイルに書き込まれます。

  • トレースはすべてのインスタンスに対して有効になり、インスタンスの再起動を行っても中断されません。

EXECUTE DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE('janedoe', TRUE,
FALSE);

121.1.5 DATABASE_TRACE_DISABLEプロシージャ

このプロシージャは、データベース全体または特定のインスタンスに対するSQLトレースを無効にします。

構文

DBMS_MONITOR.DATABASE_TRACE_DISABLE(
   instance_name  IN VARCHAR2 DEFAULT NULL);

パラメータ

表121-6 DATABASE_TRACE_DISABLEプロシージャのパラメータ

パラメータ 説明

instance_name

指定したインスタンスに対するトレースを無効にします。

121.1.6 DATABASE_TRACE_ENABLEプロシージャ

このプロシージャは、データベース全体または特定のインスタンスに対するSQLトレースを有効にします。

構文

DBMS_MONITOR.DATABASE_TRACE_ENABLE(
   waits          IN BOOLEAN DEFAULT TRUE,
   binds          IN BOOLEAN DEFAULT FALSE,
   instance_name  IN VARCHAR2 DEFAULT NULL,
   plan_stat      IN VARCHAR2 DEFAULT NULL);

パラメータ

表121-7 DATABASE_TRACE_ENABLEプロシージャのパラメータ

パラメータ 説明

waits

TRUEの場合、待機情報がトレースに存在することになります。

binds

TRUEの場合、バインド情報がトレースに存在することになります。

instance_name

このパラメータにインスタンス名を指定すると、指定されたインスタンスに対するトレースのみが有効にされます。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

121.1.7 SERV_MOD_ACT_STAT_DISABLEプロシージャ

このプロシージャは、統計情報収集を無効にして、収集済の統計情報をV$SERV_MOD_ACT_STATSビューから削除します。

統計情報収集の無効化はデータベース全体に適用されます。つまり、同じデータベースのインスタンス(統計情報収集の有効化によってアクティブになったdblinksを含む)に関する統計情報の収集が停止します。

構文

DBMS_MONITOR.SERV_MOD_ACT_STAT_DISABLE(
   service_name    IN VARCHAR2,
   module_name     IN VARCHAR2,
   action_name     IN VARCHAR2 DEFAULT ALL_ACTIONS);

パラメータ

表121-8 SERV_MOD_ACT_STAT_DISABLEプロシージャのパラメータ

パラメータ 説明

service_name

統計情報収集が無効にされるサービスの名前。

module_name

モジュールの名前。サービスに対する追加の修飾子。このパラメータは省略できません。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。このパラメータを省略するか、ALL_ACTIONS定数に設定すると、指定されたサービス名/モジュール名の組合せに一致するすべてのアクションに対する統計情報収集が有効になります。この場合、統計情報は、モジュール・レベルで収集されます。

使用上のノート

統計情報の収集に関して、モジュールまたはアクションを変更すると、セッションで実行される次のユーザー・コールがこの変更の影響を受けます。たとえば、モジュールがセッション内で'module 1'に設定されており、そのセッションのユーザー・コールで'module 2'にリセットされた場合、このモジュールは、ユーザー・コールの間'module 1'のままとなります。モジュールは、このセッションの次のユーザー・コールで'module 2'に変更されます。

121.1.8 SERV_MOD_ACT_STAT_ENABLEプロシージャ

このプロシージャは、サービス名、MODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にします。

このプロシージャをコールすると、同じデータベースのすべてのインスタンス上で、サービス名、MODULE名およびACTION名の階層的な組合せに対する統計情報収集が有効になります。統計情報は、V$SERV_MOD_ACT_STATSビューを使用して参照できます。

構文

DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE(
   service_name    IN VARCHAR2,
   module_name     IN VARCHAR2,
   action_name     IN VARCHAR2 DEFAULT ALL_ACTIONS);

パラメータ

表121-9 SERV_MOD_ACT_STAT_ENABLEプロシージャのパラメータ

パラメータ 説明

service_name

統計情報収集が有効にされるサービスの名前。

module_name

モジュールの名前。サービスに対する追加の修飾子。このパラメータは省略できません。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。このパラメータを省略するか、ALL_ACTIONS定数に設定すると、指定されたサービス名/モジュール名の組合せに一致するすべてのアクションに対する統計情報収集が有効になります。この場合、統計情報は、モジュール・レベルで収集されます。

使用上のノート

モジュール名/アクション名にはNULLと区別できない空文字列を指定できるため、サービス名/モジュール名/アクション名の特定の組合せに対して統計収集を有効にする指定が若干複雑になります。そのため、次のような表記規則を採用しています。

次に示す特別な定数(実際のアクション名としては使用されないような名前)が定義されています。

ALL_ACTIONS constant VARCHAR2 := '###ALL_ACTIONS';

ALL_ACTIONSを使用してアクションを指定すると、特定のモジュール名を持つすべてのアクションに対して統計情報収集が有効になります。一方、NULL(または空文字列)を指定すると、名前が空文字列であるアクションに対して統計情報収集が有効になります。

統計情報の収集に関して、モジュールまたはアクションを変更すると、セッションで実行される次のユーザー・コールがこの変更の影響を受けます。たとえば、モジュールがセッション内で'module 1'に設定されており、そのセッションのユーザー・コールで'module 2'にリセットされた場合、このモジュールは、ユーザー・コールの間'module 1'のままとなります。モジュールは、このセッションの次のユーザー・コールで'module 2'に変更されます。

サービス名とMODULEの指定された組合せに対する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE( 'APPS1','PAYROLL');

サービス名とMODULEおよびACTIONの指定された組合せに対する統計情報収集を有効にするには、次のコマンドを実行します。

EXECUTE
DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE('APPS1','GLEDGER','DEBIT_ENTRY');

これら2つのコマンドを両方とも実行すると、次のような統計情報が収集されます。

  • APPS1サービスに関する統計情報(両方のコマンドでサービス名が指定されているため)

  • PAYROLLモジュール内のすべてのアクションに関する統計情報

  • GLEDGERモジュール内のDEBIT_ENTRYアクションに関する統計情報

121.1.9 SERV_MOD_ACT_TRACE_DISABLEプロシージャ

このプロシージャは、サービス名、MODULEおよびACTION名の指定された組合せに対して有効にされたすべてのインスタンスに対するトレースを全体で無効にします。

構文

DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE(
   service_name    IN  VARCHAR2,
   module_name     IN  VARCHAR2,
   action_name     IN  VARCHAR2 DEFAULT ALL_ACTIONS,
   instance_name   IN  VARCHAR2 DEFAULT NULL);

パラメータ

表121-10 SERV_MOD_ACT_TRACE_DISABLEプロシージャのパラメータ

パラメータ 説明

service_name

トレースが無効にされるサービスの名前。

module_name

モジュールの名前。サービス名に対する追加の修飾子。

action_name

アクションの名前。サービス名とモジュール名に対する追加の修飾子。

instance_name

このパラメータにインスタンス名を指定すると、指定された名前を持つインスタンス(instance_name)に対するトレースに制限されます。

使用上のノート

module_nameパラメータにNULLを指定すると、MODULE属性が設定されないセッションに関する統計情報が収集されなくなります。

APPS1という名前のサービスに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1',
            DBMS_MONITOR.ALL_MODULES,  DBMS_MONITOR.ALL_ACTIONS,TRUE,
FALSE,NULL);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE('APPS1');

サービスおよびMODULE (すべてのACTION)の指定された組合せに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1','PAYROLL',
            DBMS_MONITOR.ALL_ACTIONS,TRUE,FALSE,NULL);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_DISABLE('APPS1','PAYROLL');

121.1.10 SERV_MOD_ACT_TRACE_ENABLEプロシージャ

このプロシージャでは、instance_nameが指定されていないかぎり、サービス名、MODULEおよびACTIONの指定された組合せに対するSQLトレースを全体で有効にします。

構文

DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(
   service_name    IN VARCHAR2,
   module_name     IN VARCHAR2 DEFAULT ANY_MODULE,
   action_name     IN VARCHAR2 DEFAULT ANY_ACTION,
   waits           IN BOOLEAN DEFAULT TRUE,
   binds           IN BOOLEAN DEFAULT FALSE,
   instance_name   IN VARCHAR2 DEFAULT NULL, 
   plan_stat       IN VARCHAR2 DEFAULT NULL);

パラメータ

表121-11 SERV_MOD_ACT_TRACE_ENABLEプロシージャのパラメータ

パラメータ 説明

service_name

SQLトレースが有効にされるサービス名。

module_name

SQLトレースが有効にされるMODULEの名前。サービス名に対する追加の修飾子(オプション)。省略すると、特定のサービス内のすべてのモジュールおよびアクションに対してSQLトレースが有効になります。

action_name

SQLトレースが有効にされるACTIONの名前。サービスとMODULE名に対する追加の修飾子(オプション)。省略すると、特定のモジュール内のすべてのアクションに対してSQLトレースが有効になります。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

instance_name

このパラメータにインスタンス名を指定すると、指定された名前を持つインスタンス(instance_name)に対するトレースに制限されます。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上のノート

  • このプロシージャは、サービス、MODULEおよびACTION名の指定された組合せに対するトレースを有効にします。指定は完全に階層的であり、「サービス名」、「サービス名とMODULE」、「サービス名、MODULE、およびACTION名」を指定する必要があります。修飾子を省略すると、ワイルドカードを使用した場合と同様に動作するため、ACTIONを省略すると、すべてのACTIONを指定した場合と同じになります。ALL_ACTIONS定数も同じ目的に使用できます。

  • このトレースは、アプリケーションのMODULEまたは特定のACTIONに対するサービス・レベルが低い場合に効果的です。

  • デフォルトでは、データベース全体に対してトレースが実行されます。instance_nameパラメータを使用すると、トレースの対象を名前が付けられている既知のインスタンス(たとえば、低いサービス・レベルを示すことが判明しているインスタンスなど)に限定できます。

  • トレース情報は複数のトレース・ファイルに書き込まれるため、trcsessツールを使用してトレース情報を単一のファイルにまとめる必要があります。

  • module_nameパラメータにNULLを指定すると、MODULE属性が設定されないセッションに関する統計情報が収集されるようになります。

APPS1という名前のサービスに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1',
            DBMS_MONITOR.ALL_MODULES,  DBMS_MONITOR.ALL_ACTIONS,TRUE,
FALSE,NULL);

サービスおよびMODULE (すべてのACTION)の指定された組合せに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('APPS1','PAYROLL',
            DBMS_MONITOR.ALL_ACTIONS,TRUE,FALSE,NULL);

121.1.11 SESSION_TRACE_DISABLEプロシージャ

このプロシージャは、指定されたデータベース・セッションに対するトレースをローカル・インスタンス上で無効にします。

構文

DBMS_MONITOR.SESSION_TRACE_DISABLE(
   session_id      IN     BINARY_INTEGER DEFAULT NULL,
   serial_num      IN     BINARY_INTEGER DEFAULT NULL);

パラメータ

表121-12 SESSION_TRACE_DISABLEプロシージャのパラメータ

パラメータ 説明

session_id

SQLトレースが無効にされるデータベース・セッション識別子。

serial_num

現行のデータベース・セッションのシリアル番号。

使用上のノート

serial_numNULLで、session_idが指定されている場合は、セッションのシリアル番号に関係なく、指定されたsession_idを持つセッションがトレースされなくなります。session_idserial_numが両方ともNULLの場合は、現行ユーザーのセッションはトレースされなくなります。session_idNULLを指定し、serial_numNULL以外を指定することはできません。また、NULL値はデフォルトであり、省略できます。

指定したクライアントのセッション識別子を持つクライアント・セッションに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(7,4634, TRUE, FALSE);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(7,4634);;

121.1.12 SESSION_TRACE_ENABLEプロシージャ

このプロシージャは、指定されたデータベース・セッションIDに対するSQLトレースをローカル・インスタンス上で有効にします。

構文

DBMS_MONITOR.SESSION_TRACE_ENABLE(
    session_id   IN  BINARY_INTEGER DEFAULT NULL,
    serial_num   IN  BINARY_INTEGER DEFAULT NULL,
    waits        IN  BOOLEAN DEFAULT TRUE,
    binds        IN  BOOLEAN DEFAULT FALSE,
    plan_stat    IN  VARCHAR2 DEFAULT NULL);

パラメータ

表121-13 SESSION_TRACE_ENABLEプロシージャのパラメータ

パラメータ 説明

session_id

SQLトレースが有効にされるクライアント識別子。省略する(またはNULLの)場合は、ユーザー自身のセッションが想定されます。

serial_num

現行のデータベース・セッションのシリアル番号。省略する(またはNULLの)場合は、セッションIDのみを使用してセッションが決定されます。

waits

TRUEの場合、待機情報がトレースに存在します。

binds

TRUEの場合、バインド情報がトレースに存在します。

plan_stat

行ソース統計をダンプする頻度。値は'NEVER'、'FIRST_EXECUTION'(NULLと同じ)または'ALL_EXECUTIONS'です。

使用上のノート

このプロシージャは、指定されたデータベース・セッションに対するトレースを有効にし、クライアント/サーバー・アプリケーションでも使用できます。データベース・セッションは複数のインスタンスに及ばないため、トレースはコール元が接続されているインスタンス上のみで有効になります。このトレースはローカル・インスタンス上のみで実行されます。

serial_numNULLで、session_idが指定されている場合は、セッションのシリアル番号に関係なく、指定されたsession_idを持つセッションがトレースされます。session_idserial_numが両方ともNULLの場合は、現行ユーザーのセッションがトレースされます。session_idNULLを指定し、serial_numNULL以外を指定することはできません。また、NULL値はデフォルトであり、省略できます。

指定したクライアントのセッション識別子を持つクライアント・セッションに対するトレースを有効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(7,4634, TRUE, FALSE);

前のステップで指定したトレースを無効にするには、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(7,4634);

次のいずれかのコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(5);

または

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(5, NULL);

セッションID 5でセッションがトレースされます。同時に、次のいずれかのコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE();

または

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL, NULL);

現行のユーザー・セッションがトレースされます。また、次のコマンドを実行します。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(NULL, NULL, TRUE, TRUE);

待機情報とバインド情報を収集しながら現行のユーザー・セッションがトレースされます。また、同じトレースを、キーワード構文を使用して次のようにも実行できます。

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(binds=>TRUE);