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

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/db360/oracle/host-cdb)
    -   [PDB](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/host-pdb)
    -   [RDS](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/rds)
    -   [ADB](https://docs.newrelic.com/docs/opentelemetry/db360/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 exporters.

```yaml
receivers:
  # First CDB configuration (anchor cd1; cdb2 inherit via merge key)
  nroracledb/cdb1: &nroracledb-common
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "C##<YOUR_DB_USERNAME>"
    password: "<YOUR_DB_PASSWORD>"
    service: "<YOUR_CDB1_SERVICE_NAME>"
    collection_interval: 15s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true
      db.server.top_procedure:
        enabled: true
      db.server.query_plan:
        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

    top_procedure_collection:
      max_procedure_sample_count: 1000
      top_procedure_count: 250
      collection_interval: 60s

    # Metrics configuration 
    metrics:
      oracledb.buffer_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.wait.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.execution.utilization:
        enabled: true
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.host.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.library_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parse.rate:
        enabled: true
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.pga_memory:
        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_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.processes.usage:
        enabled: true
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name
      oracledb.shared_pool.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sql_service.response.duration:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.transactions.usage:
        enabled: true
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs
    resource_attributes:
      oracle.db.edition:
        enabled: true

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

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
    sending_queue:
        enabled: true
        sizer: bytes
        queue_size: 100_000_000
        num_consumers: 10
        batch:
          sizer: bytes
          max_size: 1_000_000
          min_size: 0
          flush_timeout: 5s  

service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/cdb1,nroracledb/cdb2]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/cdb1, nroracledb/cdb2]
      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 exporters.

```yaml
receivers:
  # First PDB configuration (anchor; pdb1; pdb2 inherit via merge key)
  nroracledb/pdb1: &nroracledb-common
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "<YOUR_DB_USERNAME>"
    password: "<YOUR_DB_PASSWORD>"
    service: "<YOUR_PDB1_SERVICE_NAME>"
    collection_interval: 15s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true
      db.server.top_procedure:
        enabled: true
      db.server.query_plan:
        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

    top_procedure_collection:
      max_procedure_sample_count: 1000
      top_procedure_count: 250
      collection_interval: 60s

    # Metrics configuration
    metrics:
      oracledb.buffer_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.wait.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.execution.utilization:
        enabled: true
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.host.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.library_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parse.rate:
        enabled: true
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.pga_memory:
        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_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.processes.usage:
        enabled: true
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name
      oracledb.shared_pool.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sql_service.response.duration:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.transactions.usage:
        enabled: true
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs
    resource_attributes:
      oracle.db.edition:
        enabled: true

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

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
    sending_queue:
        enabled: true
        sizer: bytes
        queue_size: 100_000_000
        num_consumers: 10
        batch:
          sizer: bytes
          max_size: 1_000_000
          min_size: 0
          flush_timeout: 5s  

service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/pdb1,nroracledb/pdb2]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/pdb1,nroracledb/pdb2]
      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 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_RDS1_SERVICE_NAME>"
    collection_interval: 15s

    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true
      db.server.top_procedure:
        enabled: true
      db.server.query_plan:
        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

    top_procedure_collection:
      max_procedure_sample_count: 1000
      top_procedure_count: 250
      collection_interval: 60s

    # Metrics configuration
    metrics:
      oracledb.buffer_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.consistent_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.database.wait.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.db_block_gets:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.enqueue_deadlocks:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.execution.utilization:
        enabled: true
        attributes:
          - oracledb.parse.type
          - oracle.db.pdb
      oracledb.executions:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.hard_parses:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.host.cpu.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.library_cache.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logical_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.logons:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.parse.rate:
        enabled: true
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      oracledb.parse_calls:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.pga_memory:
        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_reads:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.physical_writes:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.processes.usage:
        enabled: true
      oracledb.sessions.usage:
        enabled: true
        attributes:
          - session_type
          - session_status
          - oracle.db.pdb
      oracledb.sga.usage:
        enabled: true
        attributes:
          - oracledb.sga.component.name
      oracledb.shared_pool.utilization:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sql_service.response.duration:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.sqlnet.io.transferred:
        enabled: true
        attributes:
          - network.io.direction
          - destination.type
          - oracle.db.pdb
      oracledb.tablespace_size.usage:
        enabled: true
        attributes:
          - tablespace_name
          - oracle.db.pdb
      oracledb.transactions.usage:
        enabled: true
      oracledb.user_commits:
        enabled: true
        attributes:
          - oracle.db.pdb
      oracledb.user_rollbacks:
        enabled: true
        attributes:
          - oracle.db.pdb

    # Resource attributes attached to all metrics/logs (all enabled by default)
    resource_attributes:
      oracle.db.edition:
        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_RDS2_SERVICE_NAME>"

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
    sending_queue:
        enabled: true
        sizer: bytes
        queue_size: 100_000_000
        num_consumers: 10
        batch:
          sizer: bytes
          max_size: 1_000_000
          min_size: 0
          flush_timeout: 5s  

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

