---
title: Install & configure NRDOT for Oracle monitoring with Docker
source: https://docs.newrelic.com/docs/opentelemetry/db360/oracle/docker
---

Get comprehensive insights into your Oracle Database performance with database monitoring, query analysis, and system health metrics using the New Relic Distribution of OpenTelemetry (NRDOT) Collector, running as a sibling container to an Oracle Database instance that's already running in Docker.

> #### 💡 GUIDED INSTALLATION
>
> To install through the New Relic UI instead, go to  **[one.newrelic.com](https://one.newrelic.com) > Integrations & Agents > Oracle (OpenTelemetry)** . This page covers the Docker install path only.

> #### 💡 TIP
>
> Looking to automate this at scale instead? Refer to [Ansible install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/ansible), [Chef install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/chef), or [Helm chart install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/helm) for Kubernetes.

## Prerequisites [#prerequisites]

Before you begin, ensure you have the following:

-   Docker installed on the host.
-   An Oracle Database container already running (Oracle Database `19c` or later), with `sqlplus` available inside it.
-   The `sys` password for that container.
-   A valid New Relic [license key](https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key).
-   Network connectivity from the collector container to [New Relic OTLP endpoint](https://docs.newrelic.com/docs/opentelemetry/best-practices/opentelemetry-otlp).

## Configure database user and grant privileges [#database-user]

Create a monitoring user and grant it the views needed for metrics, query, and event collection by running SQL against your Oracle container with `docker exec`. Choose the tab that matches your deployment, either a multitenant Container Database (CDB) or a single Pluggable Database (PDB):

**Container Database (CDB)**

This creates a common user (required to use the `C##` prefix) and grants it visibility across every PDB under the CDB. Replace `<YOUR_ORACLE_CONTAINER_NAME>`, `<YOUR_SYS_PASSWORD>`, `<YOUR_DB_USERNAME>`, and `<YOUR_DB_PASSWORD>` with your own values:

```bash
docker exec -i <YOUR_ORACLE_CONTAINER_NAME> sqlplus sys/'<YOUR_SYS_PASSWORD>' as sysdba << 'EOF'
ALTER SESSION SET CONTAINER = CDB$ROOT;

-- Create the common user and set container-data visibility
CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<YOUR_DB_PASSWORD>" CONTAINER=ALL;
GRANT CREATE SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
ALTER USER c##<YOUR_DB_USERNAME> SET CONTAINER_DATA=ALL CONTAINER=CURRENT;

-- Grant system and dynamic performance views
GRANT SELECT ON V_$INSTANCE                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$CONTAINERS                 TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$DATAFILE                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SYSSTAT                    TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$CON_SYSSTAT                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SYSMETRIC                  TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$CON_SYSMETRIC              TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SESSION                    TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$RESOURCE_LIMIT             TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$OSSTAT                     TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SGAINFO                    TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$ROWCACHE                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$PARAMETER                  TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_TABLESPACE_USAGE_METRICS  TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_TABLESPACES               TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_DATA_FILES                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_FREE_SPACE                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_RECYCLEBIN                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SQL                        TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL    TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$LOCK                       TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$SESSION_EVENT              TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_PROCEDURES                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_OBJECTS                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$PDBS                       TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_SERVICES                  TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_DATA_FILES                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_PROCEDURES                TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_OBJECTS                   TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$ASM_DISKGROUP_STAT          TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON V_$ASM_DISK_STAT               TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;

EXIT;
EOF
```

> #### 💡 TIP
>
> The `C##` prefix is required by Oracle for common users. The last two grants (`V_$ASM_DISKGROUP_STAT` and `V_$ASM_DISK_STAT`) are only required if you want to collect [ASM diskgroup and disk metrics](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/metrics-reference/#asm). Skip them if you don't use ASM.

**Pluggable Database (PDB)**

This creates a local user inside a single target PDB. Replace `<YOUR_ORACLE_CONTAINER_NAME>`, `<YOUR_SYS_PASSWORD>`, `<YOUR_PDB_SERVICE_NAME>`, `<YOUR_DB_USERNAME>`, and `<YOUR_DB_PASSWORD>` with your own values:

```bash
docker exec -i <YOUR_ORACLE_CONTAINER_NAME> sqlplus sys/'<YOUR_SYS_PASSWORD>'@//localhost:1521/<YOUR_PDB_SERVICE_NAME> as sysdba << 'EOF'
ALTER SESSION SET CONTAINER = <YOUR_PDB_SERVICE_NAME>;

-- Create the local user in the PDB
CREATE USER <YOUR_DB_USERNAME> IDENTIFIED BY "<YOUR_DB_PASSWORD>";
GRANT CREATE SESSION TO <YOUR_DB_USERNAME>;

-- Grant system and dynamic performance views
GRANT SELECT ON V_$INSTANCE                   TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$DATABASE                   TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$CONTAINERS                 TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$DATAFILE                   TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SYSSTAT                    TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SYSMETRIC                  TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SESSION                    TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$RESOURCE_LIMIT             TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$OSSTAT                     TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SGAINFO                    TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$ROWCACHE                   TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$PARAMETER                  TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS  TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_TABLESPACES               TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_DATA_FILES                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_FREE_SPACE                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_RECYCLEBIN                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SQL                        TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL    TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$LOCK                       TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$SESSION_EVENT              TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_PROCEDURES                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON DBA_OBJECTS                   TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$PDBS                       TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$PROCESS                    TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$TRANSACTION                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$CON_SYSSTAT                TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$CON_SYSMETRIC               TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$ASM_DISKGROUP_STAT          TO <YOUR_DB_USERNAME>;
GRANT SELECT ON V_$ASM_DISK_STAT               TO <YOUR_DB_USERNAME>;

EXIT;
EOF
```

> #### 💡 TIP
>
> The `V_$ASM_DISKGROUP_STAT` and `V_$ASM_DISK_STAT` grants are only required if you want to collect [ASM diskgroup and disk metrics](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/metrics-reference/#asm).

> #### 💡 TIP
>
> If you need to monitor the entire container database rather than an individual pluggable database, use the CDB tab instead.

## Ensure Docker network connectivity [#network]

Create a shared user-defined network (if you don't already have one) and connect your Oracle container to it, so the collector container can resolve it by name:

```bash
docker network create <YOUR_DOCKER_NETWORK> 2>/dev/null || true
docker network connect <YOUR_DOCKER_NETWORK> <YOUR_ORACLE_CONTAINER_NAME> 2>/dev/null || true
```

> #### 💡 TIP
>
> Both commands are safe to re-run: `|| true` swallows the "already exists" or "already connected" errors from a prior run.

## Create the NRDOT Collector configuration [#configure]

Choose the tab matching the user you created in [Configure database user and grant privileges](#database-user):

**Container Database (CDB) configuration**

> #### 💡 FULL CONFIGURATION
>
> This configuration focuses only on database monitoring without host infrastructure metrics. To enable full-feature monitoring, refer to the [configuration reference](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/config-reference/#cdb-full).

Run the following on the Docker host to generate `oracle-config.yaml`:

```bash
cat << 'EOF' > oracle-config.yaml
receivers:
  nroracledb:
    endpoint: "<YOUR_ORACLE_CONTAINER_NAME>:1521"
    username: "c##<YOUR_DB_USERNAME>"
    password: "<YOUR_DB_PASSWORD>"
    service: "<YOUR_CDB_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 - This baseline configuration captures essential metrics. To enable advanced monitoring and extended telemetry, refer to the full configuration documentation
    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

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]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb]
      exporters: [otlp/newrelic]
EOF
```

**Pluggable Database (PDB) configuration**

> #### 💡 FULL CONFIGURATION
>
> This configuration focuses only on database monitoring without host infrastructure metrics. To enable full-feature monitoring, refer to the [configuration reference](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/config-reference/#pdb-full).

Run the following on the Docker host to generate `oracle-config.yaml`:

```bash
cat << 'EOF' > oracle-config.yaml
receivers:
  nroracledb:
    endpoint: "<YOUR_ORACLE_CONTAINER_NAME>:1521"
    username: "<YOUR_DB_USERNAME>"
    password: "<YOUR_DB_PASSWORD>"
    service: "<YOUR_PDB_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 - This baseline configuration captures essential metrics. To enable advanced monitoring and extended telemetry, refer to the full configuration documentation
    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

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]
      exporters: [otlp/newrelic]
    logs/oracledb:
      receivers: [nroracledb]
      exporters: [otlp/newrelic]
EOF
```

### Configuration parameters [#configuration-parameters]

| Parameter                                             | Description                                                                                                                                                          |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<YOUR_ORACLE_CONTAINER_NAME>`                        | The name (or Docker DNS-resolvable hostname) of your running Oracle Database container.                                                                              |
| `<YOUR_DB_USERNAME>`                                  | The monitoring user you created in [Configure database user and grant privileges](#database-user) (the `C##` prefix is added automatically for CDB).                 |
| `<YOUR_DB_PASSWORD>`                                  | The password of the monitoring user you created in [Configure database user and grant privileges](#database-user).                                                   |
| `<YOUR_CDB_SERVICE_NAME>` / `<YOUR_PDB_SERVICE_NAME>` | The Oracle service name for your CDB or PDB.                                                                                                                         |
| `<YOUR_NEWRELIC_OTLP_ENDPOINT>`                       | Your New Relic OTLP endpoint. For more information, see [New Relic OTLP endpoints](https://docs.newrelic.com/docs/opentelemetry/best-practices/opentelemetry-otlp/). |
| `<YOUR_NEWRELIC_LICENSE_KEY>`                         | Your New Relic [license key](https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key).                                                 |

## Start the NRDOT Collector container [#start]

Run the collector on the same Docker network as your Oracle container:

```bash
docker run -d \
  --name nrdot-collector \
  --network <YOUR_DOCKER_NETWORK> \
  --platform linux/amd64 \
  -v "$PWD/oracle-config.yaml:/etc/nrdot-collector/oracle-config.yaml" \
  newrelic/nrdot-collector:latest \
  --config /etc/nrdot-collector/oracle-config.yaml
```

> #### 💡 TIP
>
> `--platform linux/amd64` avoids architecture mismatches on Apple Silicon and other ARM64 hosts where the Oracle image itself typically only ships for AMD64. Drop it if your host and images are already AMD64-native.

Confirm the collector container is running:

```bash
docker ps --filter name=nrdot-collector
```

If it's not running, check its logs for errors. The most common causes are YAML indentation issues in `oracle-config.yaml` or an unreachable Oracle container:

```bash
docker logs nrdot-collector
```

> #### 💡 TIP
>
> After changing `oracle-config.yaml`, restart the container to apply your changes:
>
> ```bash
> docker restart nrdot-collector
> ```

## Find and use your data [#find-use-data]

Once your data is being collected, you can access comprehensive Oracle Database monitoring through the New Relic UI.

To find your Oracle Database entity in New Relic:

1.  Go to **<https://one.newrelic.com> > All Capabilities > Databases**.
2.  Set the search criteria as `instrumentation.provider = opentelemetry`.
3.  Select your Oracle Database from the list of entities.

## Related articles [#related-articles]

[On-host CDB monitoring](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/host-cdb)

Learn how to install and configure NRDOT Collector for on-host Oracle Container Database monitoring.

[On-host PDB monitoring](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/host-pdb)

Learn how to install and configure NRDOT Collector for on-host Oracle Pluggable Database monitoring.

[Ansible install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/ansible)

Learn how to install and configure Oracle Database monitoring at scale with the newrelic.newrelic_install Ansible role.

[Chef install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/chef)

Learn how to install and configure Oracle Database monitoring at scale with the newrelic-install Chef cookbook.

[Helm chart install](https://docs.newrelic.com/docs/opentelemetry/db360/oracle/helm)

Learn how to install and configure Oracle Database monitoring on Kubernetes with the Helm chart.

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

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

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

Learn about the available metrics collected by the NRDOT Collector.
