
La integración de Oracle proporciona métricas del estado y el rendimiento de tu base de datos de Oracle casi en tiempo real. Visualiza estas métricas con el dashboard proporcionado y crea monitores para alertar a tu equipo sobre los estados de base de datos de Oracle.
Activa Database Monitoring (DBM) para obtener información mejorada sobre el rendimiento de las consultas y el estado de las bases de datos. Además de las funciones de la integración estándar, Datadog DBM proporciona métricas a nivel de consulta, snapshots de consultas históricas y actuales, análisis de eventos de espera, carga de bases de datos, explain plans de consultas e información sobre bloqueos de consultas.
Configuración
Instalación
Requisito previo
Para utilizar la integración de Oracle puedes utilizar el cliente nativo (no se requieren pasos adicionales de instalación) o el Oracle Instant Client.
Oracle Instant Client
Omite este paso si no utilizas Instant Client.
Linux
Sigue las instrucciones de Instalación de Oracle Instant Client para Linux.
Comprueba que el paquete Instant Client Basic está instalado. Búscalo en la página de descargas. de Oracle.
Una vez instaladas las bibliotecas de Instant Client, asegúrate de que el enlazador de tiempo de ejecución puede encontrar las bibliotecas, por ejemplo:
# 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
Windows
Sigue la guía de instalación de Oracle Windows para configurar tu Oracle Instant Client.
Comprueba lo siguiente:
Se ha instalado Microsoft Visual Studio 2017 Redistributable o la versión adecuada para el Oracle Instant Client.
Se ha instalado el paquete Instant Client Basic de la página de descargas de Oracle y está disponible para todos los usuarios de la máquina en cuestión (por ejemplo, C:\oracle\instantclient_19).
La variable de entorno PATH contiene el directorio con el Instant Client (por ejemplo, C:\oracle\instantclient_19).
Creación de usuarios de Datadog
Multiinquilino
Crear usuario
Crea un inicio de sesión de solo lectura para conectarte a tu servidor y conceder los permisos necesarios:
CREATE USER c##datadog IDENTIFIED BY &password CONTAINER = ALL ;
ALTER USER c##datadog SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
Conceder permisos
Inicia sesión como sysdba y concede los siguientes permisos:
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;
Si has configurado consultas personalizadas que se ejecutan en una base de datos conectable (PDB), debes conceder el privilegio set container al usuario C##DATADOG:
connect / as sysdba
alter session set container = your_pdb ;
grant set container to c##datadog ;
Sin CDB
Crear usuario
Crea un inicio de sesión de solo lectura para conectarte a tu servidor y conceder los permisos necesarios:
CREATE USER datadog IDENTIFIED BY &password ;
Conceder permisos
Inicia sesión como sysdba y concede los siguientes permisos:
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;
RDS
Crear usuario
Crea un inicio de sesión de solo lectura para conectarte a tu servidor y conceder los permisos necesarios:
CREATE USER datadog IDENTIFIED BY your_password ;
Conceder permisos
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);
Oracle Autonomous Database
Crear usuario
Crea un inicio de sesión de solo lectura para conectarte a tu servidor y conceder los permisos necesarios:
CREATE USER datadog IDENTIFIED BY your_password ;
Conceder permisos
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;
Configuración
Para configurar este check para un Agent que se ejecuta en un host:
Edita el archivo oracle.d/conf.yaml, en la carpeta conf.d/ en la raíz de tu directorio de configuración del Agent. Actualiza server y port para configurar los masters que se van a monitorizar. Consulta el ejemplo oracle.d/conf.yaml para conocer todas las opciones de configuración disponibles.
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>
Nota: Para las versiones del Agent comprendidas entre 7.50.1 (incluido) y 7.53.0 (excluido), el subdirectorio de configuración es oracle-dbm.d. Para todas las demás versiones del Agent, el directorio de configuración es oracle.d.
Nota: Los clientes de Oracle Real Application Cluster (RAC) deben configurar el Agent para cada nodo RAC, ya que el Agent recopila información de cada nodo por separado, consultando vistas V$. El Agent no consulta ninguna vista GV$ para evitar generar tráfico de interconexión.
- Reinicia el Agent.
Conexión a Oracle a través de TCPS
Para conectarte a Oracle a través de TCPS (TCP con SSL), quita la marca de comentario de la opción de configuración protocol y selecciona TCPS. Actualiza la opción server para configurar el servidor TCPS en el 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
```
Validación
Ejecuta el subcomando de estado del Agent y busca oracle en la sección Checks.
Consulta personalizada
También es posible realizar consultas personalizadas. Cada consulta debe tener dos parámetros:
| Parámetro | Descripción |
| ————— | ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— |
| query | Este es el SQL a ejecutar. Puede ser una sentencia simple o un script de varias líneas. Se evalúan todas las filas del resultado. |
| columns | Esta es una lista que representa cada columna, ordenada secuencialmente de izquierda a derecha. Hay dos datos obligatorios:
a. type - Es el método de envío (gauge, count, etc.).
b. name - Es el sufijo utilizado para formar el nombre completo de la métrica. Si type es tag, esta columna se considera en cambio como una etiqueta que se aplica a cada métrica recopilada por esta consulta en particular. |
Opcionalmente, utiliza el parámetro tags para aplicar una lista de etiquetas (tags) a cada métrica recopilada.
Lo siguiente:
self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value'])
self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value'])
es en lo que se convertiría el siguiente ejemplo de configuración:
- 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
Consulta el ejemplo oracle.d/conf.yaml para conocer todas las opciones de configuración disponibles.
Datos recopilados
Métricas
| |
|---|
oracle.active_sessions (gauge) | Número de sesiones activas |
oracle.asm_diskgroup.free_mb (gauge) | Capacidad no utilizada de un grupo de discos en megabytes, etiquetada por state (solo DBM) |
oracle.asm_diskgroup.offline_disks (gauge) | Número de discos de un grupo de discos ASM que están fuera de línea, etiquetados por state (solo DBM) |
oracle.asm_diskgroup.total_mb (gauge) | Capacidad total utilizable del grupo de discos, etiquetada por state (solo DBM) |
oracle.buffer_cachehit_ratio (gauge) | Ratio de accesos a la caché del buffer Se muestra como porcentaje |
oracle.cache_blocks_corrupt (gauge) | Bloques de caché corruptos Se muestra como bloque |
oracle.cache_blocks_lost (gauge) | Bloques de caché perdidos Se muestra como bloque |
oracle.cursor_cachehit_ratio (gauge) | Ratio de accesos a la caché del cursor Se muestra como porcentaje. |
oracle.database_wait_time_ratio (gauge) | Ordenaciones de memoria por segundo Se muestra como porcentaje. |
oracle.disk_sorts (gauge) | Ordenaciones de disco por segundo Se muestra como operación |
oracle.enqueue_timeouts (gauge) | Tiempos de espera en cola excedidos por segundo Se muestra como tiempo de espera excedido |
oracle.gc_cr_block_received (gauge) | Bloque CR de recolección de basura recibido Se muestra como bloque |
oracle.library_cachehit_ratio (gauge) | Ratio de accesos a la caché de la biblioteca Se muestra como porcentaje |
oracle.logons (gauge) | Número de intentos de inicio de sesión |
oracle.long_table_scans (gauge) | Número de análisis extensos de tablas por segundo Se muestra como análisis |
oracle.memory_sorts_ratio (gauge) | Ratio de ordenaciones de la memoria Se muestra como porcentaje |
oracle.physical_reads (gauge) | Lecturas físicas por segundo Se muestra como lectura |
oracle.physical_writes (gauge) | Escrituras físicas por segundo Se muestra como escritura |
oracle.process.pga_allocated_memory (gauge) | Memoria PGA asignada por el proceso Se muestra como bytes |
oracle.process.pga_freeable_memory (gauge) | Memoria PGA liberable por proceso Se muestra como bytes |
oracle.process.pga_maximum_memory (gauge) | Memoria PGA máxima asignada por el proceso Se muestra como bytes |
oracle.process.pga_used_memory (gauge) | Memoria PGA utilizada por el proceso Se muestra como bytes |
oracle.rows_per_sort (gauge) | Filas por clasificación Se muestra como fila |
oracle.service_response_time (gauge) | Tiempo de respuesta del servicio Se muestra como segundos |
oracle.session_count (gauge) | Recuento de sesiones |
oracle.session_limit_usage (gauge) | Uso del límite de sesión Se muestra como porcentaje. |
oracle.shared_pool_free (gauge) | % de memoria libre del grupo compartido Se muestra como porcentaje |
oracle.sorts_per_user_call (gauge) | Clasificación por llamadas de usuario |
oracle.tablespace.in_use (gauge) | Espacio de tabla en uso Se muestra como porcentaje. |
oracle.tablespace.offline (gauge) | Espacio de tabla fuera de línea |
oracle.tablespace.size (gauge) | Tamaño del espacio de tabla Se muestra como bytes |
oracle.tablespace.used (gauge) | Espacio de tabla utilizado Se muestra como bytes |
oracle.temp_space_used (gauge) | Espacio temporal utilizado Se muestra como bytes |
oracle.user_rollbacks (gauge) | Número de reversiones de usuarios Se muestra como operación |
Eventos
El check de Oracle Database no incluye ningún evento.
Checks de servicio
oracle.can_connect
Devuelve OK si la integración puede conectarse a Oracle Database, CRITICAL en caso contrario
Estados: ok, crítico
oracle.can_query
Devuelve OK si la integración puede ejecutar todas las consultas, CRITICAL en caso contrario
Estados: ok, crítico
Solucionar problemas
¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.