

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Conexión a un origen de datos de Oracle Database
<a name="oracle-datasource-AMG"></a>

**nota**  
Este origen de datos es solo para Grafana Enterprise. Para obtener más información, consulte [Administración del acceso a los complementos empresariales](upgrade-to-enterprise-plugins.md).  
Además, en los espacios de trabajo compatibles con la versión 9 o posterior, es posible que se deba instalar el complemento adecuado para este origen de datos. Para obtener más información, consulte [Ampliación de su espacio de trabajo con complementos](grafana-plugins.md).

## Adición del origen de datos
<a name="datasource-configuration"></a>

 Seleccione **Orígenes de datos** en el panel izquierdo de Grafana. 

 Seleccione Agregar origen de datos: 

 Ingrese **oracle** para buscar el origen de datos. 

 Ingrese los detalles del servidor de Oracle. 

 Ingrese un nombre de host (o dirección IP) junto con el número de puerto y el nombre de usuario y la contraseña para conectarse. 

 Si activa la opción tnsnames, podrá utilizar cualquier entrada válida que se encuentre en el archivo de configuración tnsnames.ora, junto con la autenticación básica. 

 Similar al ejemplo anterior, pero con Kerberos para la autenticación. Consulte la guía de configuración específica de Kerberos para obtener detalles sobre cómo configurar el sistema operativo o el contenedor de Docker para usar Kerberos. 

 Si lo desea, cambie la zona horaria utilizada para conectarse al servidor de Oracle y para que la usen las macros con reconocimiento de zonas horarias. La configuración predeterminada es UTC. 

 Guarde y pruebe el origen de datos; debería aparecer un mensaje en color verde que ponga “La conexión a la base de datos es correcta”. 

## De uso
<a name="usage-4"></a>

### Macros
<a name="macros-1"></a>

 Para simplificar la sintaxis y permitir partes dinámicas, como los filtros de intervalo de fechas, la consulta puede contener macros. El nombre de la columna debe estar entre comillas dobles (`"`). 


|  Ejemplo de macros  |  Description (Descripción)  | 
| --- | --- | 
|  \$1\$1\$1\$1time(dateColumn)\$1 \$1 Se sustituirá por una expresión para cambiar el nombre de la columna a `time`. Por ejemplo, `dateColumn as time` \$1\$1\$1\$1timeEpoch(dateColumn)\$1  |  Se sustituirá por una expresión para cambiar el nombre de la columna a time y convertir el valor a una marca de tiempo Unix (en milisegundos).  | 
|  \$1\$1\$1\$1timeFilter(dateColumn)\$1 \$1 Se sustituirá por un filtro de intervalo de tiempo con el nombre de columna especificado. Por ejemplo, `dateColumn BETWEEN TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1.500.376.552.001 AND TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552002` \$1\$1\$1\$1timeFrom()\$1  |  Se sustituirá por el inicio de la selección de tiempo actualmente activa convertida al tipo de datos DATE. Por ejemplo, TO\$1DATE('19700101','yyyymmdd') \$1 (1/24/60/60/1000) \$1 1500376552001.  | 
|  \$1\$1\$1\$1timeTo()\$1 \$1 Se sustituirá por el final de la selección de tiempo actualmente activa convertida al tipo de datos \$1\$1\$1\$1timeGroup(dateColumn,"5m")\$1  |  Se sustituirá por una expresión utilizable en la cláusula AGRUPAR POR.  | 
|  \$1\$1\$1\$1timeGroup(dateColumn,"5m"[, fillvalue])\$1  |  Se sustituirá por una expresión utilizable en la cláusula AGRUPAR POR. Si se proporciona un valor fillValue nulo o flotante, se rellenarán automáticamente las series vacías en un intervalo de tiempo con ese valor. Por ejemplo, timeGroupcreatedAt, ′1m′, 0.\$1\$1\$1timeGroup(dateColumn,"5m", 0)\$1.  | 
|  \$1timeGroup(dateColumn, ‘5m’, NULL) \$1 \$1SameasabovebutNULLwillbeusedasvalueformissingpoints.\$1\$1\$1timeGroup(dateColumn,"5m", previous)\$1  |  Igual que arriba, pero el valor anterior de esa serie se utilizará como valor de relleno si no se ha visto ningún valor, pero se utilizará NULL.  | 
|  \$1\$1\$1\$1 unixEpochFilter (DateColumn) \$1 \$1 Se reemplazará por un filtro de rango de tiempo con el nombre de columna especificado y las horas se representarán como marca de tiempo de Unix (en milisegundos). Por ejemplo, `DateColumn >= 1500376552001 Y DateColumn <= 1500376552002` \$1\$1\$1\$1 () \$1 unixEpochFrom  |  Se sustituirá por el inicio de la selección de tiempo actualmente activa como una marca de tiempo de Unix. Por ejemplo, 1500376552001.  | 
|  \$1\$1\$1\$1unixEpochTo()\$1  |  Se sustituirá por el final de la selección de tiempo actualmente activa como una marca de tiempo de Unix. Por ejemplo, 1500376552002.  | 

 El complemento también admite la notación mediante llaves (`{}`). Use esta notación cuando se necesiten consultas dentro de los parámetros. 

**nota**  
Utilice un tipo de notación por consulta. Si la consulta necesita llaves, todas las macros de la consulta deben usar llaves. 

```
$__timeGroup{"dateColumn",'5m'}
$__timeGroup{SYS_DATE_UTC("SDATE"),'5m'}
$__timeGroup{FROM_TZ(CAST("SDATE" as timestamp), 'UTC'), '1h'}
```

 El editor de consultas tiene un enlace **SQL generativo** que aparece una vez ejecutada la consulta, en el modo de edición de panel. Al elegir el enlace, se expande y muestra la cadena SQL interpolada sin procesar que se ejecutó. 

