---
title: Oracle Database
description: Oracle relational database system designed for enterprise grid computing
breadcrumbs: Docs > Integrations > Oracle Database
---

# Oracle Database
Supported OS 


## Overview{% #overview %}

The Oracle integration provides health and performance metrics for your Oracle database in near real-time. Visualize these metrics with the provided dashboard and create monitors to alert your team on Oracle database states.

Enable [Database Monitoring](https://docs.datadoghq.com/database_monitoring/setup_oracle.md) (DBM) for enhanced insights into query performance and database health. In addition to the standard integration features, Datadog DBM provides query-level metrics, live and historical query snapshots, wait event analysis, database load, query explain plans, and blocking query insights.

**Minimum Agent version:** 6.0.0

## Setup{% #setup %}

### Installation{% #installation %}

#### Prerequisite{% #prerequisite %}

To use the Oracle integration you can either use the native client (no additional install steps required), or the Oracle Instant Client.

##### Oracle Instant Client{% #oracle-instant-client %}

Skip this step if you are not using Instant Client.

{% tab title="Linux" %}
###### Linux{% #linux %}

1. Follow the [Oracle Instant Client installation for Linux](https://docs.oracle.com/en/database/oracle/oracle-database/19/mxcli/installing-and-removing-oracle-database-client.html).

1. Verify that the *Instant Client Basic* package is installed. Find it on Oracle's [download page](https://www.oracle.com/ch-de/database/technologies/instant-client/downloads.html).

After the Instant Client libraries are installed, ensure the runtime linker can find the libraries, for example:

   ```shell
   # Put the library location in the /etc/datadog-agent/environment file.
   
   echo "LD_LIBRARY_PATH=/u01/app/oracle/product/instantclient_19" \
   >> /etc/datadog-agent/environment
   ```

{% /tab %}

{% tab title="Windows" %}
###### Windows{% #windows %}

1. Follow the [Oracle Windows installation guide](https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html#ic_winx64_inst) to configure your Oracle Instant Client.

1. Verify the following:

   - The [Microsoft Visual Studio 2017 Redistributable](https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0) or the appropriate version is installed for the Oracle Instant Client.

   - The *Instant Client Basic* package from Oracle's [download page](https://www.oracle.com/ch-de/database/technologies/instant-client/downloads.html) is installed, and is available to all users on the given machine (for example, `C:\oracle\instantclient_19`).

   - The `PATH` environment variable contains the directory with the Instant Client (for example, `C:\oracle\instantclient_19`).

{% /tab %}

#### Datadog user creation{% #datadog-user-creation %}

{% tab title="Multi-tenant" %}
##### Multi-tenant{% #multi-tenant %}

###### Create user{% #create-user %}

Create a read-only login to connect to your server and grant the required permissions:

```SQL
CREATE USER c##datadog IDENTIFIED BY &password CONTAINER = ALL ;

ALTER USER c##datadog SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
```

###### Grant permissions{% #grant-permissions %}

Log on as `sysdba`, and grant the following permissions:

```SQL
grant create session to c##datadog ;
grant select on v_$session to c##datadog ;
grant select on v_$database to c##datadog ;
grant select on v_$containers to c##datadog;
grant select on v_$sqlstats to c##datadog ;
grant select on v_$instance to c##datadog ;
grant select on dba_feature_usage_statistics to c##datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to c##datadog ;
grant select on V_$PROCESS to c##datadog ;
grant select on V_$SESSION to c##datadog ;
grant select on V_$CON_SYSMETRIC to c##datadog ;
grant select on CDB_TABLESPACE_USAGE_METRICS to c##datadog ;
grant select on CDB_TABLESPACES to c##datadog ;
grant select on V_$SQLCOMMAND to c##datadog ;
grant select on V_$DATAFILE to c##datadog ;
grant select on V_$SYSMETRIC to c##datadog ;
grant select on V_$SGAINFO to c##datadog ;
grant select on V_$PDBS to c##datadog ;
grant select on CDB_SERVICES to c##datadog ;
grant select on V_$OSSTAT to c##datadog ;
grant select on V_$PARAMETER to c##datadog ;
grant select on V_$SQLSTATS to c##datadog ;
grant select on V_$CONTAINERS to c##datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to c##datadog ;
grant select on V_$SQL to c##datadog ;
grant select on V_$PGASTAT to c##datadog ;
grant select on v_$asm_diskgroup to c##datadog ;
grant select on v_$rsrcmgrmetric to c##datadog ;
grant select on v_$dataguard_config to c##datadog ;
grant select on v_$dataguard_stats to c##datadog ;
grant select on v_$transaction to c##datadog;
grant select on v_$locked_object to c##datadog;
grant select on dba_objects to c##datadog;
grant select on cdb_data_files to c##datadog;
grant select on dba_data_files to c##datadog;
```

If you configured custom queries that run on a pluggable database (PDB), you must grant the `set container` privilege to the `C##DATADOG` user:

```SQL
connect / as sysdba
alter session set container = your_pdb ;
grant set container to c##datadog ;
```

{% /tab %}

{% tab title="Non-CDB" %}
##### Non-CDB{% #non-cdb %}

###### Create user{% #create-user %}

Create a read-only login to connect to your server and grant the required permissions:

```SQL
CREATE USER datadog IDENTIFIED BY &password ;
```

###### Grant permissions{% #grant-permissions %}

Log on as `sysdba`, and grant the following permissions:

```SQL
grant create session to datadog ;
grant select on v_$session to datadog ;
grant select on v_$database to datadog ;
grant select on v_$containers to datadog;
grant select on v_$sqlstats to datadog ;
grant select on v_$instance to datadog ;
grant select on dba_feature_usage_statistics to datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to datadog ;
grant select on V_$PROCESS to datadog ;
grant select on V_$SESSION to datadog ;
grant select on V_$CON_SYSMETRIC to datadog ;
grant select on CDB_TABLESPACE_USAGE_METRICS to datadog ;
grant select on CDB_TABLESPACES to datadog ;
grant select on V_$SQLCOMMAND to datadog ;
grant select on V_$DATAFILE to datadog ;
grant select on V_$SYSMETRIC to datadog ;
grant select on V_$SGAINFO to datadog ;
grant select on V_$PDBS to datadog ;
grant select on CDB_SERVICES to datadog ;
grant select on V_$OSSTAT to datadog ;
grant select on V_$PARAMETER to datadog ;
grant select on V_$SQLSTATS to datadog ;
grant select on V_$CONTAINERS to datadog ;
grant select on V_$SQL_PLAN_STATISTICS_ALL to datadog ;
grant select on V_$SQL to datadog ;
grant select on V_$PGASTAT to datadog ;
grant select on v_$asm_diskgroup to datadog ;
grant select on v_$rsrcmgrmetric to datadog ;
grant select on v_$dataguard_config to datadog ;
grant select on v_$dataguard_stats to datadog ;
grant select on v_$transaction to datadog;
grant select on v_$locked_object to datadog;
grant select on dba_objects to datadog;
grant select on cdb_data_files to datadog;
grant select on dba_data_files to datadog;
```

{% /tab %}

{% tab title="RDS" %}
##### RDS{% #rds %}

###### Create user{% #create-user %}

Create a read-only login to connect to your server and grant the required permissions:

```SQL
CREATE USER datadog IDENTIFIED BY your_password ;
```

###### Grant permissions{% #grant-permissions %}

```SQL
grant create session to datadog ;
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQLSTATS','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL_PLAN_STATISTICS_ALL','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_FEATURE_USAGE_STATISTICS','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PROCESS','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CON_SYSMETRIC','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACE_USAGE_METRICS','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACES','DATADOG','SELECT',p_grant_option => false); 
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQLCOMMAND','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAFILE','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SGAINFO','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSMETRIC','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_SERVICES','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$OSSTAT','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQLSTATS','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL_PLAN_STATISTICS_ALL','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PGASTAT','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ASM_DISKGROUP','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$RSRCMGRMETRIC','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_CONFIG','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOCKED_OBJECT','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('CDB_DATA_FILES','DATADOG','SELECT',p_grant_option => false);
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DATA_FILES','DATADOG','SELECT',p_grant_option => false);
```

{% /tab %}

{% tab title="Oracle Autonomous Database" %}
##### Oracle Autonomous Database{% #oracle-autonomous-database %}

###### Create user{% #create-user %}

Create a read-only login to connect to your server and grant the required permissions:

```SQL
CREATE USER datadog IDENTIFIED BY your_password ;
```

###### Grant permissions{% #grant-permissions %}

```SQL
grant create session to datadog ;
grant select on v$session to datadog ;
grant select on v$database to datadog ;
grant select on v$containers to datadog;
grant select on v$sqlstats to datadog ;
grant select on v$instance to datadog ;
grant select on dba_feature_usage_statistics to datadog ;
grant select on V$SQL_PLAN_STATISTICS_ALL to datadog ;
grant select on V$PROCESS to datadog ;
grant select on V$SESSION to datadog ;
grant select on V$CON_SYSMETRIC to datadog ;
grant select on CDB_TABLESPACE_USAGE_METRICS to datadog ;
grant select on CDB_TABLESPACES to datadog ;
grant select on V$SQLCOMMAND to datadog ;
grant select on V$DATAFILE to datadog ;
grant select on V$SYSMETRIC to datadog ;
grant select on V$SGAINFO to datadog ;
grant select on V$PDBS to datadog ;
grant select on CDB_SERVICES to datadog ;
grant select on V$OSSTAT to datadog ;
grant select on V$PARAMETER to datadog ;
grant select on V$SQLSTATS to datadog ;
grant select on V$CONTAINERS to datadog ;
grant select on V$SQL_PLAN_STATISTICS_ALL to datadog ;
grant select on V$SQL to datadog ;
grant select on V$PGASTAT to datadog ;
grant select on v$asm_diskgroup to datadog ;
grant select on v$rsrcmgrmetric to datadog ;
grant select on v$dataguard_config to datadog ;
grant select on v$dataguard_stats to datadog ;
grant select on v$transaction to datadog;
grant select on v$locked_object to datadog;
grant select on dba_objects to datadog;
grant select on cdb_data_files to datadog;
grant select on dba_data_files to datadog;
```

{% /tab %}

### Configuration{% #configuration %}

To configure this check for an Agent running on a host:

1. Edit the `oracle.d/conf.yaml` file, in the `conf.d/` folder at the root of your [Agent's configuration directory](https://docs.datadoghq.com/agent/guide/agent-configuration-files.md#agent-configuration-directory). Update the `server` and `port` to set the masters to monitor. See the [sample oracle.d/conf.yaml](https://github.com/DataDog/datadog-agent/blob/main/cmd/agent/dist/conf.d/oracle.d/conf.yaml.example) for all available configuration options.

   ```yaml
   init_config:
   
   instances:
      ## @param server - string - required
      ## The IP address or hostname of the Oracle Database Server.
      #
      - server: localhost:1521
   
        ## @param service_name - string - required
        ## The Oracle Database service name. To view the services available on your server,
        ## run the following query: `SELECT value FROM v$parameter WHERE name='service_names'`
        #
        service_name: <SERVICE_NAME>
   
        ## @param username - string - required
        ## The username for the Datadog user account.
        #
        username: <USERNAME>
   
        ## @param password - string - required
        ## The password for the Datadog user account.
        #
        password: <PASSWORD>
   ```

**Note:** For the Agent releases between `7.50.1` (inclusive) and `7.53.0` (exclusive), the configuration subdirectory is `oracle-dbm.d`. For all other Agent releases, the configuration directory is `oracle.d`.

**Note**: Oracle Real Application Cluster (RAC) customers must configure the Agent for each RAC node, because the Agent collects information from every node separately by querying `V$` views. The Agent doesn't query any `GV$` views to avoid generating interconnect traffic.
[Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands.md#start-stop-and-restart-the-agent).
#### Connect to Oracle through TCPS{% #connect-to-oracle-through-tcps %}

To connect to Oracle through TCPS (TCP with SSL), uncomment the `protocol` configuration option and select `TCPS`. Update the `server` option to set the TCPS server to monitor.

````
```yaml
init_config:

instances:
  ## @param server - string - required
  ## The IP address or hostname of the Oracle Database Server.
  #
  - server: localhost:1522

    ## @param service_name - string - required
    ## The Oracle Database service name. To view the services available on your server,
    ## run the following query:
    #
    service_name: "<SERVICE_NAME>"

    ## @param username - string - required
    ## The username for the user account.
    #
    username: <USER>

    ## @param password - string - required
    ## The password for the user account.
    #
    password: "<PASSWORD>"

    ## @param protocol - string - optional - default: TCP
    ## The protocol to connect to the Oracle Database Server. Valid protocols include TCP and TCPS.
    ##
    #
    protocol: TCPS
```
````

### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands.md#agent-status-and-information) and look for `oracle` under the Checks section.

### Custom query{% #custom-query %}

Providing custom queries is also supported. Each query must have two parameters:

| Parameter | Description                                                                                                                                                                                                                                                                                                                                                                                      |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `query`   | This is the SQL to execute. It can be a simple statement or a multi-line script. All rows of the result are evaluated.                                                                                                                                                                                                                                                                           |
| `columns` | This is a list representing each column, ordered sequentially from left to right. There are two required pieces of data:a. `type` - This is the submission method (`gauge`, `count`, etc.).b. `name` - This is the suffix used to form the full metric name. If `type` is `tag`, this column is instead considered as a tag which is applied to every metric collected by this particular query. |

Optionally use the `tags` parameter to apply a list of tags to each metric collected.

The following:

```python
self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value'])
self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value'])
```

is what the following example configuration would become:

```yaml
- query: | # Use the pipe if you require a multi-line script.
    SELECT columns
    FROM tester.test_table
    WHERE conditions
  columns:
    # Put this for any column you wish to skip:
    - {}
    - name: metric1
      type: gauge
    - name: tag1
      type: tag
    - name: metric2
      type: count
  tags:
    - tester:oracle
```

See the [sample oracle.d/conf.yaml](https://github.com/DataDog/datadog-agent/blob/main/cmd/agent/dist/conf.d/oracle.d/conf.yaml.example) for all available configuration options.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **oracle.active\_background**(gauge)                             | Active background sessions                                                              |
| **oracle.active\_background\_on\_cpu**(gauge)                    | Active background sessions on CPU                                                       |
| **oracle.active\_sessions**(gauge)                               | Number of active sessions                                                               |
| **oracle.active\_sessions\_on\_cpu**(gauge)                      | Active sessions on CPU                                                                  |
| **oracle.asm\_diskgroup.free\_mb**(gauge)                        | The unused capacity of a disk group in megabytes, tagged by `state` (DBM only)          |
| **oracle.asm\_diskgroup.offline\_disks**(gauge)                  | The number of disks in an ASM disk group that are offline, tagged by `state` (DBM only) |
| **oracle.asm\_diskgroup.total\_mb**(gauge)                       | The total usable capacity of the disk group, tagged by `state` (DBM only)               |
| **oracle.avg\_synchronous\_single\_block\_read\_latency**(gauge) | Average synchronous single-block read latency*Shown as millisecond*                     |
| **oracle.branch\_node\_splits**(gauge)                           | Branch node splits per second                                                           |
| **oracle.buffer\_cachehit\_ratio**(gauge)                        | Ratio of buffer cache hits*Shown as percent*                                            |
| **oracle.cache\_blocks\_corrupt**(gauge)                         | Corrupt cache blocks*Shown as block*                                                    |
| **oracle.cache\_blocks\_lost**(gauge)                            | Lost cache blocks*Shown as block*                                                       |
| **oracle.consistent\_read\_changes**(gauge)                      | Consistent read changes per second                                                      |
| **oracle.consistent\_read\_gets**(gauge)                         | Consistent read gets per second                                                         |
| **oracle.data\_guard.apply\_lag**(gauge)                         | Data Guard apply lag*Shown as second*                                                   |
| **oracle.data\_guard.transport\_lag**(gauge)                     | Data Guard transport lag*Shown as second*                                               |
| **oracle.database\_cpu\_time\_ratio**(gauge)                     | Database CPU time ratio*Shown as percent*                                               |
| **oracle.database\_wait\_time\_ratio**(gauge)                    | Memory sorts per second*Shown as percent*                                               |
| **oracle.db\_block\_changes**(gauge)                             | DB block changes per second*Shown as block*                                             |
| **oracle.db\_block\_gets**(gauge)                                | DB block gets per second*Shown as block*                                                |
| **oracle.dbwr\_checkpoints**(gauge)                              | DBWR checkpoints per second                                                             |
| **oracle.disk\_sorts**(gauge)                                    | Disk sorts per second*Shown as operation*                                               |
| **oracle.enqueue\_deadlocks**(gauge)                             | Enqueue deadlocks per second                                                            |
| **oracle.enqueue\_timeouts**(gauge)                              | Enqueue timeouts per sec*Shown as timeout*                                              |
| **oracle.execute\_without\_parse**(gauge)                        | Execute without parse ratio*Shown as percent*                                           |
| **oracle.gc\_average\_cr\_get\_time**(gauge)                     | GC average CR get time*Shown as millisecond*                                            |
| **oracle.gc\_average\_current\_get\_time**(gauge)                | GC average current get time*Shown as millisecond*                                       |
| **oracle.gc\_cr\_block\_received**(gauge)                        | GC CR block received*Shown as block*                                                    |
| **oracle.gc\_current\_block\_received**(gauge)                   | GC current block received per second*Shown as block*                                    |
| **oracle.hard\_parses**(gauge)                                   | Hard parses per second                                                                  |
| **oracle.host\_cpu\_utilization**(gauge)                         | Host CPU utilization*Shown as percent*                                                  |
| **oracle.leaf\_nodes\_splits**(gauge)                            | Leaf node splits per second                                                             |
| **oracle.library\_cachehit\_ratio**(gauge)                       | Ratio of library cache hits*Shown as percent*                                           |
| **oracle.logical\_reads**(gauge)                                 | Logical reads per second*Shown as read*                                                 |
| **oracle.logons**(gauge)                                         | Number of logon attempts                                                                |
| **oracle.long\_table\_scans**(gauge)                             | Number of long table scans per sec*Shown as scan*                                       |
| **oracle.memory\_sorts\_ratio**(gauge)                           | Memory sorts ratio*Shown as percent*                                                    |
| **oracle.network\_traffic\_volume**(gauge)                       | Network traffic volume per second*Shown as byte*                                        |
| **oracle.num\_cpus**(gauge)                                      | Number of CPUs                                                                          |
| **oracle.os\_load**(gauge)                                       | Operating system load                                                                   |
| **oracle.parse\_failures**(gauge)                                | Parse failures per second                                                               |
| **oracle.pga\_cache\_hit**(gauge)                                | PGA cache hit percentage*Shown as percent*                                              |
| **oracle.physical\_memory\_gb**(gauge)                           | Physical memory*Shown as gibibyte*                                                      |
| **oracle.physical\_read\_bytes**(gauge)                          | Physical read bytes per second*Shown as byte*                                           |
| **oracle.physical\_read\_io\_requests**(gauge)                   | Physical read IO requests per second*Shown as request*                                  |
| **oracle.physical\_read\_total\_bytes**(gauge)                   | Physical read total bytes per second*Shown as byte*                                     |
| **oracle.physical\_read\_total\_io\_requests**(gauge)            | Physical read total IO requests per second*Shown as request*                            |
| **oracle.physical\_reads**(gauge)                                | Physical reads per sec*Shown as read*                                                   |
| **oracle.physical\_reads\_direct**(gauge)                        | Direct physical reads per second*Shown as read*                                         |
| **oracle.physical\_reads\_direct\_lobs**(gauge)                  | Direct physical reads (LOBs) per second*Shown as read*                                  |
| **oracle.physical\_write\_bytes**(gauge)                         | Physical write bytes per second*Shown as byte*                                          |
| **oracle.physical\_write\_io\_requests**(gauge)                  | Physical write IO requests per second*Shown as request*                                 |
| **oracle.physical\_write\_total\_bytes**(gauge)                  | Physical write total bytes per second*Shown as byte*                                    |
| **oracle.physical\_write\_total\_io\_requests**(gauge)           | Physical write total IO requests per second*Shown as request*                           |
| **oracle.physical\_writes**(gauge)                               | Physical writes per sec*Shown as write*                                                 |
| **oracle.physical\_writes\_direct**(gauge)                       | Direct physical writes per second*Shown as write*                                       |
| **oracle.physical\_writes\_direct\_lobs**(gauge)                 | Direct physical writes (LOBs) per second*Shown as write*                                |
| **oracle.process.pga\_allocated\_memory**(gauge)                 | PGA memory allocated by process*Shown as byte*                                          |
| **oracle.process.pga\_freeable\_memory**(gauge)                  | PGA memory freeable by process*Shown as byte*                                           |
| **oracle.process.pga\_max\_memory**(gauge)                       | PGA maximum memory by process*Shown as byte*                                            |
| **oracle.process.pga\_maximum\_memory**(gauge)                   | PGA maximum memory ever allocated by process*Shown as byte*                             |
| **oracle.process.pga\_used\_memory**(gauge)                      | PGA memory used by process*Shown as byte*                                               |
| **oracle.process\_limit**(gauge)                                 | Process limit usage*Shown as percent*                                                   |
| **oracle.redo\_allocation\_hit\_ratio**(gauge)                   | Redo allocation hit ratio*Shown as percent*                                             |
| **oracle.redo\_generated**(gauge)                                | Redo generated per second*Shown as byte*                                                |
| **oracle.redo\_writes**(gauge)                                   | Redo writes per second*Shown as write*                                                  |
| **oracle.resource\_manager.cpu\_consumed\_time**(gauge)          | Resource manager CPU consumed time*Shown as millisecond*                                |
| **oracle.resource\_manager.cpu\_wait\_time**(gauge)              | Resource manager CPU wait time*Shown as millisecond*                                    |
| **oracle.row\_cache\_hit\_ratio**(gauge)                         | Row cache hit ratio*Shown as percent*                                                   |
| **oracle.rows\_per\_sort**(gauge)                                | Rows per sort*Shown as row*                                                             |
| **oracle.service\_response\_time**(gauge)                        | Service response time*Shown as second*                                                  |
| **oracle.session.inactive\_seconds**(gauge)                      | Session inactive time*Shown as second*                                                  |
| **oracle.session\_count**(gauge)                                 | Session count                                                                           |
| **oracle.session\_limit\_usage**(gauge)                          | Session limit usage*Shown as percent*                                                   |
| **oracle.shared\_memory.size**(gauge)                            | Shared memory size*Shown as byte*                                                       |
| **oracle.shared\_pool\_free**(gauge)                             | Shared pool free memory %*Shown as percent*                                             |
| **oracle.soft\_parse\_ratio**(gauge)                             | Soft parse ratio*Shown as percent*                                                      |
| **oracle.sorts\_per\_user\_call**(gauge)                         | Sorts per user call                                                                     |
| **oracle.tablespace.in\_use**(gauge)                             | Tablespace in-use*Shown as percent*                                                     |
| **oracle.tablespace.maxsize**(gauge)                             | Tablespace maximum size*Shown as byte*                                                  |
| **oracle.tablespace.offline**(gauge)                             | Tablespace offline                                                                      |
| **oracle.tablespace.size**(gauge)                                | Tablespace size*Shown as byte*                                                          |
| **oracle.tablespace.used**(gauge)                                | Tablespace used*Shown as byte*                                                          |
| **oracle.temp\_space\_used**(gauge)                              | Temp space used*Shown as byte*                                                          |
| **oracle.total\_parse\_count**(gauge)                            | Total parse count per second                                                            |
| **oracle.user\_commits**(gauge)                                  | User commits per second                                                                 |
| **oracle.user\_rollbacks**(gauge)                                | number of user rollbacks*Shown as operation*                                            |
| **oracle.user\_sessions**(gauge)                                 | Number of user sessions                                                                 |

### Events{% #events %}

The Oracle Database check does not include any events.

### Service Checks{% #service-checks %}

**oracle.can\_connect**

Returns OK if the integration can connect to the oracle database, CRITICAL otherwise

*Statuses: ok, critical*

**oracle.can\_query**

Returns OK if the integration can run all the queries, CRITICAL otherwise

*Statuses: ok, critical*

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