**For Autonomous Database (ADB)**

The `adb-config.yaml` below demonstrates how to set up multiple receivers for different Oracle Autonomous Database instances while sharing common exporters.

```yaml
receivers:
  # First ADB instance (anchor; adb2 inherits via merge key)
  nroracledb/adb1: &nroracledb-adb-common
    datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_ADB1_HOST>:1522/<YOUR_ADB1_SERVICE_NAME>?ssl=true&ssl%20verify=true"
    collection_interval: 15s
    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
      db.server.session.wait_sample:
        enabled: true
      db.server.top_procedure:
        enabled: true
      db.server.query_plan:
        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

    top_procedure_collection:
      max_procedure_sample_count: 1000
      top_procedure_count: 250
      collection_interval: 60s

    # Metrics configuration - organized by category
    metrics:
      # === CPU & Performance Metrics ===
      oracledb.cpu_time:
        enabled: true
        attributes:
          - oracle.db.pdb
      # DISABLED on ADB: sourced from v$sysmetric, empty inside a PDB.
      oracledb.database.cpu.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on ADB: 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 ADB: 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 ADB: v$sysmetric empty in PDB.
      oracledb.parse.rate:
        enabled: false
        attributes:
          - oracledb.parse.result
          - oracle.db.pdb
      # DISABLED on ADB: 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 ADB: v$sysmetric empty in PDB.
      oracledb.buffer_cache.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on ADB: v$sysmetric empty in PDB.
      oracledb.library_cache.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      oracledb.data_dictionary.hit_ratio:
        enabled: true
      # DISABLED on ADB: 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 ADB: v$sysmetric empty in PDB.
      oracledb.database.wait.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb

      # === Lock & Deadlock Metrics ===
      # DISABLED on ADB: 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 ADB: 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 ADB: 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 ADB: v$sysmetric empty in PDB.
      oracledb.redo_allocation.utilization:
        enabled: false
        attributes:
          - oracle.db.pdb
      # DISABLED on ADB: v$sysmetric empty in PDB.
      oracledb.sort.ratio:
        enabled: false
        attributes:
          - oracledb.sort.type
          - oracle.db.pdb

      # === Response Time Metrics ===
      # DISABLED on ADB: 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:
      oracle.db.edition:
        enabled: true

  # Second ADB instance (inherits all settings from adb1, overrides connection details)
  nroracledb/adb2:
    <<: *nroracledb-adb-common
    datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_ADB2_HOST>:1522/<YOUR_ADB2_SERVICE_NAME>?ssl=true&ssl%20verify=true"

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
    sending_queue:
      enabled: true
      sizer: bytes
      queue_size: 100_000_000
      num_consumers: 10
      batch:
        sizer: bytes
        max_size: 1_000_000
        min_size: 0
        flush_timeout: 5s  
service:
  pipelines:
    metrics/oracledb:
      receivers: [nroracledb/adb1, nroracledb/adb2]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb/adb1, nroracledb/adb2]
      exporters: [otlp/newrelic]
```

> #### 💡 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]

Restart the NRDOT Collector service for configuration changes to take effect. The collector loads configuration parameters once at startup and doesn't support hot-reloading. Any changes made to the configuration while the collector is running remain inactive until the process restarts.

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

## Related articles [#related-articles]

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

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

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

Learn about the available metrics collected by the NRDOT Collector.

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

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