The following topics describe monitoring rules, rule sets, and evaluation contexts:
Displaying the Oracle Streams Rules Used by a Specific Oracle Streams Client
Displaying Modified Rule Conditions for Oracle Streams Rules
Displaying Information About the Tables Used by an Evaluation Context
Displaying Information About the Variables Used in an Evaluation Context
Listing Each Rule that Contains a Specified Pattern in Its Condition
Displaying Aggregate Statistics for All Rule Set Evaluations
Determining the Resources Used by Evaluation of Each Rule Set
Note:
The Oracle Streams tool in Oracle Enterprise Manager is also an excellent way to monitor an Oracle Streams environment. See the online Help for the Oracle Streams tool for more information.See Also:
Chapter 34, "Troubleshooting Rules and Rule-Based Transformations"
"Modifying a Name-Value Pair in a Rule Action Context" for information about viewing a rule action context
Oracle Database Reference for information about the data dictionary views described in this chapter
Oracle Streams rules are created using the DBMS_STREAMS_ADM package or the Oracle Streams tool in Oracle Enterprise Manager. Oracle Streams rules in the rule sets for an Oracle Streams client determine the behavior of the Oracle Streams client. Oracle Streams clients include capture processes, propagations, apply processes, and messaging clients. The rule sets for an Oracle Streams client can also contain rules created using the DBMS_RULE_ADM package, and these rules also determine the behavior of the Oracle Streams client.
For example, if a rule in the positive rule set for a capture process evaluates to TRUE for DML changes to the hr.employees table, then the capture process captures DML changes to this table. However, if a rule in the negative rule set for a capture process evaluates to TRUE for DML changes to the hr.employees table, then the capture process discards DML changes to this table.
You query the following data dictionary views to display all rules in the rule sets for Oracle Streams clients, including Oracle Streams rules and rules created using the DBMS_RULE_ADM package:
ALL_STREAMS_RULES
DBA_STREAMS_RULES
In addition, these two views display the current rule condition for each rule and whether the rule condition has been modified.
The query in this section displays the following information about all of the rules used by Oracle Streams clients in a database:
The name of each Oracle Streams client that uses the rule
The type of each Oracle Streams client that uses the rule, either CAPTURE for a capture process, SYNCHRONOUS CAPTURE for a synchronous capture, PROPAGATION for a propagation, APPLY for an apply process, or DEQUEUE for a messaging client
The name of the rule
The type of rule set that contains the rule for the Oracle Streams client, either POSITIVE or NEGATIVE
For Oracle Streams rules, the Oracle Streams rule level, either GLOBAL, SCHEMA, or TABLE
For Oracle Streams rules, the name of the schema for schema rules and table rules
For Oracle Streams rules, the name of the table for table rules
For Oracle Streams rules, the rule type, either DML or DDL
Run the following query to display this information:
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;
Your output looks similar to the following:
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
This output provides the following information about the rules used by Oracle Streams clients in the database:
The DML rule jobs4 and the DDL rule jobs5 are both table rules for the hr.jobs table in the positive rule set for the capture process strm01_capture.
The DML rule hr17 and the DDL rule hr18 are both schema rules for the hr schema in the positive rule set for the propagation dbs1_to_dbs2.
The DML rule hr20 is a schema rule for the hr schema in the positive rule set for the apply process apply.
The DML rule job_history2 is a table rule for the hr schema in the negative rule set for the apply process apply.
The rule rule$_28 is a messaging rule in the positive rule set for the messaging client oe.
The ALL_STREAMS_RULES and DBA_STREAMS_RULES views also contain information about the rule sets used by an Oracle Streams client, the current and original rule condition for Oracle Streams rules, whether the rule condition has been changed, the subsetting operation and DML condition for each Oracle Streams subset rule, the source database specified for each Oracle Streams rule, and information about the message type and message variable for Oracle Streams messaging rules.
The following data dictionary views also display Oracle Streams rules:
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
These views display Oracle Streams rules only. They do not display any manual modifications to these rules made by the DBMS_RULE_ADM package, and they do not display rules created using the DBMS_RULE_ADM package. These views can display the original rule condition for each rule only. They do not display the current rule condition for a rule if the rule condition was modified after the rule was created.
To determine which rules are in a rule set used by a particular Oracle Streams client, you can query the DBA_STREAMS_RULES data dictionary view. For example, suppose a database is running an apply process named strm01_apply. The following sections describe how to determine the rules in the positive rule set and negative rule set for this apply process.
The following sections describe how to determine which rules are in a rule set used by a particular Oracle Streams client:
Displaying the Rules in the Positive Rule Set for an Oracle Streams Client
Displaying the Rules in the Negative Rule Set for an Oracle Streams Client
See Also:
The following query displays all of the rules in the positive rule set for an apply processs named 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';
If this query returns any rows, then the apply process applies LCRs containing changes that evaluate to TRUE for the rules.
Your output looks similar to the following:
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
Assuming the rule conditions for the Oracle Streams rules returned by this query have not been modified, these results show that the apply process applies LCRs containing DML changes and DDL changes to the hr schema and that the LCRs originated at the dbs1.example.com database. The rules in the positive rule set that instruct the apply process to apply these LCRs are owned by the strmadmin user and are named hr20 and hr21. Also, the apply process applies an LCR that satisfies one of these rules only if the tag in the LCR is NULL.
If the rule condition for an Oracle Streams rule has been modified, then you must check the current rule condition to determine the effect of the rule on an Oracle Streams client. Oracle Streams rules whose rule condition has been modified have NO for the SAME_RULE_CONDITION column.
The following query displays all of the rules in the negative rule set for an apply process named 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';
If this query returns any rows, then the apply process discards LCRs containing changes that evaluate to TRUE for the rules.
Your output looks similar to the following:
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
Assuming the rule conditions for the Oracle Streams rules returned by this query have not been modified, these results show that the apply process discards LCRs containing DML changes and DDL changes to the hr.job_history table and that the LCRs originated at the dbs1.example.com database. The rules in the negative rule set that instruct the apply process to discard these LCRs are owned by the strmadmin user and are named job_history22 and job_history23. Also, the apply process discards an LCR that satisfies one of these rules regardless of the value of the tag in the LCR.
If the rule condition for an Oracle Streams rule has been modified, then you must check the current rule condition to determine the effect of the rule on an Oracle Streams client. Oracle Streams rules whose rule condition has been modified have NO for the SAME_RULE_CONDITION column.
If you know the name of a rule, then you can display its rule condition. For example, consider the rule returned by the query in "Displaying the Oracle Streams Rules Used by a Specific Oracle Streams Client". The name of the rule is hr1, and you can display its condition by running the following query:
SET LONG 8000
SET PAGES 8000
SELECT RULE_CONDITION "Current Rule Condition"
FROM DBA_STREAMS_RULES
WHERE RULE_NAME = 'HR1' AND
RULE_OWNER = 'STRMADMIN';
Your output looks similar to the following:
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))
See Also:
It is possible to modify the rule condition of an Oracle Streams rule. These modifications can change the behavior of the Oracle Streams clients using the Oracle Streams rule. In addition, some modifications can degrade rule evaluation performance.
The following query displays the rule name, the original rule condition, and the current rule condition for each Oracle Streams rule whose condition has been modified:
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';
Your output looks similar to the following:
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')
In this example, the output shows that the condition of the hr20 rule has been modified. Originally, this schema rule evaluated to TRUE for all changes to the hr schema. The current modified condition for this rule evaluates to TRUE for all changes to the hr schema, except for DML changes to the hr.job_history table.
Note:
The query in this section applies only to Oracle Streams rules. It does not apply to rules created using theDBMS_RULE_ADM package because these rules always show NULL for the ORIGINAL_RULE_CONDITION column and NULL for the SAME_RULE_CONDITION column.See Also:
The following query displays the default evaluation context for each rule set in a database:
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;
Your output looks similar to the following:
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
The following query displays information about the tables used by an evaluation context named evalctx, which is owned by the support user:
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';
Your output looks similar to the following:
Table Alias Table Name -------------------- ---------------------------------------- PROB problems
See Also:
"Rule Evaluation Context"The following query displays information about the variables used by an evaluation context named evalctx, which is owned by the support user:
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';
Your output looks similar to the following:
Variable Value Variable Method
Variable Name Variable Type Function Function
--------------- --------------- -------------------- --------------------
CURRENT_TIME DATE timefunc
See Also:
"Rule Evaluation Context"The query in this section displays the following information about all of the rules in a rule set:
The owner of the rule.
The name of the rule.
The evaluation context for the rule, if any. If a rule does not have an evaluation context, and no evaluation context is specified in the ADD_RULE procedure when the rule is added to a rule set, then it inherits the evaluation context of the rule set.
The evaluation context owner, if the rule has an evaluation context.
For example, to display this information for each rule in a rule set named oe_queue_r that is owned by the user strmadmin, run the following query:
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;
Your output looks similar to the following:
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
The following query displays the condition for each rule in a rule set named hr_queue_r that is owned by the user strmadmin:
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;
Your output looks similar to the following:
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'
See Also:
To list each rule in a database that contains a specified pattern in its condition, you can query the DBMS_RULES data dictionary view and use the DBMS_LOB.INSTR function to search for the pattern in the rule conditions. For example, the following query lists each rule that contains the pattern 'HR' in its condition:
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;
Your output looks similar to the following:
Rule Owner Rule Name ------------------------------ ------------------------------ STRMADMIN DEPARTMENTS4 STRMADMIN DEPARTMENTS5 STRMADMIN DEPARTMENTS6
You can query the V$RULE_SET_AGGREGATE_STATS dynamic performance view to display statistics for all rule set evaluations since the database instance last started.
The query in this section contains the following information about rule set evaluations:
The number of rule set evaluations.
The number of rule set evaluations that were instructed to stop on the first hit.
The number of rule set evaluations that were instructed to evaluate only simple rules.
The number of times a rule set was evaluated without issuing any SQL. Generally, issuing SQL to evaluate rules is more expensive than evaluating rules without issuing SQL.
The number of centiseconds of CPU time used for rule set evaluation.
The number of centiseconds spent on rule set evaluation.
The number of SQL executions issued to evaluate a rule in a rule set.
The number of rule conditions processed during rule set evaluation.
The number of TRUE rules returned to the rules engine clients.
The number of MAYBE rules returned to the rules engine clients.
The number of times the following types of functions were called during rule set evaluation: variable value function, variable method function, and evaluation function.
Run the following query to display this information:
COLUMN NAME HEADING 'Name of Statistic' FORMAT A55 COLUMN VALUE HEADING 'Value' FORMAT 999999999 SELECT NAME, VALUE FROM V$RULE_SET_AGGREGATE_STATS;
Your output looks similar to the following:
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
Note:
A centisecond is one-hundredth of a second. So, for example, this output shows 1.79 seconds of CPU time and 10.53 seconds of elapsed time.You can query the V$RULE_SET dynamic performance view to display information about evaluations for each rule set since the database instance last started. The query in this section contains the following information about each rule set in a database:
The owner of the rule set.
The name of the rule set.
The total number of evaluations of the rule set since the database instance last started.
The total number of times SQL was executed to evaluate rules since the database instance last started. Generally, issuing SQL to evaluate rules is more expensive than evaluating rules without issuing SQL.
The total number of evaluations on the rule set that did not issue SQL to evaluate rules since the database instance last started.
The total number of TRUE rules returned to the rules engine clients using the rule set since the database instance last started.
The total number of MAYBE rules returned to the rules engine clients using the rule set since the database instance last started.
Run the following query to display this information for each rule set in the database:
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;
Your output looks similar to the following:
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
Note:
Querying theV$RULE_SET view can have a negative impact on performance if a database has a large library cache.You can query the V$RULE_SET dynamic performance view to determine the resources used by evaluation of a rule set since the database instance last started. If a rule set was evaluated more than one time since the database instance last started, then some statistics are cumulative, including statistics for the amount of CPU time, evaluation time, and shared memory bytes used.
The query in this section contains the following information about each rule set in a database:
The owner of the rule set
The name of the rule set
The total number of seconds of CPU time used to evaluate the rule set since the database instance last started
The total number of seconds used to evaluate the rule set since the database instance last started
The total number of shared memory bytes used to evaluate the rule set since the database instance last started
Run the following query to display this information for each rule set in the database:
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;
Your output looks similar to the following:
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
Note:
Querying theV$RULE_SET view can have a negative impact on performance if a database has a large library cache.You can query the V$RULE dynamic performance view to display evaluation statistics for a particular rule since the database instance last started. The query in this section contains the following information about each rule set in a database:
The total number of times the rule evaluated to TRUE since the database instance last started.
The total number of times the rule evaluated to MAYBE since the database instance last started.
The total number of evaluations on the rule that issued SQL since the database instance last started. Generally, issuing SQL to evaluate a rule is more expensive than evaluating the rule without issuing SQL.
For example, run the following query to display this information for the locations25 rule in the strmadmin schema:
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';
Your output looks similar to the following:
True Evaluations Maybe Evaluations SQL Evaluations
---------------- ----------------- ---------------
1518 154 0