---
title: Multi-receiver configuration for Oracle Database with NRDOT
source: https://docs.newrelic.com/docs/opentelemetry/database/oracle/multi-receiver
---

> #### 💡 PREVIEW
>
> We're still working on this feature, but we'd love for you to try it out!
>
> This feature is currently provided as part of a preview pursuant to our [pre-release policies](https://docs.newrelic.com/docs/licenses/license-information/referenced-policies/new-relic-pre-release-policy/).

You can configure the NRDOT Collector to monitor multiple Oracle Database instances from one collector. This is useful if you have multiple Oracle databases running on different hosts and want to collect metrics from all of them using a single NRDOT Collector instance.

## Prerequisites [#prerequisites]

-   NRDOT is installed and configured for your Oracle Database instances:
    -   [CDB](https://docs.newrelic.com/docs/opentelemetry/database/oracle/host-cdb)
    -   [PDB](https://docs.newrelic.com/docs/opentelemetry/database/oracle/host-pdb)
    -   [RDS](https://docs.newrelic.com/docs/opentelemetry/database/oracle/rds)
    -   [ADB](https://docs.newrelic.com/docs/opentelemetry/database/oracle/adb)

## Add multi-receiver configuration [#multi]

The following examples show how to configure the NRDOT Collector to monitor multiple Oracle Database instances using a multi-receiver configuration. Select the deployment type that matches your environment. You can add more receivers as needed for additional instances.

**For on-host Container Database (CDB)**

The `oracle-config.yaml` below demonstrates how to set up multiple receivers for different on-host (multitenant) CDB instances while sharing common processors and exporters.

```yaml
receivers:
  # First CDB configuration (anchor — pdb1/cdb2/pdb2 inherit via merge key)
  nroracledb/cdb1: &nroracledb-common
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "C##<user_name>"
    password: "<password>"
    service: "<YOUR_CDB1_SERVICE_NAME>"
    collection_interval: 30s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true

    top_query_collection:
      max_query_sample_count: 1000
      top_query_count: 200
      collection_interval: 60s
      allowed_comment_keys:
        - nr_service_guid

    query_sample_collection:
      max_rows_per_query: 100
      allowed_comment_keys:
        - nr_service_guid

    session_wait_event_collection:
      max_rows_per_query: 100

    # Metrics configuration - organized by category
    metrics:
      # === CPU & Performance Metrics ===
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.host.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Execution & Parse Metrics ===
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.execution.utilization:
        enabled: true
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parse.rate:
        enabled: true
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      oracledb.parse.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === I/O & Physical Read/Write Metrics ===
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_read_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_write_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === New Physical I/O Metrics (detailed) ===
      oracledb.physical_io.cache_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_io.requests:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.block_size
          - oracle.db.pdb
      oracledb.physical_io.transferred:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.type
          - oracle.db.pdb

      # === Network I/O Metrics ===
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb

      # === Buffer & Cache Metrics ===
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.buffer_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.library_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.data_dictionary.hit_ratio:
        enabled: true
      oracledb.shared_pool.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Memory Metrics ===
      oracledb.pga_memory:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sga.limit:
        enabled: true
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name

      # === Wait & Database Time Metrics ===
      oracledb.database.wait.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Lock & Deadlock Metrics ===
      oracledb.dml_locks.limit:
        enabled: true
      oracledb.dml_locks.usage:
        enabled: true
      oracledb.enqueue_locks.limit:
        enabled: true
      oracledb.enqueue_locks.usage:
        enabled: true
      oracledb.enqueue_resources.limit:
        enabled: true
      oracledb.enqueue_resources.usage:
        enabled: true
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.exchange_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Process & Session Metrics ===
      oracledb.processes.limit:
        enabled: true
      oracledb.processes.usage:
        enabled: true
      oracledb.sessions.limit:
        enabled: true
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Transaction Metrics ===
      oracledb.transactions.limit:
        enabled: true
      oracledb.transactions.usage:
        enabled: true
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Tablespace Metrics ===
      oracledb.tablespace_size.limit:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb

      # === Storage Metrics ===
      oracledb.storage.usage:
        enabled: true
      oracledb.storage.utilization:
        enabled: true
      oracledb.recycle_bin.limit:
        enabled: true

      # === Parallel Operations Metrics ===
      oracledb.queries_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.ddl_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.dml_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_not_downgraded:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_1_to_25_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_25_to_50_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_50_to_75_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_75_to_99_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_to_serial:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Redo & Sort Metrics ===
      oracledb.redo_allocation.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sort.ratio:
        enabled: true
        attributes:
          - oracledb.sort.type
          - oracle.db.pdb

      # === Response Time Metrics ===
      oracledb.sql_service.response.duration:
        enabled: true
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs
    resource_attributes:
      host.name:
        enabled: true
      oracle.db.hosting_type:
        enabled: true
      oracle.db.open_mode:
        enabled: true
      oracle.db.pdb:
        enabled: true
      oracle.db.role:
        enabled: true
      oracle.db.version:
        enabled: true
      oracledb.instance.name:
        enabled: true
      service.instance.id:
        enabled: true

  # First CDB's PDB configuration
  nroracledb/pdb1:
    <<: *nroracledb-common
    service: "<YOUR_PDB1_SERVICE_NAME>"

  # Second CDB configuration
  nroracledb/cdb2:
    <<: *nroracledb-common
    endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>"
    service: "<YOUR_CDB2_SERVICE_NAME>"

  # Second CDB's PDB configuration
  nroracledb/pdb2:
    <<: *nroracledb-common
    endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>"
    service: "<YOUR_PDB2_SERVICE_NAME>"

processors:
  batch:
  resource/add_event_name:
    attributes:
      - key: host.address
        value: "<host_address>"
        action: upsert

exporters:
  otlp/newrelic:
    endpoint: "<otlp_endpoint>"
    headers:
      api-key: "<license_key>"
    compression: gzip
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      max_interval: 30s
      max_elapsed_time: 300s

service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/cdb1, nroracledb/pdb1, nroracledb/cdb2, nroracledb/pdb2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/cdb1, nroracledb/pdb1, nroracledb/cdb2, nroracledb/pdb2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
```

**For on-host Pluggable Database (PDB)**

The `oracle-config.yaml` below demonstrates how to set up multiple receivers for different on-host pluggable database instances while sharing common processors and exporters.

```yaml
receivers:
  # First CDB configuration (anchor — pdb1/cdb2/pdb2 inherit via merge key)
  nroracledb/cdb1: &nroracledb-common
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "<user_name>"
    password: "<password>"
    service: "<YOUR_CDB1_SERVICE_NAME>"
    collection_interval: 30s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true

    top_query_collection:
      max_query_sample_count: 1000
      top_query_count: 200
      collection_interval: 60s
      allowed_comment_keys:
        - nr_service_guid

    query_sample_collection:
      max_rows_per_query: 100
      allowed_comment_keys:
        - nr_service_guid

    session_wait_event_collection:
      max_rows_per_query: 100

    # Metrics configuration - organized by category
    metrics:
      # === CPU & Performance Metrics ===
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.host.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Execution & Parse Metrics ===
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.execution.utilization:
        enabled: true
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parse.rate:
        enabled: true
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      oracledb.parse.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === I/O & Physical Read/Write Metrics ===
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_read_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_write_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === New Physical I/O Metrics (detailed) ===
      oracledb.physical_io.cache_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_io.requests:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.block_size
          - oracle.db.pdb
      oracledb.physical_io.transferred:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.type
          - oracle.db.pdb

      # === Network I/O Metrics ===
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb

      # === Buffer & Cache Metrics ===
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.buffer_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.library_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.data_dictionary.hit_ratio:
        enabled: true
      oracledb.shared_pool.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Memory Metrics ===
      oracledb.pga_memory:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sga.limit:
        enabled: true
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name

      # === Wait & Database Time Metrics ===
      oracledb.database.wait.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Lock & Deadlock Metrics ===
      oracledb.dml_locks.limit:
        enabled: true
      oracledb.dml_locks.usage:
        enabled: true
      oracledb.enqueue_locks.limit:
        enabled: true
      oracledb.enqueue_locks.usage:
        enabled: true
      oracledb.enqueue_resources.limit:
        enabled: true
      oracledb.enqueue_resources.usage:
        enabled: true
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.exchange_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Process & Session Metrics ===
      oracledb.processes.limit:
        enabled: true
      oracledb.processes.usage:
        enabled: true
      oracledb.sessions.limit:
        enabled: true
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Transaction Metrics ===
      oracledb.transactions.limit:
        enabled: true
      oracledb.transactions.usage:
        enabled: true
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Tablespace Metrics ===
      oracledb.tablespace_size.limit:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb

      # === Storage Metrics ===
      oracledb.storage.usage:
        enabled: true
      oracledb.storage.utilization:
        enabled: true
      oracledb.recycle_bin.limit:
        enabled: true

      # === Parallel Operations Metrics ===
      oracledb.queries_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.ddl_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.dml_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_not_downgraded:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_1_to_25_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_25_to_50_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_50_to_75_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_75_to_99_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_to_serial:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Redo & Sort Metrics ===
      oracledb.redo_allocation.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sort.ratio:
        enabled: true
        attributes:
          - oracledb.sort.type
          - oracle.db.pdb

      # === Response Time Metrics ===
      oracledb.sql_service.response.duration:
        enabled: true
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs
    resource_attributes:
      host.name:
        enabled: true
      oracle.db.hosting_type:
        enabled: true
      oracle.db.open_mode:
        enabled: true
      oracle.db.pdb:
        enabled: true
      oracle.db.role:
        enabled: true
      oracle.db.version:
        enabled: true
      oracledb.instance.name:
        enabled: true
      service.instance.id:
        enabled: true

  # First CDB's PDB configuration
  nroracledb/pdb1:
    <<: *nroracledb-common
    service: "<YOUR_PDB1_SERVICE_NAME>"

  # Second CDB configuration
  nroracledb/cdb2:
    <<: *nroracledb-common
    endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>"
    service: "<YOUR_CDB2_SERVICE_NAME>"

  # Second CDB's PDB configuration
  nroracledb/pdb2:
    <<: *nroracledb-common
    endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>"
    service: "<YOUR_PDB2_SERVICE_NAME>"

processors:
  batch:
  resource/add_event_name:
    attributes:
      - key: host.address
        value: "<host_address>"
        action: upsert

exporters:
  otlp/newrelic:
    endpoint: "<otlp_endpoint>"
    headers:
      api-key: "<license_key>"
    compression: gzip
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      max_interval: 30s
      max_elapsed_time: 300s

service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/cdb1, nroracledb/pdb1, nroracledb/cdb2, nroracledb/pdb2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/cdb1, nroracledb/pdb1, nroracledb/cdb2, nroracledb/pdb2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
```

**For Amazon RDS**

The `oracle-config.yaml` below demonstrates how to set up multiple receivers for different Amazon RDS Oracle instances while sharing common processors and exporters.

```yaml
receivers:
  # First RDS instance (anchor — rds2 inherits via merge key)
  nroracledb/rds1: &nroracledb-rds-common
    endpoint: "<YOUR_DB1_HOST>:<YOUR_DB1_PORT>"
    username: "<YOUR_DB1_USERNAME>"
    password: "<YOUR_DB1_PASSWORD>"
    service: "<YOUR_PDB1_SERVICE_NAME>"
    collection_interval: 10s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true

    top_query_collection:
      max_query_sample_count: 1000
      top_query_count: 200
      collection_interval: 60s
      allowed_comment_keys:
        - nr_service_guid

    query_sample_collection:
      max_rows_per_query: 100
      allowed_comment_keys:
        - nr_service_guid

    session_wait_event_collection:
      max_rows_per_query: 100

    # Metrics configuration - organized by category
    metrics:
      # === CPU & Performance Metrics ===
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: sourced from v$sysmetric, empty inside a PDB.
      oracledb.database.cpu.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.host.cpu.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb

      # === Execution & Parse Metrics ===
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.execution.utilization:
        enabled: false
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.parse.rate:
        enabled: false
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.parse.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === I/O & Physical Read/Write Metrics ===
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_reads_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes_direct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_read_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_write_io_requests:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === New Physical I/O Metrics (detailed) ===
      oracledb.physical_io.cache_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_io.requests:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.block_size
          - oracle.db.pdb
      oracledb.physical_io.transferred:
        enabled: true
        attributes:
          - disk.io.direction
          - disk.io.type
          - oracle.db.pdb

      # === Network I/O Metrics ===
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb

      # === Buffer & Cache Metrics ===
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.buffer_cache.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.library_cache.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      oracledb.data_dictionary.hit_ratio:
        enabled: true
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.shared_pool.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb

      # === Memory Metrics ===
      oracledb.pga_memory:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sga.limit:
        enabled: true
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name

      # === Wait & Database Time Metrics ===
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.database.wait.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb

      # === Lock & Deadlock Metrics ===
      # DISABLED on RDS: sourced from v$resource_limit, which returns zero rows.
      oracledb.dml_locks.limit:
        enabled: false
      oracledb.dml_locks.usage:
        enabled: false
      oracledb.enqueue_locks.limit:
        enabled: false
      oracledb.enqueue_locks.usage:
        enabled: false
      oracledb.enqueue_resources.limit:
        enabled: false
      oracledb.enqueue_resources.usage:
        enabled: false
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.exchange_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Process & Session Metrics ===
      # DISABLED on RDS: v$resource_limit empty in PDB.
      oracledb.processes.limit:
        enabled: false
      oracledb.processes.usage:
        enabled: false
      oracledb.sessions.limit:
        enabled: false
      # KEEP enabled: sessions.usage is sourced from v$session, not v$resource_limit.
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Transaction Metrics ===
      # DISABLED on RDS: v$resource_limit empty in PDB.
      oracledb.transactions.limit:
        enabled: false
      oracledb.transactions.usage:
        enabled: false
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Tablespace Metrics ===
      oracledb.tablespace_size.limit:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb

      # === Storage Metrics ===
      oracledb.storage.usage:
        enabled: true
      oracledb.storage.utilization:
        enabled: true
      oracledb.recycle_bin.limit:
        enabled: true

      # === Parallel Operations Metrics ===
      oracledb.queries_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.ddl_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.dml_statements_parallelized:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_not_downgraded:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_1_to_25_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_25_to_50_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_50_to_75_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_75_to_99_pct:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parallel_operations_downgraded_to_serial:
        enabled: true
        attributes:
          - oracle.db.pdb

      # === Redo & Sort Metrics ===
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.redo_allocation.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.sort.ratio:
        enabled: false
        attributes:
          - oracledb.sort.type
          - oracle.db.pdb

      # === Response Time Metrics ===
      # DISABLED on RDS: v$sysmetric empty in PDB.
      oracledb.sql_service.response.duration:
        enabled: false
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs (all enabled by default)
    resource_attributes:
      host.name:
        enabled: true
      oracle.db.hosting_type:
        enabled: true
      oracle.db.open_mode:
        enabled: true
      oracle.db.pdb:
        enabled: true
      oracle.db.role:
        enabled: true
      oracle.db.version:
        enabled: true
      oracledb.instance.name:
        enabled: true
      service.instance.id:
        enabled: true

  # Second RDS instance (inherits all settings from rds1, overrides endpoint/credentials/service)
  nroracledb/rds2:
    <<: *nroracledb-rds-common
    endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>"
    username: "<YOUR_DB2_USERNAME>"
    password: "<YOUR_DB2_PASSWORD>"
    service: "<YOUR_PDB2_SERVICE_NAME>"

processors:
  batch:
  resource/add_event_name:
    attributes:
      - key: host.address
        value: "<YOUR_DB1_HOST>"
        action: upsert

exporters:
  otlp/newrelic:
    endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
    headers:
      api-key: "<YOUR_NEWRELIC_LICENSE_KEY>"
    compression: gzip
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      max_interval: 30s
      max_elapsed_time: 300s

service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/rds1, nroracledb/rds2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/rds1, nroracledb/rds2]
      processors: [resource/add_event_name, batch]
      exporters: [otlp/newrelic]
```

**For Autonomous Database (ADB)**

If you want to monitor multiple Oracle ADB instances from the same collector, you can configure multiple receivers in your configuration file by adding additional receiver blocks with different names and connection details.

> #### 💡 TIP
>
> This configuration allows you to monitor multiple Oracle Database instances simultaneously. Each instance gets its own receiver configuration with unique credentials, while sharing common processors and exporters. Adjust the `collection_interval` and other parameters based on your monitoring requirements.

## Restart NRDOT Collector [#restart]

Restarting is required, not optional — the collector loads its configuration once at startup and doesn't hot-reload. Any configuration change has no effect until you restart the process.

```bash
sudo systemctl restart nrdot-collector.service
```

## Related articles [#related-articles]

[Configuration reference](https://docs.newrelic.com/docs/opentelemetry/database/oracle/config-reference)

Learn about the full-feature configuration options for Oracle Database monitoring with NRDOT.

[Metrics reference](https://docs.newrelic.com/docs/opentelemetry/database/oracle/metrics-reference)

Learn about the available metrics collected by the NRDOT Collector.

[Troubleshooting](https://docs.newrelic.com/docs/opentelemetry/database/oracle/troubleshooting)

Learn how to troubleshoot your Oracle Database monitoring setup in New Relic.
