ヘッダーをスキップ
Oracle® Streams概要および管理
11gリリース2 (11.2)
B61351-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

27 ルールの監視

次の各項では、ルールルール・セットおよび評価コンテキストの監視について説明します。


注意:

Oracle Enterprise ManagerのOracle Streamsツールも、Oracle Streams環境を監視するための優れた手段です。詳細は、Oracle Streamsツールのオンライン・ヘルプを参照してください。

すべてのOracle Streamsクライアントによって使用される全ルールの表示

Oracle Streamsルールは、DBMS_STREAMS_ADMパッケージまたはOracle Enterprise ManagerのOracle Streamsツールを使用して作成されます。Oracle Streamsクライアントルール・セット内のOracle Streamsルールにより、Oracle Streamsクライアントの動作が決まります。Oracle Streamsクライアントには、取得プロセス伝播適用プロセスおよびメッセージ・クライアントが含まれています。Oracle Streamsクライアントのルール・セットには、DBMS_RULE_ADMパッケージを使用して作成されたルールも含まれる場合があり、これらのルールも、Oracle Streamsクライアントの動作に影響します。

たとえばhr.employees表に対するDML変更について、取得プロセスのポジティブ・ルール・セットのルールがTRUEと評価されると、この表に対するDML変更が取得プロセスで取得されます。ただし、hr.employees表に対するDML変更について、取得プロセスのネガティブ・ルール・セットのルールがTRUEと評価されると、この表に対するDML変更が廃棄されます。

次のデータ・ディクショナリ・ビューを問い合せると、Oracle Streamsクライアントのルール・セット内のすべてのルール(Oracle StreamsルールおよびDBMS_RULE_ADMパッケージを使用して作成されたルールを含む)が表示されます。

  • ALL_STREAMS_RULES

  • DBA_STREAMS_RULES

また、これらの2つのビューには、各ルールの現在のルール条件と、ルール条件が変更されたかどうかが表示されます。

この項で説明する問合せを実行すると、データベース内のOracle Streamsクライアントによって使用されるすべてのルールに関する次の情報が表示されます。

  • ルールを使用する各Oracle Streamsクライアントの名前

  • ルールを使用する各Oracle Streamsクライアントのタイプ(取得プロセスを示すCAPTURE、同期取得を示すSYNCHRONOUS CAPTURE、伝播を示すPROPAGATION、適用プロセスを示すAPPLY、またはメッセージ・クライアントを示すDEQUEUE)

  • ルール名

  • Oracle Streamsクライアントのルールを含むルール・セットのタイプ(POSITIVEまたはNEGATIVE)

  • Oracle Streamsルール・レベル(GLOBALSCHEMAまたはTABLE)

  • スキーマ・ルールおよび表ルールのスキーマ名

  • 表ルールの表の名前

  • ルール・タイプ(DMLまたはDDL)

次の問合せを実行すると、前述の情報が表示されます。

COLUMN STREAMS_NAME HEADING 'Oracle|Streams|Name' FORMAT A14
COLUMN STREAMS_TYPE HEADING 'Oracle|Streams|Type' FORMAT A11
COLUMN RULE_NAME HEADING 'Rule|Name' FORMAT A12
COLUMN RULE_SET_TYPE HEADING 'Rule Set|Type' FORMAT A8
COLUMN STREAMS_RULE_TYPE HEADING 'Oracle|Streams|Rule|Level' FORMAT A7
COLUMN SCHEMA_NAME HEADING 'Schema|Name' FORMAT A6
COLUMN OBJECT_NAME HEADING 'Object|Name' FORMAT A11
COLUMN RULE_TYPE HEADING 'Rule|Type' FORMAT A4

SELECT STREAMS_NAME, 
       STREAMS_TYPE,
       RULE_NAME,
       RULE_SET_TYPE,
       STREAMS_RULE_TYPE,
       SCHEMA_NAME,
       OBJECT_NAME,
       RULE_TYPE
  FROM DBA_STREAMS_RULES;

出力は次のようになります。

                                                 Oracle
Oracle         Oracle                            Streams
Streams        Streams     Rule         Rule Set Rule    Schema Object      Rule
Name           Type        Name         Type     Level   Name   Name        Type
-------------- ----------- ------------ -------- ------- ------ ----------- ----
STRM01_CAPTURE CAPTURE     JOBS4        POSITIVE TABLE   HR     JOBS        DML
STRM01_CAPTURE CAPTURE     JOBS5        POSITIVE TABLE   HR     JOBS        DDL
DBS1_TO_DBS2   PROPAGATION HR18         POSITIVE SCHEMA  HR                 DDL
DBS1_TO_DBS2   PROPAGATION HR17         POSITIVE SCHEMA  HR                 DML
APPLY          APPLY       HR20         POSITIVE SCHEMA  HR                 DML
APPLY          APPLY       JOB_HISTORY2 NEGATIVE TABLE   HR     JOB_HISTORY DML
OE             DEQUEUE     RULE$_28     POSITIVE

この出力から、データベース内のOracle Streamsクライアントが使用するルールについて、次の情報が得られます。

  • DMLルールjobs4とDDLルールjobs5はいずれも、取得プロセスstrm01_captureのポジティブ・ルール・セットに含まれるhr.jobs表の表ルールである。

  • DMLルールhr17とDDLルールhr18はいずれも、伝播dbs1_to_dbs2のポジティブ・ルール・セットに含まれるhrスキーマのスキーマ・ルールである。

  • DMLルールhr20は、適用プロセスapplyのポジティブ・ルール・セットに含まれるhrスキーマのスキーマ・ルールである。

  • DMLルールjob_history2は、適用プロセスapplyのネガティブ・ルール・セットに含まれるhrスキーマの表ルールである。

  • ルールrule$_28は、メッセージ・クライアントoeのポジティブ・ルール・セットに含まれるメッセージ・ルールである。

ALL_STREAMS_RULESビューおよびDBA_STREAMS_RULESビューには、Oracle Streamsクライアントによって使用されるルール・セットに関する情報、Oracle Streamsルールの現在および元のルール条件、ルール条件が変更されたかどうか、各Oracle Streams サブセット・ルールのサブセット化操作とDML条件、各Oracle Streamsルールに指定されたソース・データベース、およびOracle Streamsメッセージ・ルールのメッセージ・タイプとメッセージ変数に関する情報も含まれます。

次のデータ・ディクショナリ・ビューでも、Oracle Streamsルールが表示されます。

  • ALL_STREAMS_GLOBAL_RULES

  • DBA_STREAMS_GLOBAL_RULES

  • ALL_STREAMS_MESSAGE_RULES

  • DBA_STREAMS_MESSAGE_RULES

  • ALL_STREAMS_SCHEMA_RULES

  • DBA_STREAMS_SCHEMA_RULES

  • ALL_STREAMS_TABLE_RULES

  • DBA_STREAMS_TABLE_RULES

これらのビューには、Oracle Streamsのルールのみが表示されます。DBMS_RULE_ADMパッケージによって行われたこれらのルールに対して手動で行われた変更や、DBMS_RULE_ADMパッケージを使用して作成されたルールは、表示されません。これらのビューには、各ルールの元のルール条件のみが表示されます。ルールの作成後にそのルール条件が変更されても、そのルールの最新のルール条件は表示されません。

特定のOracle Streamsクライアントによって使用されるOracle Streamsルールの表示

特定のOracle Streamsクライアントによって使用されているルール・セット内のルールを判別するには、DBA_STREAMS_RULESデータ・ディクショナリ・ビューを問い合せます。たとえば、データベースがstrm01_applyという適用プロセスを実行しているとします。次の項では、この適用プロセスのポジティブ・ルール・セットおよびネガティブ・ルール・セット内のルールを判別する方法を説明します。

次の各項では、特定のOracle Streamsクライアントによって使用されるルール・セット内のルールを判別する方法を説明します。

Oracle Streamsクライアント用のポジティブ・ルール・セット内のルールの表示

次の問合せを実行すると、strm01_applyという適用プロセスポジティブ・ルール・セットに含まれるすべてのルールが表示されます。

