Hacer que las consultas esperen las actualizaciones de Data Gate sincronización (WAITFORDATA)

Puede posponer la ejecución de consultas en tablas en bases de datos de destino de Data Gate hasta que se hayan aplicado las últimas actualizaciones de sincronización.

Acerca de esta tarea

Las tablas de bases de datos de destino de Data Gate (Db2 o Db2 Warehouse) se sincronizan con las tablas en Db2 for z/OS.

El proceso de sincronización se ejecuta de forma asíncrona y las actualizaciones de sincronización se aplican por lotes. Esto causa un desfase de actualidad de datos (latencia) entre las tablas de la base de datos de origen y las tablas de la base de datos de destino. Es decir, los datos de la base de datos de origen suelen ser más recientes que los datos de la base de datos de destino. La brecha es cero o mínima poco después de que se hayan aplicado las actualizaciones de sincronización a la base de datos de destino. Después de eso, la brecha se ensancha de nuevo.

Si es necesario que las consultas realizadas en la base de datos de destino recuperen datos lo más actualizados posible, el mejor momento para hacerlo es poco después de que se haya aplicado el último lote de actualizaciones. Por esa razón, se ha añadido una función a Data Gate que siempre pospone la ejecución de consultas a un punto en el tiempo.

Para provocar dicho retraso, debe añadir una configuración de registro especial (SET CURRENT QUERY WAITFORDATA) al principio de la consulta SQL que se envía a la base de datos de destino.

Los retardos WAITFORDATA solo son válidos para tablas sincronizadas. Los casos de uso imaginables se manejan de la siguiente manera:

Una consulta se hace referencia a las tablas sincronizadas
La ejecución de la consulta se retarda hasta que todas las tablas referenciadas estén sincronizadas.
Una consulta hace referencia a tablas sincronizadas y no sincronizadas
Las tablas no sincronizadas se ignoran. El proceso de consulta se inicia cuando las tablas sincronizadas se han actualizado en el periodo de retardo WAITFORDATA.
Una consulta solo hace referencia a las tablas no sincronizadas
El retardo WAITFORDATA se ignora y el proceso de consulta se inicia inmediatamente.
Una consulta no hace referencia a ninguna tabla
El retardo de todas formas se aplicará, por lo que el proceso de consulta se intentará o se iniciará después del periodo de retardo.

Un periodo de retardo WAITFORDATA solo se considera para consultas SQL que leen datos de tablas. Otras consultas u operaciones, como las operaciones DDL, no se retardarán.

Nota: La función «wait for data (WAITFORDATA)» no es compatible cuando se utiliza una base de datos de destino remota (consulte este enlace ).

Procedimiento

Al comienzo de una consulta SQL que se envía a la base de datos de destino (por una aplicación, ODBC conexión, etc.), añada la siguiente configuración especial del registro:
SET CURRENT QUERY WAITFORDATA = n.m;

donde n.m es un número decimal que indica segundos. El mínimo es 0.0 (sin retraso). El máximo es 3600.0 (un retraso de una hora)

Ejemplo:
SET CURRENT QUERY WAITFORDATA = 120.0;
SELECT * FROM XYZ WHERE [...];

La primera línea establece el retardo de la ejecución de la consulta en 120 segundos. A continuación se muestra el código SQL de la consulta. La ejecución de la consulta se pospone hasta 120 segundos. Para todas las tablas sincronizadas a las que hace referencia la consulta, Data Gate intenta sincronizar todos los cambios confirmados que se han acumulado en la base de Db2 for z/OS datos de origen en el momento en que se inició la consulta. La consulta se ejecuta cuando se sincronizan todos los cambios confirmados necesarios. Si Data Gate no puede finalizar la sincronización de datos durante ese periodo, la consulta falla con un error de tiempo de espera excedido.

Resultados

Si la tarea de sincronización puede completarse durante el periodo de retraso establecido por el registro SET CURRENT QUERY WAITFORDATA especial, la consulta se ejecuta y el resultado se devuelve como de costumbre.

Si la consulta falla, puede que se dé alguna de las condiciones de error de la Tabla 1 :

Tabla 1. Condiciones de error que causan una anomalía de las consultas WAITFORDATA
Razón Texto del mensaje Causas comunes/solución
SUBSCRIPTION_NOT_RUNNING Estado de sincronización de datos no válido. El estado de sincronización de datos de la instancia de Data Gate no es Iniciado.
Para cambiar el estado de sincronización:
  1. Inicie la interfaz de Data Gate usuario web.
  2. Abra su Data Gate instancia para mostrar el panel de control.
  3. En la pestaña Descripción general del panel de control, puede ver si la sincronización está habilitada.

    Si la sincronización está desactivada, el panel muestra «Sincronización detenida » y el botón de alternancia situado junto a esta etiqueta está en la posición «Desactivado ».

  4. En este caso, haga clic en este botón para cambiar la configuración a Activado. Esto inicia el proceso de sincronización.
INVALID_TABLE_STATE Las tablas se encuentran en un estado no válido. Esta condición afecta a las tablas con estado de Error. No se aplica a las tablas que no están habilitadas para la sincronización, las cuales son ignoradas por el procesamiento WAITFORDATA.

Si se produce este error, vuelva a cargar las tablas afectadas.

TIMEOUT Se ha alcanzado el tiempo de espera de WAITFORDATA. Es posible que las actualizaciones de sincronización pendientes no se apliquen dentro del período WAITFORDATA.

Vuelva a ejecutar la consulta. Si vuelve a fallar, intente un retardo WAITFORDATA más largo.