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:
-
Problemas de rede impedem que os dados de trilha sejam entregues ao sistema de destino.
-
Ficar sem espaço em disco em qualquer sistema, evitando que dados de trilha sejam gravados.
-
Collector abends (um evento raro).
-
A extração é encerrada ou encerrada no meio da gravação de registros de uma transação.
-
Um data pump de Extração é encerrado ou encerrado.
-
Há uma falha no sistema de origem, como queda de energia ou falha no sistema.
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:
-
Aborta a transação de destino atual
-
Reposiciona-se ao início da primeira transação de origem na transação de destino abortada.
-
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).
-
Confirma a transação no ponto EOF lógico.
-
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