COLUMN RULE_OWNER HEADING 'Rule Owner' FORMAT A10
COLUMN RULE_NAME HEADING 'Rule|Name' FORMAT A12
COLUMN STREAMS_RULE_TYPE HEADING 'Oracle Streams|Rule|Level' FORMAT A7
COLUMN SCHEMA_NAME HEADING 'Schema|Name' FORMAT A6
COLUMN OBJECT_NAME HEADING 'Object|Name' FORMAT A11
COLUMN RULE_TYPE HEADING 'Rule|Type' FORMAT A4
COLUMN SOURCE_DATABASE HEADING 'Source' FORMAT A10
COLUMN INCLUDE_TAGGED_LCR HEADING 'Apply|Tagged|LCRs?' FORMAT A9

SELECT RULE_OWNER,
       RULE_NAME,
       STREAMS_RULE_TYPE,
       SCHEMA_NAME,
       OBJECT_NAME,
       RULE_TYPE,
       SOURCE_DATABASE,
       INCLUDE_TAGGED_LCR
  FROM DBA_STREAMS_RULES
  WHERE STREAMS_NAME  = 'STRM01_APPLY' AND
        RULE_SET_TYPE = 'POSITIVE';

この問合せで行が戻された場合、適用プロセスは、ルールがTRUEと評価される変更を含むLCRを適用します。

出力は次のようになります。

                           Oracle Streams                                    Apply
           Rule            Rule    Schema Object      Rule            Tagged
Rule Owner Name            Level   Name   Name        Type Source     LCRs?
---------- --------------- ------- ------ ----------- ---- ---------- ---------
STRMADMIN  HR20            SCHEMA  HR                 DML   DBS1.EXAM NO
                                                            PLE.COM
STRMADMIN  HR21            SCHEMA  HR                 DDL   DBS1.EXAM NO
                                                            PLE.COM

この問合せによって返されたOracle Streamsルールのルール条件が変更されていないとすると、これらの結果は、hrスキーマに対してdbs1.example.comデータベースで発生したDML変更およびDDL変更を含むLCRが、適用プロセスによって適用されることを示します。これらのLCRを適用するように適用プロセスに指示するポジティブ・ルール・セット内のルールは、所有者がstrmadminユーザーで、名前はhr20およびhr21です。また、適用プロセスではこれらのルールの1つを満たすLCRが適用されますが、LCR内のタグNULLの場合にかぎります。

Oracle Streamsルールのルール条件が変更された場合は、現行のルール条件をチェックして、ルールがOracle Streamsクライアントに及ぼす影響を判断する必要があります。ルール条件が変更されたOracle StreamsルールのSAME_RULE_CONDITION列はNO となります。

Oracle Streamsクライアント用のネガティブ・ルール・セット内のルールの表示

次の問合せは、strm01_applyという適用プロセスネガティブ・ルール・セット内にあるすべてのルールを表示しています。

COLUMN RULE_OWNER HEADING 'Rule Owner' FORMAT A10
COLUMN RULE_NAME HEADING 'Rule|Name' FORMAT A15
COLUMN STREAMS_RULE_TYPE HEADING 'Oracle Streams|Rule|Level' FORMAT A7
COLUMN SCHEMA_NAME HEADING 'Schema|Name' FORMAT A6
COLUMN OBJECT_NAME HEADING 'Object|Name' FORMAT A11
COLUMN RULE_TYPE HEADING 'Rule|Type' FORMAT A4
COLUMN SOURCE_DATABASE HEADING 'Source' FORMAT A10
COLUMN INCLUDE_TAGGED_LCR HEADING 'Apply|Tagged|LCRs?' FORMAT A9

SELECT RULE_OWNER,
       RULE_NAME,
       STREAMS_RULE_TYPE,
       SCHEMA_NAME,
       OBJECT_NAME,
       RULE_TYPE,
       SOURCE_DATABASE,
       INCLUDE_TAGGED_LCR
  FROM DBA_STREAMS_RULES
  WHERE STREAMS_NAME  = 'APPLY' AND
        RULE_SET_TYPE = 'NEGATIVE';

この問合せで行が戻された場合、適用プロセスは、ルールがTRUEと評価される変更を含むLCRを廃棄します。

出力は次のようになります。

                           Oracle Streams                                    Apply
           Rule            Rule    Schema Object      Rule            Tagged
Rule Owner Name            Level   Name   Name        Type Source     LCRs?
---------- --------------- ------- ------ ----------- ---- ---------- ---------
STRMADMIN  JOB_HISTORY22   TABLE   HR     JOB_HISTORY DML  DBS1.EXAMP YES
                                                           LE.COM
