TRANSACTIONTIMEOUT

Válido para

Replicat

Descripción

Utilice el parámetro TRANSACTIONTIMEOUT para evitar que una transacción de destino de Replicat sin confirmar retenga bloqueos en las tablas de destino y consuma recursos de base de datos innecesariamente. Puede cambiar el valor de este parámetro para que Replicat pueda trabajar dentro de los timeouts de la aplicación existentes y otros requisitos de la base de datos en el destino.

TRANSACTIONTIMEOUT limita la cantidad de tiempo que Replicat mantendrá abierta una transacción de destino si no ha recibido el registro de fin de transacción para la última transacción de origen de esa transacción. Por defecto, Replicat agrupa varias transacciones de origen en una transacción de destino para mejorar el rendimiento, pero no confirmará una transacción de origen parcial y esperará indefinidamente para ese último registro. El parámetro Replicat GROUPTRANSOPS controla el tamaño mínimo de una transacción de destino agrupada. El rango es de 1 a 604800.

Los siguientes eventos pueden durar el tiempo suficiente para disparar TRANSACTIONTIMEOUT:

Cómo funciona TRANSACTIONTIMEOUT

Durante las operaciones normales, Replicat recuerda la posición en la pista del inicio de la primera transacción de origen en la transacción de destino actual, en caso de que la transacción deba terminar de forma anormal y volver a intentarlo. Cuando TRANSACTIONTIMEOUT está activado, Replicat también guarda la posición del primer registro de la transacción de origen actual y utilizará esa posición como fin de archivo lógico (EOF) si se activa TRANSACTIONTIMEOUT.

Cuando se dispara, TRANSACTIONTIMEOUT hace lo siguiente:

  1. Anula la transacción de destino actual

  2. Reposiciona al principio de la primera transacción de origen en la transacción de destino abortada.

  3. Procesa todos los registros de pista hasta la posición lógica de fin de archivo (el principio de la última transacción de origen incompleta).

  4. Confirma la transacción en el punto EOF lógico.

  5. Espera a que aparezcan nuevos datos de pista antes de procesar más registros de pista.

TRANSACTIONTIMEOUT se puede disparar varias veces para la misma transacción de origen, según la naturaleza del problema que está causando que los datos de pista lleguen con la suficiente lentitud para disparar TRANSACTIONTIMEOUT.

Detección de una Condición TRANSACTIONTIMEOUT

Para determinar si Replicat está esperando el resto de una transacción de origen cuando TRANSACTIONTIMEOUT está activado, emita el comando SEND REPLICAT con la opción STATUS. Los siguientes estados indican esta condición:

Performing transaction timeout recovery
Waiting for data at logical EOF after transaction timeout recovery

Valor por defecto

Desactivado

Sintaxis

TRANSACTIONTIMEOUT <n> <units>

<n>

Entero que especifica el intervalo de espera. Los valores válidos son de un segundo a una semana (siete días). Este valor debe ser mayor que el definido con el parámetro EOFDELAY tanto en el Extract principal como en cualquier pump de datos asociado.

<units>

Una de las siguientes opciones: S, SEC, SECS, SECOND, SECONDS, MIN, MINS, MINUTE, MINUTES, HOUR, HOURS, DAY, DAYS.

Ejemplo

TRANSACTIONTIMEOUT 5 S