TRANSACTIONTIMEOUT

Válido Para

Replicat

Descrição

Use o parâmetro TRANSACTIONTIMEOUT para impedir que uma transação de destino Replicat não confirmada mantenha bloqueios nas tabelas de destino e consuma recursos do banco de dados desnecessariamente. Você pode alterar o valor desse parâmetro para que o Replicat possa funcionar dentro dos timeouts de aplicativos existentes e de outros requisitos de banco de dados no destino.

TRANSACTIONTIMEOUT limita o tempo durante o qual o Replicat manterá uma transação de destino aberta se não tiver recebido o registro de fim de transação da última transação de origem nessa transação. Por padrão, o Replicat agrupa várias transações de origem em uma transação de destino para melhorar o desempenho, mas não fará commit de uma transação de origem parcial e aguardará indefinidamente esse último registro. O parâmetro GROUPTRANSOPS do processo Replicat controla o tamanho mínimo de uma transação de destino agrupada. O intervalo é 1-604800.

Os seguintes eventos podem durar o suficiente para acionar TRANSACTIONTIMEOUT:

Como funciona o TRANSACTIONTIMEOUT

Durante as operações normais, o Replicat se lembra da posição na trilha do início da primeira transação de origem na transação de destino atual, caso a transação precise ser interrompida e repetida. Quando TRANSACTIONTIMEOUT estiver ativado, o Replicat também salvará a posição do primeiro registro da transação de origem atual e usará essa posição como o EOF (end-of-file lógico) se TRANSACTIONTIMEOUT for acionado.

Quando acionado, o TRANSACTIONTIMEOUT faz o seguinte:

  1. Aborta a transação de destino atual

  2. Reposiciona-se ao início da primeira transação de origem na transação de destino abortada.

  3. Processa todos os registros de trilha até a posição lógica de fim de arquivo (o início da última transação de origem incompleta).

  4. Confirma a transação no ponto EOF lógico.

  5. Aguarda novos dados de trilha antes de processar mais registros de trilha.

O TRANSACTIONTIMEOUT pode ser acionado várias vezes para a mesma transação de origem, dependendo da natureza do problema que está fazendo com que os dados da trilha cheguem lentamente o suficiente para acionar o TRANSACTIONTIMEOUT.

Detectando uma Condição TRANSACTIONTIMEOUT

Para determinar se o Replicat está aguardando o restante de uma transação de origem quando o TRANSACTIONTIMEOUT está ativado, execute o comando SEND REPLICAT com a opção STATUS. Os seguintes status indicam esta condição:

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

Padrão

Desativado

Sintaxe

TRANSACTIONTIMEOUT <n> <units>

<n>

Um inteiro que especifica o intervalo de espera. Os valores válidos são de um segundo a uma semana (sete dias). Esse valor deve ser maior que o definido com o parâmetro EOFDELAY no Extract principal e em quaisquer bombas de dados associadas.

<units>

Um dos seguintes: S, SEC, SECS, SECOND, SECONDS, MIN, MINS, MINUTE, MINUTES, HOUR, HOURS, DAY, DAYS.

Exemplo

TRANSACTIONTIMEOUT 5 S