STRMADMIN  JOB_HISTORY23   TABLE   HR     JOB_HISTORY DDL  DBS1.EXAMP YES
                                                           LE.COM

この問合せによって返されたOracle Streamsルールのルール条件が変更されていないとすると、これらの結果は、hr.job_history表に対してdbs1.example.comデータベースで発生したDML変更およびDDL変更を含むLCRが、適用プロセスによって廃棄されることを示します。これらのLCRを適用するように適用プロセスに指示するネガティブ・ルール・セット内のルールは、所有者がstrmadminで、名前はjob_history22およびjob_history23です。また、LCRのタグの値に関係なく、適用プロセスではこれらのルールの1つを満たすLCRが廃棄されます。

Oracle Streamsルールのルール条件が変更された場合は、現行のルール条件をチェックして、ルールがOracle Streamsクライアントに及ぼす影響を判断する必要があります。ルール条件が変更されたOracle StreamsルールのSAME_RULE_CONDITION列はNO となります。

ルールの現行の条件の表示

ルールの名前がわかっている場合は、そのルール条件を表示できます。たとえば、「特定のOracle Streamsクライアントによって使用されるOracle Streamsルールの表示」の問合せで返されるルールについて考えてみます。このルールの名前はhr1で、次の問合せを実行するとその条件を表示できます。

SET LONG  8000
SET PAGES 8000
SELECT RULE_CONDITION "Current Rule Condition"
  FROM DBA_STREAMS_RULES 
  WHERE RULE_NAME  = 'HR1' AND
        RULE_OWNER = 'STRMADMIN';

出力は次のようになります。

