Skip to content

[receiver/oracledb] Add tablespace health metrics (utilization, status, autoextend limit) #48399

@spathlavath

Description

@spathlavath

Component(s)

receiver/oracledb

Is your feature request related to a problem? Please describe.

The Oracle DB receiver currently exposes raw tablespace byte counts via oracledb.tablespace_size.usage and oracledb.tablespace_size.limit, but these are insufficient for real-world tablespace health monitoring:

  • No utilization ratio: Users must divide usage/limit themselves in every alerting rule. A direct fraction (0–1) is needed to set a single threshold like "alert when > 85% full".
  • No status visibility: An offline or read-only tablespace causes immediate application errors (ORA-00376), but the current receiver gives no signal when this happens. The database itself stays up and healthy - it's invisible without querying DBA_TABLESPACES.STATUS.
  • Autoextend ceiling not tracked: DBAs commonly enable autoextend thinking the tablespace will "grow as needed", but autoextend has a MAXBYTES ceiling. Once hit, Oracle throws ORA-01653 just as if autoextend were off. A tablespace at 60% of its current allocation can already be at 99% of its autoextend maximum - which the current metrics cannot reveal.

These gaps mean users cannot answer the three most critical tablespace questions:

  • Will this tablespace cause an outage, and how soon?
  • Is anything already offline or broken right now?
  • What is the true hard limit before Oracle stops extending?

Describe the solution you'd like

Add 3 new opt-in metrics (disabled by default, stability: development), following OTel semantic conventions:
oracledb.tablespace.utilization

  • Type: gauge double
  • Unit: "1" (dimensionless fraction)
  • Source: DBA_TABLESPACE_USAGE_METRICS
  • Description: Fraction of tablespace currently in use, expressed as a value between 0 and 1.
    Computed as USED_SPACE / TABLESPACE_SIZE in-process — no extra query needed.

oracledb.tablespace.count

  • Type: gauge int
  • Unit: "{tablespace}"
  • Source: DBA_TABLESPACES
  • Description: Number of tablespaces broken down by the oracledb.tablespace.status attribute.
    Status values reflect Oracle's reported state: online, offline, read only.
    Useful for alerting when any tablespace goes offline (count{status="offline"} > 0).

oracledb.tablespace.limit

  • Type: gauge int
  • Unit: By
  • Source: DBA_DATA_FILES
  • Description: Autoextend maximum size in bytes per tablespace, aggregated across all datafiles.
    Returns 0 for temporary tablespaces and tablespaces without autoextend enabled.
    This is the hard ceiling Oracle will not grow beyond, regardless of current allocation.

Describe alternatives you've considered

No response

Additional context

Tablespace exhaustion (ORA-01653) and offline tablespaces (ORA-00376) are among the top causes of Oracle production outages. These three metrics together provide the minimal signal set needed to alert on both before users are impacted.

A PR with the implementation is in the works and will be submitted for review once this issue is agreed upon.

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions