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.
New Relic now empowers your team to monitor your Oracle Database performance using New Relic Distribution of OpenTelemetry (NRDOT) with New Relic database monitoring capabilities. This integration provides comprehensive insights into database metrics, query performance, and system health using the NRDOT collector.
This NRDOT-based approach complements our existing On-Host Integration (OHI) by leveraging OpenTelemetry standards for database monitoring, making it easier to integrate with your existing observability stack.
Prerequisites
Before you begin, ensure you have the following:
- Valid New Relic license key
- Supported architecture: Linux with AMD64 and ARM64
- Network connectivity to New Relic OTLP endpoint
- Oracle Database 19c or later
- This integration is available as a part of New Relic public preview program. Check with your Organization Manager to opt in from the Previews & Trials page.
Set-up the NRDOT Collector for Oracle Database monitoring
You can set up Oracle Database monitoring using the NRDOT Collector in on-host (multitenant) or RDS environments. You can configure NRDOT Collector using the following methods:
- Guided install: The guided install method provides step-by-step instructions on the New Relic platform to help you install and configure the NRDOT Collector for Oracle Database monitoring.
- Manual install: The manual install method allows you to set up the NRDOT Collector on your own by following the instructions in this documentation. You can manually configure in following environments:
- On-host (multitenant) environment: Install the NRDOT Collector on the same host as your Oracle Database instance to collect both infrastructure and database telemetry data.
- RDS environment: Install the NRDOT Collector in an RDS environment to monitor your Oracle Database instances running in Amazon RDS.
Tip
The NRDOT Collector collects both infrastructure and database related telemetry data, so you can have a unified observability solution for your Oracle Database environment in New Relic.
To install the NRDOT Collector:
Install NRDOT Collector
Log in to your New Relic account.
Go to left navigation pane > + Integration & Agents > Oracle (OpenTelemetry).
On the Select an account screen, select the account you want to install the Oracle Database integration on, and click Continue.
On the Enter your credential screen, select one of the following options, then click Continue:
- Use an existing key: If you already have a license key, provide the license key. For more information, refer to User keys.
- Create a new key: If you don't have a license key, click Create a new key to create one.
On the Compatibility and requirements screen, ensure that all the requirements are met, and click Continue.
On the Database user configuration screen, select your deployment type to install the integration.
Follow the on-screen instructions to set up the integration for the selected environment.
After installation, on the Test your integration screen, click Test connection to verify that the NRDOT Collector can connect to your Oracle Database instance and send data to New Relic. If the test's successful, you'll see a confirmation message.
(Optional) Set up APM-database correlation
To correlate your application performance with database operations, you can set up database service identification. This feature allows you to see exactly which applications are generating specific database workloads. For more information, refer to set up database service identification to get APM-database correlation in New Relic.
Important
To view database performance data in APM, both entities must be in the same New Relic account. If the entities are in different New Relic accounts, you must have access to both accounts to view the data.
Find and use your data
Once your data is being collected, you can access comprehensive Oracle Database monitoring through New Relic UI.
To find your Oracle Database entity in New Relic:
- Go to https://one.newrelic.com > All Capabilities > Databases.
- Set the search criteria as
instrumentation.provider = opentelemetry. - Select your Oracle Database from the list of entities.
You can set up Oracle Database monitoring using the NRDOT Collector in on-host or multitenant environments. To install the NRDOT Collector in on-host (multitenant) environments, follow these steps:
Note: All PDBs under this CDB will be monitored.
Installation method
Select the appropriate installation distribution method for your Linux environment:
Configure database user
Create a monitoring user with necessary privileges for your multitenant Oracle Database. This requires creating a common user with the C## prefix.
Before creating the database user or running any assignment grants, you must execute the following statement as a
SYSuser to set your current active container context toCDB$ROOT:ALTER SESSION SET CONTAINER = CDB$ROOT;For multitenant databases, log in to the root database as an administrator. Use CREATE USER to add a new user to the database. Specified username will be a 'common user' and needs to be prefixed with
c##as recommended by Oracle.CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<USER_PASSWORD>" CONTAINER=ALL;GRANT CREATE SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;Run the following statement as SYSDBA on the CDB root. This allows the monitoring user to see every PDB's rows in container-data views, which is required for per-PDB metrics and events.
ALTER USER c##<YOUR_DB_USERNAME> SET CONTAINER_DATA=ALL CONTAINER=CURRENT;Tip
Ensure your
USER_PASSWORDmeets Oracle new user password requirements.
Grant monitoring privileges for multitenant database
Run the following GRANT statements as SYSDBA on the CDB root. These cover instance detection, metrics collection, per-PDB monitoring, and events collection. You can execute them together as a single script or run each statement individually.
GRANT SELECT ON V_$INSTANCE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$DATABASE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CONTAINERS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$DATAFILE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SYSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CON_SYSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SYSMETRIC TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CON_SYSMETRIC TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SESSION TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$RESOURCE_LIMIT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$OSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SGAINFO TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$ROWCACHE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$PARAMETER TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_TABLESPACE_USAGE_METRICS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_TABLESPACES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_DATA_FILES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_FREE_SPACE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_RECYCLEBIN TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SQL TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$LOCK TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SESSION_EVENT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_PROCEDURES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_OBJECTS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$PDBS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_SERVICES TO c##<USER_NAME> CONTAINER=ALL;Configure NRDOT Collector
Create the configuration file. The filename must be
oracle-config.yaml.bash$sudo nano /etc/nrdot-collector/oracle-config.yamlAdd the configuration content below to the
oracle-config.yamlfile you created in the previous step.Update the NRDOT collector configuration to use your
oracle-config.yamlfile.bash$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/oracle-config.yaml"|' /etc/nrdot-collector/nrdot-collector.confSet the following required parameters in the configuration file:
Parameter
Description
<YOUR_DB_HOST>Enter your Oracle Database hostname.
<YOUR_DB_PORT>Enter your Oracle Database port.
<USERNAME>Enter your database username.
<PASSWORD>Enter your database password.
<YOUR_SERVICE_NAME>Enter your Oracle service name.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Enter the New Relic OTLP endpoint. For more information, refer to New Relic OTLP endpoints documentation.
<YOUR_NEWRELIC_LICENSE_KEY>Enter your New Relic API key.
Under the Events section, enable these event types to collect their metrics:
Event
Description
db.server.query_samplePer-session active query samples capturing current SQL, wait state, and blocking details.
db.server.top_queryTop N SQL statements by CPU or elapsed time, including execution stats and query plans.
db.server.session.wait_samplePer-session cumulative wait counts and durations from
v$session_event.Configure the collection settings for each event type:
Configuration Section
Parameter
Default Value
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60s
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
Tip
For more detailed information about New Relic OTLP endpoint configuration and OpenTelemetry best practices, refer to the OpenTelemetry OTLP documentation.
(Optional) Set up SQL query receiver
You can configure SQL query receiver to collect custom metrics from your Oracle Database. For more information, refer to the SQL query receiver documentation.
Restart NRDOT collector
After updating your configuration, restart the NRDOT collector:
$sudo systemctl restart nrdot-collector.service$sudo systemctl status nrdot-collector.serviceTip
Always restart the NRDOT Collector after making configuration changes so the new settings take effect.
(Optional) Multi-receiver configuration
The nrdot-collector binary supports a multi-receiver configuration within a single oracle-config.yaml to monitor multiple Oracle Database instances using unique credentials.
Tip
This configuration allows you to monitor multiple Oracle databases instances simultaneously. Each instance gets its own receiver configuration with unique credentials, while sharing common processors and exporters. Adjust the
collection_intervaland other parameters based on your monitoring requirements.Restart the NRDOT collector after updating the configuration to apply changes.
(Optional) Set up APM-database correlation
To correlate your application performance with database operations, you can set up database service identification. This feature allows you to see exactly which applications are generating specific database workloads. For more information, refer to set up database service identification to get APM-database correlation in New Relic.
Important
To view database performance data in APM, both entities must be in the same New Relic account. If the entities are in different New Relic accounts, you must have access to both accounts to view the data.
(Optional) Configure secret management
The secret management feature allows you to securely manage sensitive information, such as database credentials. This helps to enhance the security of your monitoring setup by avoiding hardcoding sensitive data in configuration files. For more information, refer to secret management.
Find and use your data
Once your data is being collected, you can access comprehensive Oracle Database monitoring through New Relic UI.
To find your Oracle Database entity in New Relic:
- Go to https://one.newrelic.com > All Capabilities > Databases.
- Set the search criteria as
instrumentation.provider = opentelemetry. - Select your Oracle Database from the list of entities.
To install the NRDOT Collector for PDB environments, follow these steps:
Installation method
Select the appropriate installation distribution method for your Linux environment:
Configure database user
Create a monitoring user with the necessary privileges for your PDB Oracle Database instance.
- Run the following statement as SYS before creating the user or running any grants:ALTER SESSION SET CONTAINER = "<YOUR_PDB>";
- Run the following statements as SYS inside your target PDB to create a local monitoring user:CREATE USER <USER_NAME> IDENTIFIED BY "<YOUR_PASSWORD>";GRANT CREATE SESSION TO <USER_NAME>;
Grant monitoring privileges for multitenant database
Run these commands as the SYS user inside your PDB. This gives the monitoring tool the basic access it needs to collect metrics, track events, and find your database instances.
GRANT SELECT ON V_$INSTANCE TO <USER_NAME>;GRANT SELECT ON V_$DATABASE TO <USER_NAME>;GRANT SELECT ON V_$CONTAINERS TO <USER_NAME>;GRANT SELECT ON V_$DATAFILE TO <USER_NAME>;GRANT SELECT ON V_$SYSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SYSMETRIC TO <USER_NAME>;GRANT SELECT ON V_$SESSION TO <USER_NAME>;GRANT SELECT ON V_$RESOURCE_LIMIT TO <USER_NAME>;GRANT SELECT ON V_$OSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SGAINFO TO <USER_NAME>;GRANT SELECT ON V_$ROWCACHE TO <USER_NAME>;GRANT SELECT ON V_$PARAMETER TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACES TO <USER_NAME>;GRANT SELECT ON DBA_DATA_FILES TO <USER_NAME>;GRANT SELECT ON DBA_FREE_SPACE TO <USER_NAME>;GRANT SELECT ON DBA_RECYCLEBIN TO <USER_NAME>;GRANT SELECT ON V_$SQL TO <USER_NAME>;GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO <USER_NAME>;GRANT SELECT ON V_$LOCK TO <USER_NAME>;GRANT SELECT ON V_$SESSION_EVENT TO <USER_NAME>;GRANT SELECT ON DBA_PROCEDURES TO <USER_NAME>;GRANT SELECT ON DBA_OBJECTS TO <USER_NAME>;GRANT SELECT ON V_$PDBS TO <USER_NAME>;GRANT SELECT ON CDB_SERVICES TO <USER_NAME>;Configure NRDOT Collector
Configure the NRDOT Collector with your PDB-specific settings.
Create the configuration file. The filename must be
oracle-config.yaml.bash$sudo nano /etc/nrdot-collector/oracle-config.yamlAdd the configuration content below to the
oracle-config.yamlfile you created in the previous step.Update the NRDOT collector configuration to use your
oracle-config.yamlfile.bash$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/oracle-config.yaml"|' /etc/nrdot-collector/nrdot-collector.confSet the following required parameters in the configuration file:
Parameter
Description
<YOUR_DB_HOST>Enter your Oracle Database hostname.
<YOUR_DB_PORT>Enter your Oracle Database port.
<USERNAME>Enter your database username.
<PASSWORD>Enter your database password.
<YOUR_SERVICE_NAME>Enter your Oracle service name.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Enter the New Relic OTLP endpoint. For more information, refer to New Relic OTLP endpoints documentation.
<YOUR_NEWRELIC_LICENSE_KEY>Enter your New Relic API key.
Under the Events section, enable these event types to collect their metrics:
Event
Description
db.server.query_samplePer-session active query samples capturing current SQL, wait state, and blocking details.
db.server.top_queryTop N SQL statements by CPU or elapsed time, including execution stats and query plans.
db.server.session.wait_samplePer-session cumulative wait counts and durations from
v$session_event.Configure the collection settings for each event type:
Configuration Section
Parameter
Value
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60s
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
Tip
For more detailed information about New Relic OTLP endpoint configuration and OpenTelemetry best practices, refer to the OpenTelemetry OTLP documentation.
(Optional) Set up SQL query receiver
You can configure SQL query receiver to collect custom metrics from your Oracle Database. For more information, refer to the SQL query receiver documentation.
Restart NRDOT collector
After updating your configuration, restart the NRDOT collector:
$sudo systemctl restart nrdot-collector.service$sudo systemctl status nrdot-collector.serviceTip
Always restart the NRDOT collector after making configuration changes to ensure the new settings take effect.
(Optional) Multi-receiver configuration
The nrdot-collector binary supports a multi-receiver configuration within a single oracle-config.yaml to monitor multiple Oracle Database instances using unique credentials.
Tip
This configuration allows you to monitor multiple Oracle databases instances simultaneously. Each instance gets its own receiver configuration with unique credentials, while sharing common processors and exporters. Adjust the
collection_intervaland other parameters based on your monitoring requirements.Restart the NRDOT collector after updating the configuration to apply changes.
(Optional) Set up APM-database correlation
To correlate your application performance with database operations, you can set up database service identification. This feature allows you to see exactly which applications are generating specific database workloads. For more information, refer to set up database service identification to get APM-database correlation in New Relic.
Important
To view database performance data in APM, both entities must be in the same New Relic account. If the entities are in different New Relic accounts, you must have access to both accounts to view the data.
(Optional) Configure secret management
The secret management feature allows you to securely manage sensitive information, such as database credentials. This helps to enhance the security of your monitoring setup by avoiding hardcoding sensitive data in configuration files. For more information, refer to secret management.
Find and use your data
Once your data is being collected, you can access comprehensive Oracle Database monitoring through New Relic UI.
To find your Oracle Database entity in New Relic:
- Go to https://one.newrelic.com > All Capabilities > Databases.
- Set the search criteria as
instrumentation.provider = opentelemetry. - Select your Oracle Database from the list of entities.
To install the NRDOT Collector in RDS environments, follow these steps:
Installation method
Select the appropriate installation distribution method for your Linux environment:
Configure database user
Create a monitoring user with necessary privileges for your RDS Oracle Database.
Log in to the root database as an administrator:
CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";Grant
CONNECTprivileges to newly created user:GRANT CONNECT TO <USERNAME>;
Grant monitoring privileges for RDS database
Execute the following SQL statements to grant monitoring privileges. Replace <USERNAME_IN_UPPERCASE> with your username in uppercase:
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSMETRIC', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CON_SYSMETRIC', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION_EVENT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CON_SYSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$OSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SGAINFO', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQLSTATS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL_PLAN_STATISTICS_ALL', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$ROWCACHE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$RESOURCE_LIMIT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$LOCK', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAFILE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_DATA_FILES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_FREE_SPACE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_RECYCLEBIN', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACE_USAGE_METRICS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_PROCEDURES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACE_USAGE_METRICS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_SERVICES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);GRANT CREATE SESSION TO <USERNAME_IN_UPPERCASE>;Configure NRDOT Collector
Create the configuration file. The filename must be
oracle-config.yaml.bash$sudo nano /etc/nrdot-collector/oracle-config.yamlAdd the configuration content below to the
oracle-config.yamlfile you created in the previous step.Set the following required parameters in the configuration file:
Parameter
Description
<YOUR_DB_HOST>Enter your Oracle Database hostname.
<YOUR_DB_PORT>Enter your Oracle Database port.
<USERNAME>Enter your database username.
<PASSWORD>Enter your database password.
<YOUR_SERVICE_NAME>Enter your PDB service name.
<YOUR_NEWRELIC_OTLP_ENDPOINT>Enter the New Relic OTLP endpoint. For more information, refer to New Relic OTLP endpoints documentation.
<YOUR_NEWRELIC_LICENSE_KEY>Enter your New Relic license key.
Under the Events section, enable these event types to collect their metrics:
Event
Description
db.server.query_samplePer-session active query samples capturing current SQL, wait state, and blocking details.
db.server.top_queryTop N SQL statements by CPU or elapsed time, including execution stats and query plans.
db.server.session.wait_samplePer-session cumulative wait counts and durations from
v$session_event.Configure the collection settings for each event type:
Configuration Section
Parameter
Value
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60s
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
(Optional) Set up SQL query receiver
You can configure SQL query receiver to collect custom metrics from your Oracle Database. For more information, refer to the SQL query receiver documentation.
(Optional) Multi-receiver configuration
The nrdot-collector binary supports a multi-receiver configuration within a single oracle-config.yaml to monitor multiple Oracle Database instances using unique credentials. The sample oracle-config.yaml below demonstrates how to set up multiple receivers for different RDS instances while sharing common processors and exporters.
Tip
This configuration allows you to monitor multiple Oracle RDS instances simultaneously. Each instance gets its own receiver configuration with unique credentials, while sharing common processors and exporters. Adjust the
collection_intervaland other parameters based on your monitoring requirements.Restart the NRDOT collector after updating the configuration to apply changes.
(Optional) Set up APM-database correlation
To correlate your application performance with database operations, you can set up database service identification. This feature allows you to see exactly which applications are generating specific database workloads. For more information, refer to set up database service identification to get APM-database correlation in New Relic.
Important
To view database performance data in APM, both entities must be in the same New Relic account. If the entities are in different accounts, you must have access to both accounts to view the data.
(Optional) Configure secret management
The secret management feature allows you to securely manage sensitive information, such as database credentials. This helps to enhance the security of your monitoring setup by avoiding hardcoding sensitive data in configuration files. For more information, refer to secret management.
Find and use your data
Once your data is being collected, you can access comprehensive Oracle Database monitoring through New Relic UI.
To find your Oracle Database entity in New Relic:
- Go to https://one.newrelic.com > All Capabilities > Databases.
- Set the search criteria as
instrumentation.provider = opentelemetry. - Select your Oracle Database from the list of entities.
To install the NRDOT Collector for Oracle Autonomous Database (ADB) environments, follow these steps:
Installation method
Select the appropriate installation distribution method for your Linux environment:
Configure database user
Create a monitoring user with the necessary privileges for your ADB Oracle Database instance. Run the following statements as SYS inside your target ADB to create a local monitoring user:
CREATE USER <USER_NAME> IDENTIFIED BY "<YOUR_PASSWORD>";GRANT CREATE SESSION TO <USER_NAME>;Grant monitoring privileges for Autonomous Database
Run these commands as an admin inside your ADB. This gives the monitoring tool the basic access it needs to collect metrics, track events, and find your database instances.
GRANT SELECT ON SYS.V_$INSTANCE TO <USER_NAME>;GRANT SELECT ON SYS.V_$DATABASE TO <USER_NAME>;GRANT SELECT ON SYS.V_$CONTAINERS TO <USER_NAME>;GRANT SELECT ON SYS.V_$DATAFILE TO <USER_NAME>;GRANT SELECT ON SYS.V_$PDBS TO <USER_NAME>; GRANT SELECT ON SYS.V_$SYSSTAT TO <USER_NAME>;GRANT SELECT ON SYS.V_$SYSMETRIC TO <USER_NAME>;GRANT SELECT ON SYS.V_$SESSION TO <USER_NAME>;GRANT SELECT ON SYS.V_$RESOURCE_LIMIT TO <USER_NAME>;GRANT SELECT ON SYS.V_$OSSTAT TO <USER_NAME>;GRANT SELECT ON SYS.V_$SGAINFO TO <USER_NAME>;GRANT SELECT ON SYS.V_$ROWCACHE TO <USER_NAME>;GRANT SELECT ON SYS.V_$PARAMETER TO <USER_NAME>;GRANT SELECT ON SYS.DBA_TABLESPACE_USAGE_METRICS TO <USER_NAME>;GRANT SELECT ON SYS.DBA_TABLESPACES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_DATA_FILES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_FREE_SPACE TO <USER_NAME>;GRANT SELECT ON SYS.DBA_RECYCLEBIN TO <USER_NAME>;GRANT SELECT ON SYS.V_$SQL TO <USER_NAME>;GRANT SELECT ON SYS.V_$SQL_PLAN_STATISTICS_ALL TO <USER_NAME>;GRANT SELECT ON SYS.V_$LOCK TO <USER_NAME>;GRANT SELECT ON SYS.V_$SESSION_EVENT TO <USER_NAME>;GRANT SELECT ON SYS.DBA_PROCEDURES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_OBJECTS TO <USER_NAME>;Configure NRDOT Collector
Configure the NRDOT Collector with your ADB-specific settings. Create a configuration file (e.g., adb-config.yaml) with the following content:
receivers: nroracledb/adb: datasource: "oracle://<USERNAME>:<PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>/<YOUR_SERVICE_NAME>?ssl=true&ssl%20verify=true" 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: oracledb.cpu_time: enabled: true oracledb.executions: enabled: true oracledb.parse_calls: enabled: true oracledb.hard_parses: enabled: true oracledb.logical_reads: enabled: true oracledb.physical_reads: enabled: true oracledb.physical_reads_direct: enabled: true oracledb.physical_writes: enabled: true oracledb.physical_writes_direct: enabled: true oracledb.physical_read_io_requests: enabled: true oracledb.physical_write_io_requests: enabled: true oracledb.physical_io.cache_writes: enabled: true oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size oracledb.physical_io.transferred: enabled: true attributes: - disk.io.direction - disk.io.type oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type oracledb.consistent_gets: enabled: true oracledb.db_block_gets: enabled: true oracledb.data_dictionary.hit_ratio: enabled: true oracledb.pga_memory: enabled: true oracledb.enqueue_deadlocks: enabled: true oracledb.exchange_deadlocks: enabled: true oracledb.sessions.usage: enabled: true attributes: - session_type - session_status oracledb.logons: enabled: true oracledb.user_commits: enabled: true oracledb.user_rollbacks: enabled: true oracledb.tablespace_size.limit: enabled: true attributes: - tablespace_name oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name oracledb.storage.usage: enabled: true oracledb.storage.utilization: enabled: true oracledb.recycle_bin.limit: enabled: true oracledb.queries_parallelized: enabled: true oracledb.ddl_statements_parallelized: enabled: true oracledb.dml_statements_parallelized: enabled: true oracledb.parallel_operations_not_downgraded: enabled: true oracledb.parallel_operations_downgraded_1_to_25_pct: enabled: true oracledb.parallel_operations_downgraded_25_to_50_pct: enabled: true oracledb.parallel_operations_downgraded_50_to_75_pct: enabled: true oracledb.parallel_operations_downgraded_75_to_99_pct: enabled: true oracledb.parallel_operations_downgraded_to_serial: enabled: true
processors: batch: resource/add_event_name: attributes: - key: host.address value: "<YOUR_DB_HOST>" action: upsert
exporters: otlphttp/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: telemetry: metrics: level: none pipelines: metrics/oracledb: receivers: [nroracledb/adb] processors: [resource/add_event_name, batch] exporters: [otlphttp/newrelic] logs/oracledb: receivers: [nroracledb/adb] processors: [resource/add_event_name, batch] exporters: [otlphttp/newrelic]Important
Note: The following metrics are not supported in ADB:
- oracledb.database.cpu.utilization
- oracledb.database.wait.utilization
- oracledb.host.cpu.utilization
- oracledb.execution.utilization
- oracledb.parse.rate
- oracledb.parse.utilization
- oracledb.sort.ratio
- oracledb.sql_service.response.duration
- oracledb.buffer_cache.utilization
- oracledb.library_cache.utilization
- oracledb.shared_pool.utilization
- oracledb.redo_allocation.utilization
- oracledb.processes.limit
- oracledb.processes.usage
- oracledb.sessions.limit
- oracledb.transactions.limit
- oracledb.transactions.usage
- oracledb.dml_locks.limit
- oracledb.dml_locks.usage
- oracledb.enqueue_locks.limit
- oracledb.enqueue_locks.usage
- oracledb.enqueue_resources.limit
- oracledb.enqueue_resources.usage
(Optional) Set up SQL query receiver
You can configure SQL Query Receiver to collect custom metrics from your Oracle Database. For more information, refer to the SQL Query Receiver documentation.
Restart NRDOT collector
After configuring the collector, restart the NRDOT collector service to apply the changes:
$sudo systemctl restart nrdot-collectorTo verify that the collector is running properly, check the service status:
$sudo systemctl status nrdot-collectorTip
Always restart the NRDOT collector after making configuration changes to ensure the new settings take effect.
(Optional) Multi-receiver configuration
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.
(Optional) Set up APM-database correlation
To correlate your application performance with database operations, you can set up database service identification. This feature allows you to see exactly which applications are generating specific database workloads. For more information, refer to set up database service identification to get APM-database correlation in New Relic.
Important
To view database performance data in APM, both entities must be in the same New Relic account. If the entities are in different New Relic accounts, you must have access to both accounts to view the data.
(Optional) Configure secret management
You can configure the NRDOT Collector to retrieve sensitive information, such as passwords, from secret management systems instead of storing them in plain text in configuration files. For more information, refer to secret management.
Find and use your data
After you set up the Oracle ADB integration, you can start monitoring and analyzing your database performance in New Relic:
- Go to one.newrelic.com > All Entities.
- Filter by Oracle to find your database entities.
- Select your Oracle ADB entity to view dashboards, metrics, and logs.
For more information about monitoring Oracle databases, refer to our database monitoring documentation.
NRDOT collector supported commands
This section provides a list of common commands for managing the NRDOT Collector service on your system.
Available metrics
The following metrics are available for Oracle Database monitoring with NRDOT. Enable the relevant scrapers in your configuration to collect them.
Troubleshooting
If you encounter issues during setup, use this troubleshooting guide to diagnose and resolve common problems.
What's next
After setting up Oracle Database monitoring with NRDOT:
- Create custom dashboards to visualize your database metrics
- Set up alerts for critical database performance thresholds
- Explore your data using New Relic query capabilities