Current Rule Condition
--------------------------------------------------------------------------------
((((:dml.get_object_owner() = 'HR') and :dml.get_source_database_name() = 'DA.EX
AMPLE.COM' )) and (:dml.get_compatible() <= dbms_streams.compatible_11_2))

Oracle Streamsルール用に変更されたルール条件の表示

Oracle Streamsルールルール条件は変更できます。ルール条件を変更すると、Oracle Streamsルールを使用するOracle Streamsクライアントの動作が変化する場合があります。また、変更によってはルール評価のパフォーマンスが低下することもあります。

次の問合せを実行すると、条件が変更された各Oracle Streamsルールのルール名、元のルール条件および現行のルール条件が表示されます。

COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A12
COLUMN ORIGINAL_RULE_CONDITION HEADING 'Original Rule Condition' FORMAT A33
COLUMN RULE_CONDITION HEADING 'Current Rule Condition' FORMAT A33

SET LONG  8000
SET PAGES 8000
SELECT RULE_NAME, ORIGINAL_RULE_CONDITION, RULE_CONDITION
  FROM DBA_STREAMS_RULES 
  WHERE SAME_RULE_CONDITION = 'NO';

出力は次のようになります。

Rule Name    Original Rule Condition           Current Rule Condition
------------ --------------------------------- ---------------------------------
HR20         ((:dml.get_object_owner() = 'HR') ((:dml.get_object_owner() = 'HR')
              and :dml.is_null_tag() = 'Y' )    and :dml.is_null_tag() = 'Y' and
                                                :dml.get_object_name() != 'JOB_H
                                               ISTORY')

この例で、出力はhr20ルールの条件が変更されたことを示しています。最初、このスキーマ・ルールは、hrスキーマに対するすべての変更についてTRUEと評価されていました。このルールの現行の条件では、hr.job_history表に対するDML変更を除き、hrスキーマに対するすべての変更についてTRUEと評価されます。


注意:

この項の問合せは、Oracle Streamsルールのみに使用できます。DBMS_RULE_ADMパッケージを使用して作成されたルールには適用されません。これは、これらのルールが常に、ORIGINAL_RULE_CONDITION列にNULL、およびSAME_RULE_CONDITION列にNULLが表示されるためです。

各ルール・セットの評価コンテキストの表示

次の問合せを実行すると、データベース内のルール・セットごとにデフォルトの評価コンテキストが表示されます。

COLUMN RULE_SET_OWNER HEADING 'Rule Set|Owner' FORMAT A10
COLUMN RULE_SET_NAME HEADING 'Rule Set Name' FORMAT A20
COLUMN RULE_SET_EVAL_CONTEXT_OWNER HEADING 'Eval Context|Owner' FORMAT A12
COLUMN RULE_SET_EVAL_CONTEXT_NAME HEADING 'Eval Context Name' FORMAT A30

SELECT RULE_SET_OWNER, 
       RULE_SET_NAME, 
       RULE_SET_EVAL_CONTEXT_OWNER,
       RULE_SET_EVAL_CONTEXT_NAME
  FROM DBA_RULE_SETS;

出力は次のようになります。

Rule Set                        Eval Context
Owner      Rule Set Name        Owner        Eval Context Name
---------- -------------------- ------------ ------------------------------
STRMADMIN  RULESET$_2           SYS          STREAMS$_EVALUATION_CONTEXT
STRMADMIN  STRM02_QUEUE_R       STRMADMIN    AQ$_STRM02_QUEUE_TABLE_V
STRMADMIN  APPLY_OE_RS          STRMADMIN    OE_EVAL_CONTEXT
STRMADMIN  OE_QUEUE_R           STRMADMIN    AQ$_OE_QUEUE_TABLE_V
STRMADMIN  AQ$_1_RE             STRMADMIN    AQ$_OE_QUEUE_TABLE_V
SUPPORT    RS                   SUPPORT      EVALCTX
OE         NOTIFICATION_QUEUE_R OE           AQ$_NOTIFICATION_QUEUE_TABLE_V

評価コンテキストで使用される表に関する情報の表示

次の問合せを実行すると、supportユーザーが所有するevalctxという評価コンテキストで使用される表に関する情報が表示されます。

COLUMN TABLE_ALIAS HEADING 'Table Alias' FORMAT A20
COLUMN TABLE_NAME HEADING 'Table Name' FORMAT A40

SELECT TABLE_ALIAS,
       TABLE_NAME
  FROM DBA_EVALUATION_CONTEXT_TABLES
  WHERE EVALUATION_CONTEXT_OWNER = 'SUPPORT' AND
        EVALUATION_CONTEXT_NAME = 'EVALCTX';

出力は次のようになります。

Table Alias          Table Name
-------------------- ----------------------------------------
PROB                 problems

評価コンテキスト内で使用される変数に関する情報の表示

次の問合せを実行すると、supportユーザーが所有するevalctxという評価コンテキストによって使用される変数に関する情報が表示されます。

COLUMN VARIABLE_NAME HEADING 'Variable Name' FORMAT A15
COLUMN VARIABLE_TYPE HEADING 'Variable Type' FORMAT A15
COLUMN VARIABLE_VALUE_FUNCTION HEADING 'Variable Value|Function' FORMAT A20
COLUMN VARIABLE_METHOD_FUNCTION HEADING 'Variable Method|Function' FORMAT A20

SELECT VARIABLE_NAME,
       VARIABLE_TYPE,
       VARIABLE_VALUE_FUNCTION,
       VARIABLE_METHOD_FUNCTION
  FROM DBA_EVALUATION_CONTEXT_VARS
  WHERE EVALUATION_CONTEXT_OWNER = 'SUPPORT' AND
        EVALUATION_CONTEXT_NAME = 'EVALCTX';

出力は次のようになります。

                                Variable Value       Variable Method
Variable Name   Variable Type   Function             Function
--------------- --------------- -------------------- --------------------
CURRENT_TIME    DATE            timefunc

ルール・セットの全ルールの表示

この項で説明する問合せを実行すると、ルール・セット内の全のルールに関する次の情報が表示されます。

  • ルールの所有者。

  • ルールの名前。

  • 存在する場合は、ルールの評価コンテキスト。ルールに評価コンテキストがなく、そのルールをルール・セットに追加するときにADD_RULEプロシージャで評価コンテキストが指定されていない場合は、ルール・セットの評価コンテキストが継承されます。

  • ルールに評価コンテキストがある場合は、評価コンテキストの所有者。

たとえば、ユーザーstrmadminが所有するoe_queue_rというルール・セット内のルールごとにこの情報を表示するには、次の問合せを実行します。

COLUMN RULE_OWNER HEADING 'Rule Owner' FORMAT A10
COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A20
COLUMN RULE_EVALUATION_CONTEXT_NAME HEADING 'Eval Context Name' FORMAT A27
COLUMN RULE_EVALUATION_CONTEXT_OWNER HEADING 'Eval Context|Owner' FORMAT A11

SELECT R.RULE_OWNER, 
       R.RULE_NAME, 
       R.RULE_EVALUATION_CONTEXT_NAME,
       R.RULE_EVALUATION_CONTEXT_OWNER
  FROM DBA_RULES R, DBA_RULE_SET_RULES RS 
  WHERE RS.RULE_SET_OWNER = 'STRMADMIN' AND 
        RS.RULE_SET_NAME = 'OE_QUEUE_R' AND 
  RS.RULE_NAME = R.RULE_NAME AND 
  RS.RULE_OWNER = R.RULE_OWNER;

出力は次のようになります。

                                                            Eval Contex
Rule Owner Rule Name            Eval Context Name           Owner
---------- -------------------- --------------------------- -----------
STRMADMIN  HR1                  STREAMS$_EVALUATION_CONTEXT SYS
STRMADMIN  APPLY_LCRS           STREAMS$_EVALUATION_CONTEXT SYS
STRMADMIN  OE_QUEUE$3
STRMADMIN  APPLY_ACTION

ルール・セット内の各ルールの条件の表示

次の問合せでは、ユーザーstrmadminが所有するルール・セットhr_queue_r内の各ルールについて前述の条件が表示されます。

SET LONGCHUNKSIZE 4000
SET LONG 4000
COLUMN RULE_OWNER HEADING 'Rule Owner' FORMAT A15
COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A15
COLUMN RULE_CONDITION HEADING 'Rule Condition' FORMAT A45

SELECT R.RULE_OWNER, 
       R.RULE_NAME, 
       R.RULE_CONDITION
  FROM DBA_RULES R, DBA_RULE_SET_RULES RS 
  WHERE RS.RULE_SET_OWNER = 'STRMADMIN' AND 
        RS.RULE_SET_NAME = 'HR_QUEUE_R' AND 
  RS.RULE_NAME = R.RULE_NAME AND 
  RS.RULE_OWNER = R.RULE_OWNER;

出力は次のようになります。

Rule Owner      Rule Name       Rule Condition
--------------- --------------- ---------------------------------------------
STRMADMIN       APPLY_ACTION     hr.get_hr_action(tab.user_data) = 'APPLY'
STRMADMIN       APPLY_LCRS      :dml.get_object_owner() = 'HR' AND  (:dml.get
                                _object_name() = 'DEPARTMENTS' OR 
                                :dml.get_object_name() = 'EMPLOYEES')

STRMADMIN       HR_QUEUE$3      hr.get_hr_action(tab.user_data) != 'APPLY'

条件に指定パターンが含まれる各ルールのリスト表示

条件に指定パターンが含まれるデータベース内の各ルールをリストするには、DBMS_RULESデータ・ディクショナリ・ビューを問い合せ、DBMS_LOB.INSTRファンクションを使用して、ルール条件のパターンを検索します。たとえば、次の問合せでは、条件にパターン'HR'が含まれる各ルールがリストされます。

COLUMN RULE_OWNER HEADING 'Rule Owner' FORMAT A30
COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A30

SELECT RULE_OWNER, RULE_NAME FROM DBA_RULES 
  WHERE DBMS_LOB.INSTR(RULE_CONDITION, 'HR', 1, 1) > 0;

出力は次のようになります。

Rule Owner                     Rule Name
------------------------------ ------------------------------
STRMADMIN                      DEPARTMENTS4
STRMADMIN                      DEPARTMENTS5
STRMADMIN                      DEPARTMENTS6

すべてのルール・セット評価の総合統計の表示

データベース・インスタンスが最後に起動された後に実行されたすべてのルール・セット評価に関する統計を表示するには、V$RULE_SET_AGGREGATE_STATS動的パフォーマンス・ビューを問い合せます。

この項の問合せを実行すると、ルール・セット評価に関する次の情報が表示されます。

  • ルール・セット評価の数。

  • 最初のヒットで停止するように指示されたルール・セット評価の数。

  • 単純ルールのみを評価するように指示されたルール・セット評価の数。

  • SQLを発行しないでルール・セットが評価された回数。一般に、SQLを発行してルールを評価すると、発行しない場合よりコストが高くなります。

  • ルール・セット評価にかかったCPUタイム(センチセカンド)。

  • ルール・セット評価にかかった時間(センチセカンド)。

  • ルール・セット内のルールを評価するために発行されたSQLの数。

  • ルール・セット評価中に処理されたルール条件の数。

  • ルール・エンジン・クライアントに返されたTRUEルールの数。

  • ルール・エンジン ・クライアントに返されたMAYBEルールの数。

  • ルール・セット評価中に、変数値ファンクション、変数メソッド・ファンクションおよび評価ファンクションがコールされた回数。

次の問合せを実行すると、前述の情報が表示されます。

COLUMN NAME HEADING 'Name of Statistic' FORMAT A55
COLUMN VALUE HEADING 'Value' FORMAT 999999999

SELECT NAME, VALUE FROM V$RULE_SET_AGGREGATE_STATS;

出力は次のようになります。

Name of Statistic                                            Value
------------------------------------------------------- ----------
rule set evaluations (all)                                    5584
rule set evaluations (first_hit)                              5584
rule set evaluations (simple_rules_only)                      3675
rule set evaluations (SQL free)                               5584
rule set evaluation time (CPU)                                 179
rule set evaluation time (elapsed)                            1053
rule set SQL executions                                          0
rule set conditions processed                                11551
rule set true rules                                             10
rule set maybe rules                                           328
rule set user function calls (variable value function)         182
rule set user function calls (variable method function)      12794
rule set user function calls (evaluation function)            3857

注意:

センチセカンドは、100分の1秒です。そのため、たとえば、前述の出力では、CPUタイムが1.79秒、経過時間が10.53秒です。

各ルール・セットの評価に関する情報の表示

データベース・インスタンスが最後に起動された後に実行されたすべてのルール・セットの評価に関する情報を表示するには、V$RULE_SET動的パフォーマンス・ビューを問い合せます。この項で説明する問合せを実行すると、データベース内の各ルール・セットに関する次の情報が表示されます。

  • ルール・セットの所有者

  • ルール・セットの名前。

  • データベース・インスタンスが前回起動してから実施されたルール・セット評価の合計数。

  • データベース・インスタンスが最後に起動されてからルールを評価するためにSQLが実行された回数。一般に、SQLを発行してルールを評価すると、発行しない場合よりコストが高くなります。

  • データベース・インスタンスが最後に起動されてから、SQLを発行せずに実行されたルール・セット評価の合計数。

  • データベース・インスタンスが最後に起動されてから、ルール・セットを使用してルール・エンジン・クライアントに返されたTRUEルールの合計数。

  • データベース・インスタンスが最後に起動されてから、ルール・セットを使用してルール・エンジン・クライアントに戻されたMAYBEルールの合計数。

次の問合せを実行すると、データベース内の各ルール・セットに関する前述の情報が表示されます。

COLUMN OWNER HEADING 'Rule Set|Owner' FORMAT A9
COLUMN NAME HEADING 'Rule Set|Name' FORMAT A11
COLUMN EVALUATIONS HEADING 'Total|Evaluations' FORMAT 99999999
COLUMN SQL_EXECUTIONS HEADING 'SQL|Executions' FORMAT 99999999
COLUMN SQL_FREE_EVALUATIONS HEADING 'SQL Free|Evaluations' FORMAT 99999999
COLUMN TRUE_RULES HEADING 'True|Rules' FORMAT 999999999
COLUMN MAYBE_RULES HEADING 'Maybe|Rules' FORMAT 99999999

SELECT OWNER, 
       NAME, 
       EVALUATIONS,
       SQL_EXECUTIONS,
       SQL_FREE_EVALUATIONS,
       TRUE_RULES,
       MAYBE_RULES
  FROM V$RULE_SET;

出力は次のようになります。

Rule Set  Rule Set          Total        SQL    SQL Free       True     Maybe
Owner     Name        Evaluations Executions Evaluations      Rules     Rules
--------- ----------- ----------- ---------- ----------- ---------- ---------
SYS       ALERT_QUE_R           3          0           0          2         0
STRMADMIN RULESET$_4           86          0           0         43         1
STRMADMIN RULESET$_11         458          0           0         11         0
STRMADMIN RULESET$_9           87          0           0          1        42
STRMADMIN RULESET$_7           87          0           0         44         1

注意:

データベースのライブラリ・キャッシュのサイズが大きい場合、V$RULE_SETビューを問い合せると、パフォーマンスが低下するおそれがあります。

各ルール・セットの評価に使用されたリソースの判断

データベース・インスタンスが最後に起動された後のルール・セットの評価で使用されたリソースを判断するには、V$RULE_SET動的パフォーマンス・ビューを問い合せます。データベース・インスタンスが最後に起動されてからルール・セットが複数回評価されている場合、CPUタイム、評価時間、使用された共有メモリー(バイト)などの一部の統計は累積されます。

この項で説明する問合せを実行すると、データベース内の各ルール・セットに関する次の情報が表示されます。

  • ルール・セットの所有者

  • ルール・セットの名前

  • データベース・インスタンスが最後に起動された後のルール・セット評価に使用された合計CPUタイム(秒)

  • データベース・インスタンスが最後に起動された後のルール・セット評価に使用された合計時間(秒)

  • データベース・インスタンスが最後に起動された後のルール・セット評価に使用された共有メモリーの合計量(バイト)

次の問合せを実行すると、データベース内の各ルール・セットに関する前述の情報が表示されます。

COLUMN OWNER HEADING 'Rule Set|Owner' FORMAT A15
COLUMN NAME HEADING 'Rule Set Name' FORMAT A15
COLUMN CPU_SECONDS HEADING 'Seconds|of CPU|Time' FORMAT 999999.999
COLUMN ELAPSED_SECONDS HEADING 'Seconds of|Evaluation|Time' FORMAT 999999.999
COLUMN SHARABLE_MEM HEADING 'Bytes|of Shared|Memory' FORMAT 999999999

SELECT OWNER, 
       NAME, 
       (CPU_TIME/100) CPU_SECONDS,
       (ELAPSED_TIME/100) ELAPSED_SECONDS,
       SHARABLE_MEM
  FROM V$RULE_SET;

出力は次のようになります。

                                    Seconds  Seconds of      Bytes
Rule Set                             of CPU  Evaluation  of Shared
Owner           Rule Set Name          Time        Time     Memory
--------------- --------------- ----------- ----------- ----------
SYS             ALERT_QUE_R            .230        .490      25120
STRMADMIN       RULESET$_4             .060        .970      25097
STRMADMIN       RULESET$_11            .040        .030      25098
STRMADMIN       RULESET$_9             .220       3.040      25505
STRMADMIN       RULESET$_7             .040        .380      21313

注意:

データベースのライブラリ・キャッシュのサイズが大きい場合、V$RULE_SETビューを問い合せると、パフォーマンスが低下するおそれがあります。

ルールの評価統計の表示

データベース・インスタンスが最後に起動された後に実行された特定ルールの評価統計を表示するには、V$RULE動的パフォーマンス・ビューを問い合せます。この項で説明する問合せを実行すると、データベース内の各ルール・セットに関する次の情報が表示されます。

  • データベース・インスタンスが最後に起動されてから、ルールがTRUEと評価された合計回数。

  • データベース・インスタンスが最後に起動されてから、ルールがMAYBEと評価された合計回数。

  • データベース・インスタンスが最後に起動されてから、SQLを発行したルール評価の合計数。一般的に、SQLを発行してルールを評価すると、発行しない場合よりコストが高くなります。

たとえば、次の問合せを実行すると、strmadminスキーマのlocations25ルールに関する前述の情報が表示されます。

COLUMN TRUE_HITS HEADING 'True Evaluations' FORMAT 99999999999
COLUMN MAYBE_HITS HEADING 'Maybe Evaluations' FORMAT 99999999999
COLUMN SQL_EVALUATIONS HEADING 'SQL Evaluations' FORMAT 99999999999

SELECT TRUE_HITS, MAYBE_HITS, SQL_EVALUATIONS 
  FROM V$RULE
  WHERE RULE_OWNER = 'STRMADMIN' AND
        RULE_NAME  = 'LOCATIONS25';

出力は次のようになります。

True Evaluations Maybe Evaluations SQL Evaluations
---------------- ----------------- ---------------
            1518               154               0