Skip to main content
APA
Sponsored by CAST AI — Kubernetes cost optimization Better Stack — Uptime monitoring and log management
⚠️

Alert thresholds depend on the nature of your applications. Some queries may have arbitrary tolerance thresholds. Building an efficient monitoring platform takes time. 😉

Oracle Database Prometheus Alert Rules

8 Prometheus alerting rules for Oracle Database. Exported via iamseth/oracledb_exporter. These rules cover critical and warning conditions — copy and paste the YAML into your Prometheus configuration.

wget https://raw.githubusercontent.com/samber/awesome-prometheus-alerts/refs/heads/master/dist/rules/oracle-database/iamseth-oracledb-exporter.yml
critical

2.4.1. Oracle DB down

Oracle Database instance is down on {{ $labels.instance }}

  # 1m delay allows a restart without triggering an alert.
- alert: OracleDBDown
  expr: oracledb_up == 0
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: Oracle DB down (instance {{ $labels.instance }})
    description: "Oracle Database instance is down on {{ $labels.instance }}\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.2. Oracle DB sessions reaching limit (> 85%)

Oracle Database session utilization is above 85% on {{ $labels.instance }} (current value: {{ $value }}%)

  # Threshold is workload-dependent. Adjust 85% to suit your environment.
- alert: OracleDBSessionsReachingLimit(>85%)
  expr: oracledb_resource_current_utilization{resource_name="sessions"} / oracledb_resource_limit_value{resource_name="sessions"} * 100 > 85 and oracledb_resource_limit_value{resource_name="sessions"} > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB sessions reaching limit (> 85%) (instance {{ $labels.instance }})
    description: "Oracle Database session utilization is above 85% on {{ $labels.instance }} (current value: {{ $value }}%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.3. Oracle DB processes reaching limit (> 85%)

Oracle Database process utilization is above 85% on {{ $labels.instance }} (current value: {{ $value }}%)

  # Threshold is workload-dependent. Adjust 85% to suit your environment.
- alert: OracleDBProcessesReachingLimit(>85%)
  expr: oracledb_resource_current_utilization{resource_name="processes"} / oracledb_resource_limit_value{resource_name="processes"} * 100 > 85 and oracledb_resource_limit_value{resource_name="processes"} > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB processes reaching limit (> 85%) (instance {{ $labels.instance }})
    description: "Oracle Database process utilization is above 85% on {{ $labels.instance }} (current value: {{ $value }}%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.4. Oracle DB tablespace reaching capacity (> 85%)

Oracle Database tablespace {{ $labels.tablespace }} is above 85% usage on {{ $labels.instance }} (current value: {{ $value }}%)

- alert: OracleDBTablespaceReachingCapacity(>85%)
  expr: oracledb_tablespace_used_percent > 85
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB tablespace reaching capacity (> 85%) (instance {{ $labels.instance }})
    description: "Oracle Database tablespace {{ $labels.tablespace }} is above 85% usage on {{ $labels.instance }} (current value: {{ $value }}%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.4.5. Oracle DB tablespace full (> 95%)

Oracle Database tablespace {{ $labels.tablespace }} is critically full on {{ $labels.instance }} (current value: {{ $value }}%)

- alert: OracleDBTablespaceFull(>95%)
  expr: oracledb_tablespace_used_percent > 95
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: Oracle DB tablespace full (> 95%) (instance {{ $labels.instance }})
    description: "Oracle Database tablespace {{ $labels.tablespace }} is critically full on {{ $labels.instance }} (current value: {{ $value }}%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.6. Oracle DB high user rollbacks

Oracle Database on {{ $labels.instance }} has a high rollback rate ({{ $value }}% of transactions are rolled back)

  # A high rollback rate (>20%) often indicates application-level issues such as deadlocks, constraint violations, or poorly designed transactions.
- alert: OracleDBHighUserRollbacks
  expr: rate(oracledb_activity_user_rollbacks[5m]) / (rate(oracledb_activity_user_commits[5m]) + rate(oracledb_activity_user_rollbacks[5m])) * 100 > 20 and (rate(oracledb_activity_user_commits[5m]) + rate(oracledb_activity_user_rollbacks[5m])) > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB high user rollbacks (instance {{ $labels.instance }})
    description: "Oracle Database on {{ $labels.instance }} has a high rollback rate ({{ $value }}% of transactions are rolled back)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.7. Oracle DB too many active sessions

Oracle Database on {{ $labels.instance }} has too many active user sessions (current value: {{ $value }})

  # Threshold is highly workload-dependent. Adjust 200 to suit your environment.
- alert: OracleDBTooManyActiveSessions
  expr: oracledb_sessions_value{status="ACTIVE", type="USER"} > 200
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB too many active sessions (instance {{ $labels.instance }})
    description: "Oracle Database on {{ $labels.instance }} has too many active user sessions (current value: {{ $value }})\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.4.8. Oracle DB high wait time (user I/O)

Oracle Database on {{ $labels.instance }} is experiencing high user I/O wait time

  # The metric from v$waitclassmetric is already a normalized rate (centiseconds per second). Threshold 300 means 3 seconds of I/O wait per second of wall time.
- alert: OracleDBHighWaitTime(userI/O)
  expr: oracledb_wait_time_user_io > 300
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Oracle DB high wait time (user I/O) (instance {{ $labels.instance }})
    description: "Oracle Database on {{ $labels.instance }} is experiencing high user I/O wait time\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"