### Consultas de tablas
<a name="table-queries"></a>

 Si la opción de consulta **Formatear como** está establecida en **Tabla**, básicamente puede hacer cualquier tipo de consulta SQL. En el panel de tablas se mostrarán automáticamente los resultados de las columnas y filas que devuelva la consulta. Puede controlar el nombre de las columnas del panel Tabla mediante la sintaxis de selección de columnas de SQL `as` normal. 

### Consultas de series temporales
<a name="time-series-queries"></a>

 Si establece **Formatear como** en **Serie temporal**, para su uso en el panel de gráficos, por ejemplo, la consulta debe devolver una columna con el nombre `time` que devuelva una fecha y hora de SQL o cualquier tipo de datos numéricos que representen la época de Unix en segundos. Grafana interpreta las columnas DATE y TIMESTAMP sin zona horaria explícita como UTC. Cualquier columna excepto `time` y `metric` se trata como una columna de valores. Puede devolver una columna con el nombre `metric` que se utilice como nombre de métrica para la columna de valores. 

 En el siguiente ejemplo de código se muestra la columna `metric`. 

```
SELECT
  $__timeGroup("time_date_time", '5m') AS time,
  MIN("value_double"),
  'MIN' as metric
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY $__timeGroup("time_date_time", '5m')
ORDER BY time
```

### Más consultas: usando oracle-fake-data-gen
<a name="more-queries---using-oracle-fake-data-gen"></a>

```
SELECT
  $__timeGroup("createdAt", '5m') AS time,
  MIN("value"),
  'MIN' as metric
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
GROUP BY $__timeGroup("createdAt", '5m')
ORDER BY time
```

 En el siguiente ejemplo de código se muestra una serie temporal Fake Data. 

```
SELECT
  "createdAt",
  "value"
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY "createdAt" ASC
```

```
SELECT
  "createdAt" as time,
  "value" as value
FROM "grafana_metric"
WHERE $__timeFilter("createdAt")
ORDER BY time ASC
```

 En el siguiente ejemplo se muestra un resultado de tabla útil. 

```
select tc.table_name Table_name
,tc.column_id Column_id
,lower(tc.column_name) Column_name
,lower(tc.data_type) Data_type
,nvl(tc.data_precision,tc.data_length) Length
,lower(tc.data_scale) Data_scale
,tc.nullable nullable
FROM all_tab_columns tc
,all_tables t
WHERE tc.table_name = t.table_name
```

### Plantillas
<a name="templating-3"></a>

 En lugar de codificar elementos como el nombre del servidor, la aplicación y el sensor en las consultas de métricas, puede utilizar variables. Las variables se muestran como cuadros de selección desplegables en la parte superior del panel de control. Estas casillas desplegables facilitan el cambio de datos que se muestran en el panel. 

#### Variable de consulta
<a name="query-variable-1"></a>

 Si agrega una variable de plantilla del tipo `Query`, puede escribir una consulta de Oracle que devuelva elementos como nombres de mediciones, nombres de clave o valores de clave que se muestran en un cuadro de selección desplegable. 

 Por ejemplo, puede tener una variable que contenga todos los valores de la columna `hostname` en una tabla si especifica una consulta como esta en la configuración de *consulta* de la variable de plantilla. 

```
SELECT "hostname" FROM host
```

 Una consulta puede devolver varias columnas y Grafana creará automáticamente una lista a partir de ellas. Por ejemplo, la siguiente consulta devolverá una lista con los valores de `hostname` y `hostname2`. 

```
SELECT "host.hostname", "other_host.hostname2" FROM host JOIN other_host ON host.city = other_host.city
```

 Para utilizar macros que dependen del intervalo de tiempo, como `$__timeFilter("time_column")`, en su consulta, el modo de actualización de la variable de plantilla debe estar establecido en *Al cambiar el intervalo de tiempo*. 

```
SELECT "event_name" FROM event_log WHERE $__timeFilter("time_column")
```

 Otra opción es una consulta que puede crear una key/value variable. La consulta debe devolver dos columnas denominadas `__text` y `__value`. El valor de la columna `__text` debe ser único (si no lo es, se utilizará el primer valor). Las opciones de la lista desplegable tendrán un texto y un valor que le permita asignar un nombre descriptivo como texto y un ID como valor. En el siguiente código de ejemplo se muestra una consulta con `hostname` como texto y `id` como valor. 

```
SELECT "hostname" AS __text, "id" AS __value FROM host
```

 También puede crear variables anidadas. Por ejemplo, si tuviera otra variable llamada `region`. puede hacer que la variable de hosts muestre solo los hosts de la región actualmente seleccionada con una consulta como esta (si `region` es una variable con valores múltiples, utilice el operador de comparación `IN` en lugar de `=` para compararla con varios valores). 

```
SELECT "hostname" FROM host WHERE region IN('$region')
```

#### Uso de variables en consultas
<a name="using-variables-in-queries-1"></a>

 Los valores de las variables de plantilla solo se especifican entre comillas cuando la variable de plantilla es `multi-value`. 

 Si se trata de una variable de varios valores, utilice el operador de comparación `IN` en lugar de `=` para que coincida con varios valores. 

 Existen dos sintaxis: 

 Ejemplo de `$<varname>` con una variable de plantilla llamada `hostname`: 

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('$hostname')
ORDER BY "atimestamp" ASC
```

 Ejemplo de `[[varname]]` con una variable de plantilla llamada `hostname`: 

```
SELECT
  "atimestamp" as time,
  "aint" as value
FROM table
WHERE $__timeFilter("atimestamp") AND "hostname" IN('[[hostname]]')
ORDER BY atimestamp ASC
```