The DBMS_SERVER_ALERT package enables you to configure the Oracle Database server to issue an alert when a threshold for a specified server metric has been violated. You can configure both warning and critical thresholds for a large number of predefined metrics.
If a warning threshold is reached, the server generates a severity level 5 alert. If a critical threshold is reached, the server generates a severity level 1 alert.
The chapter contains the following topics:
Security Model
Object Types
Relational Operators
Supported Metrics
This section contains topics which relate to using the DBMS_SERVER_ALERT package. The following topics define constants used in package procedures.
You qualify the metric by an individual object for the following object types.
Table 130-1 Object Types Defined as Constants
| Constant | Description | 
|---|---|
| 
 | Metrics collected on the system level for each instance. | 
| 
 | Metrics collected on the file level. These are used for  | 
| 
 | Metrics collected on the service level. Currently  | 
| 
 | Metrics collected on the tablespace level. Note: Dictionary managed tablespaces are not supported. | 
| 
 | Metrics collected on wait event class level. Currently supported metrics are  | 
| 
 | Metrics collected on the session level. Currently only  | 
| 
 | Refers to a group of metrics ( | 
You can specify a relational comparison operator to determine whether or not a given metric's value violates the threshold setting. The server supports the following operators.
Table 130-2 Relational Operators Defined as Constants
| Constant | Description | 
|---|---|
| 
 | A metric value matching an entry in a list of threshold values is considered a violation. | 
| 
 | The metric value is not compared to the threshold value, and no alerts are generated. Use this operator to disable alerts for a metric. | 
| 
 | A metric value equal to the threshold value is considered a violation. | 
| 
 | A metric value greater than or equal to the threshold value is considered a violation. | 
| 
 | A metric value greater than the threshold value is considered a violation. | 
| 
 | A metric value less than or equal to the threshold value is considered a violation. | 
| 
 | A metric value less than the threshold value is considered a violation. | 
| 
 | A metric value not equal to the threshold value is considered a violation. | 
The following metrics are supported. All internal metric names are supplied as package constants.
Table 130-3 List of Supported Metrics
| Metric Name (Internal) | Metric Name (External) | Units | 
|---|---|---|
| 
 | Average File Read Time | Microseconds | 
| 
 | Average File Write Time | Microseconds | 
| 
 | Average Number of Users Waiting on a Class of Wait Events | Count of sessions | 
| 
 | Number of Users blocked by some Session | Number of Users | 
| 
 | Branch Node Splits (for each second) | Splits for each Second | 
| 
 | Branch Node Splits (for each transaction) | Splits for each Transaction | 
| 
 | Buffer Cache Hit (%) | % of cache accesses | 
| 
 | Cluster Messaging Wait (by session count) | Count of sessions | 
| 
 | Cluster Messaging Wait (by time) | Microseconds | 
| 
 | Consistent Changes (for each second) | Changes for each Second | 
| 
 | Consistent Changes (for each transaction) | Changes for each Transaction | 
| 
 | Consistent Gets (for each second) | Gets for each Second | 
| 
 | Consistent Gets (for each transaction) | Gets for each Transaction | 
| 
 | Internal Contention Wait (by session count) | Count of sessions | 
| 
 | Internal Contention Wait (by time) | Microseconds | 
| 
 | CPU time for each user call for each service | Microseconds for each call | 
| 
 | CR Blocks Created (for each second) | Blocks for each Second | 
| 
 | CR Blocks Created (for each transaction) | Blocks for each Transaction | 
| 
 | CR Undo Records Applied (for each second) | Records for each Second | 
| 
 | CR Undo Records Applied (for each transaction) | Records for each Transaction | 
| 
 | Cursor Cache Hit (%) | % of soft parses | 
| 
 | Database Wait Time (%) | % of all database time | 
| 
 | Database CPU Time (%) | % of all database time | 
| 
 | Data Dictionary Hit (%) | % of dictionary accesses | 
| 
 | Data Dictionary Miss (%) | % of dictionary accesses | 
| 
 | DB Block Gets (for each second) | Gets for each Second | 
| 
 | DB Block Gets (for each transaction) | Gets for each Transaction | 
| 
 | Percent of Database Time Spent Waiting on a Class of Wait Events | % of Database Time | 
| 
 | Resource Mgr I/O Limit Wait (by session count) | Count of sessions | 
| 
 | Resource Mgr I/O Limit Wait (by time) | Microseconds | 
| 
 | Resource Mgr CPU Limit Wait (by session count) | Count of sessions | 
| 
 | Resource Mgr CPU Limit Wait (by time) | Microseconds | 
| 
 | Resource Mgr User Limit Wait (by session count) | Count of sessions | 
| 
 | Resource Mgr User Limit Wait (by time) | Microseconds | 
| 
 | DBWR Checkpoints (for each second) | Checkpoints for each Second | 
| 
 | Disk I/O | Milliseconds | 
| 
 | Disk I/O Wait (by session count) | Count of sessions | 
| 
 | Sorts to Disk (for each second) | Sorts for each Second | 
| 
 | Sorts to Disk (for each transaction) | Sorts for each Transaction | 
| 
 | Elapsed time for each user call for each service | Microseconds for each call | 
| 
 | Enqueue Deadlocks (for each second) | Deadlocks for each Second | 
| 
 | Enqueue Deadlocks (for each transaction) | Deadlocks for each Transaction | 
| 
 | Enqueue Requests (for each second) | Requests for each Second | 
| 
 | Enqueue Requests (for each transaction) | Requests for each Transaction | 
| 
 | Enqueue Timeouts (for each second) | Timeouts for each Second | 
| 
 | Enqueue Timeouts (for each transaction) | Timeouts for each Transaction | 
| 
 | Enqueue Waits (for each second) | Waits for each Second | 
| 
 | Enqueue Waits (for each transaction) | Waits for each Transaction | 
| 
 | Executes Performed Without Parsing | % of all executes | 
| 
 | Fast Full Index Scans (for each second) | Scans for each Second | 
| 
 | Fast Full Index Scans (for each transaction) | Scans for each Transaction | 
| 
 | Global Cache CR Request | Milliseconds | 
| 
 | Global Cache Current Request | Milliseconds | 
| 
 | Global Cache Blocks Corrupt | Blocks | 
| 
 | Global Cache Blocks Lost | Blocks | 
| 
 | Hard Parses (for each second) | Parses for each Second | 
| 
 | Hard Parses (for each transaction) | Parses for each Transaction | 
| 
 | Leaf Node Splits (for each second) | Splits for each Second | 
| 
 | Leaf Node Splits (for each transaction) | Splits for each Transaction | 
| 
 | Library Cache Hit (%) | % of cache accesses | 
| 
 | Library Cache Miss (%) | % of cache accesses | 
| 
 | Background Checkpoints (for each second) | Checkpoints for each Second | 
| 
 | Current Number of Logons | Number of Logons | 
| 
 | Cumulative Logons (for each second) | Logons for each Second | 
| 
 | Cumulative Logons (for each transaction) | Logons for each Transaction | 
| 
 | Scans on Long Tables (for each second) | Scans for each Second | 
| 
 | Scans on Long Tables (for each transaction) | Scans for each Transaction | 
| 
 | Cumulative Open Cursors (for each second) | Cursors for each Second | 
| 
 | Sorts in Memory (%) | % of sorts | 
| 
 | Network Bytes, for each second | Bytes for each Second | 
| 
 | Network Message Wait (by session count) | Count of sessions | 
| 
 | Network Message Wait (by time) | Microseconds | 
| 
 | Current Number of Cursors | Number of Cursors | 
| 
 | Cumulative Open Cursors (for each transaction) | Cursors for each Transaction | 
| 
 | Operating System Scheduler CPU Wait (by session count) | Count of sessions | 
| 
 | Operating System Scheduler CPU Wait (by time) | Microseconds | 
| 
 | Operating System Service Wait (by session count) | Count of sessions | 
| 
 | Operating System Service Wait (by time) | Microseconds | 
| 
 | Other Waits (by session count) | Count of sessions | 
| 
 | Other Waits (by time) | Microseconds | 
| 
 | Parse Failures (for each second) | Parses for each Second | 
| 
 | Parse Failures (for each transaction) | Parses for each Transaction | 
| 
 | PGA Cache Hit (%) | % bytes processed in PGA | 
| 
 | Physical Design Wait (by session count) | Count of sessions | 
| 
 | Physical Design Wait (by time) | Microseconds | 
| 
 | Physical Reads (for each second) | Reads for each Second | 
| 
 | Physical Reads (for each transaction) | Reads for each Transaction | 
| 
 | Physical Writes (for each second) | Writes for each Second | 
| 
 | Physical Writes (for each transaction) | Writes for each Transaction | 
| 
 | Direct Physical Reads (for each second) | Reads for each Second | 
| 
 | Direct Physical Reads (for each transaction) | Reads for each Transaction | 
| 
 | Direct Physical Writes (for each second) | Writes for each Second | 
| 
 | Direct Physical Writes (for each transaction) | Writes for each Transaction | 
| 
 | Direct LOB Physical Reads (for each second) | Reads for each Second | 
| 
 | Direct LOB Physical Reads (for each transaction) | Reads for each Transaction | 
| 
 | Direct LOB Physical Writes (for each second) | Writes for each Second | 
| 
 | Direct LOB Physical Writes (for each transaction) | Writes for each Transaction | 
| 
 | Process Limit Usage (%) | % of maximum value | 
| 
 | Process Service Wait (by session count) | Count of sessions | 
| 
 | Process Service Wait (by time) | Microseconds | 
| 
 | Downgraded Parallel Operations (for each second) | Operations for each Second | 
| 
 | Downgraded to 25% and more (for each second) | Operations for each Second | 
| 
 | Downgraded to 50% and more (for each second) | Operations for each Second | 
| 
 | Downgraded to 75% and more (for each second) | Operations for each Second | 
| 
 | Downgraded to serial (for each second) | Operations for each Second | 
| 
 | Rollback Undo Records Applied (for each second) | Records for each Second | 
| 
 | Rollback Undo Records Applied (for each transaction) | Records for each Transaction | 
| 
 | Redo Log Allocation Hit | % of redo allocations | 
| 
 | Redo Generated (for each second) | Redo Bytes for each Second | 
| 
 | Redo Generated (for each transaction) | Redo Bytes for each Transaction | 
| 
 | Redo Writes (for each second) | Writes for each Second | 
| 
 | Redo Writes (for each transaction) | Writes for each Transaction | 
| 
 | Recursive Calls (for each second) | Calls for each Second | 
| 
 | Recursive Calls (for each transaction) | Calls for each Transaction | 
| 
 | Response (for each transaction) | Seconds for each Transaction | 
| 
 | Rows Processed for each Sort | Rows for each Sort | 
| 
 | Session Logical Reads (for each second) | Reads for each Second | 
| 
 | Session Logical Reads (for each transaction) | Reads for each Transaction | 
| 
 | Database CPU (for each second) | Microseconds for each Second | 
| 
 | Database CPU (for each transaction) | Microseconds for each Transaction | 
| 
 | Session Limit Usage (%) | % of maximum value | 
| 
 | Shared Pool Free(%) | % of shared pool | 
| 
 | Soft Parse (%) | % of all parses | 
| 
 | Service Response (for each execution) | Seconds | 
| 
 | Tablespace space usage | % full | 
| 
 | Tablespace bytes space usage | Kilobytes free | 
| 
 | Total Table Scans (for each second) | Scans for each Second | 
| 
 | Total Table Scans (for each transaction) | Scans for each Transaction | 
| 
 | Total Index Scans (for each second) | Scans for each Second | 
| 
 | Total Index Scans (for each transaction) | Scans for each Transaction | 
| 
 | Total Parses (for each second) | Parses for each Second | 
| 
 | Total Parses (for each transaction) | Parses for each Transaction | 
| 
 | Number of Transactions (for each second) | Transactions for each Second | 
| 
 | Transactions Committed (%) | % of all transactions | 
| 
 | User Commits (for each second) | Commits for each Second | 
| 
 | User Commits (for each transaction) | Commits for each Transaction | 
| 
 | User Rollbacks (for each second) | Rollbacks for each Second | 
| 
 | User Rollbacks (for each transaction) | Rollbacks for each Transaction | 
| 
 | User Calls (for each second) | Calls for each Second | 
| 
 | User Calls (for each transaction) | Calls for each Transaction | 
| 
 | User Calls (%) | % of all calls | 
| 
 | User Limit Usage (%) | % of maximum value | 
| 
 | Average IO response time (for a WRC client) | Milliseconds | 
| 
 | Percentage of replay threads on CPU (for a WRC client) | % of total replay threads | 
| 
 | Percentage of replay threads doing IOs (for a WRC client) | % of total replay threads | 
Table 130-4 DBMS_SERVER_ALERT Package Subprograms
| Subprogram | Description | 
|---|---|
| Expands alert messages | |
| Gets the current threshold settings for a specified metric | |
| Sets the warning and critical thresholds for a specified metric | 
This function expands alert messages.
DBMS_SERVER_ALERT.EXPAND_MESSAGE( user_language IN VARCHAR2, message_id IN NUMBER, argument_1 IN VARCHAR2, argument_2 IN VARCHAR2, argument_3 IN VARCHAR2, argument_4 IN VARCHAR2, argument_5 IN VARCHAR2) RETURN VARCHAR2;
Table 130-5 EXPAND_MESSAGE Function Parameters
| Parameter | Description | 
|---|---|
| 
 | The language of the current session. | 
| 
 | Id of the alert message | 
| 
 | The first argument in the alert message. | 
| 
 | The second argument in the alert message. | 
| 
 | The third argument in the alert message. | 
| 
 | The fourth argument in the alert message. | 
| 
 | The fifth argument in the alert message. | 
This procedure gets the current threshold settings for the specified metric.
DBMS_SERVER_ALERT.GET_THRESHOLD( metrics_id IN BINARY_INTEGER, warning_operator OUT BINARY_INTEGER, warning_value OUT VARCHAR2, critical_operator OUT BINARY_INTEGER, critical_value OUT VARCHAR2, observation_period OUT BINARY_INTEGER, consecutive_occurrences OUT BINARY_INTEGER, instance_name IN VARCHAR2, object_type IN BINARY_INTEGER, object_name IN VARCHAR2);
Table 130-6 GET_THRESHOLD Procedure Parameters
| Parameter | Description | 
|---|---|
| 
 | The internal name of the metric. See "Supported Metrics". | 
| 
 | The operator for the compa3ring the actual value with the warning threshold. | 
| 
 | The warning threshold value. | 
| 
 | The operator for the comparing the actual value with the critical threshold. | 
| 
 | The critical threshold value. | 
| 
 | The period at which the metric values are computed and verified against the threshold setting. | 
| 
 | The number of observation periods the metric value should violate the threshold value before the alert is issued. | 
| 
 | The name of the instance for which the threshold is set. This is  | 
| 
 | Either  | 
| 
 | The name of the object. | 
This procedure sets the warning and critical thresholds for a specified metric.
DBMS_SERVER_ALERT.SET_THRESHOLD( metrics_id IN BINARY_INTEGER, warning_operator IN BINARY_INTEGER, warning_value IN VARCHAR2, critical_operator IN BINARY_INTEGER, critical_value IN VARCHAR2, observation_period IN BINARY_INTEGER, consecutive_occurrences IN BINARY_INTEGER, instance_name IN VARCHAR2, object_type IN BINARY_INTEGER, object_name IN VARCHAR2);
Table 130-7 SET_THRESHOLD Procedure Parameters
| Parameter | Description | 
|---|---|
| 
 | The internal name of the metric. See "Supported Metrics". | 
| 
 | The operator for the comparing the actual value with the warning threshold (such as  | 
| 
 | The warning threshold value. This is  | 
| 
 | The operator for the comparing the actual value with the critical threshold. See "Relational Operators". | 
| 
 | The critical threshold value. This is  | 
| 
 | The period at which the metric values are computed and verified against the threshold setting. The valid range is 1 to 60 minutes. | 
| 
 | The number of observation periods the metric value should violate the threshold value before the alert is issued. | 
| 
 | The name of the instance for which the threshold is set. This is  | 
| 
 | See "Object Types". | 
| 
 | The name of the object. This is  | 
Note that this subprogram does not check if the value of the instance_name parameter is meaningful or valid. Passing a name that does not identify a valid instance will result in a threshold that is not used by any by any instance although the threshold setting will be visible in the DBA_THRESHOLDS view. The exception is the lower-case string 'database_wide' which is semantically equivalent to passing NULL for the instance name, the latter being the preferred usage.