Tratando Erros Transitórios e Permanentes no Replicat para o Google Spanner
O Google Spanner tem duas categorias de erros: transitório ou permanente. Embora os erros transitórios possam ser repetidos, os erros permanentes não podem ser resolvidos apenas pela repetição. Requer executar a ação corretiva antes de tentar novamente a transação.
Saiba mais sobre os detalhes de erros transitórios e permanentes e seu tratamento no Oracle GoldenGate Replicat.
Tratando Erros de Replicat durante Operações DML para o Google Spanner
No Spanner, se uma DML resultar em um erro (seja transitório ou permanente) dentro de uma transação, essa transação se tornará inválida e inutilizável. A mesma transação não pode ser confirmada parcialmente nem pode ser repetida.
Todas as DMLs nessa transação precisam ser repetidas usando um novo objeto de transação. Somente o DML com falha sozinho não pode ser repetido em uma transação inválida.
Para a chave primária duplicada e os erros de linha não encontrados, o nível DML REPERROR deve ser usado. Para todos os outros erros do Google Cloud Spanner, o tratamento de nível de transação REPERROR é usado.
Para todos os outros erros do Spanner, somente o tratamento de nível de transação REPERROR é suportado. As ações REPERROR suportadas para o Google Cloud Spanner são TRANSDISCARD, TRANSEXCEPTION, TRANSABORT.
Consulte REPERROR na Referência de Parâmetros e Funções do Oracle GoldenGate.
Tratando Erros Transitórios
Erros transitórios indicam condições temporárias que têm uma alta chance de sucesso na nova tentativa. Ao detectar esses erros, é altamente recomendável que você repita a transação com REPERROR.
Veja a seguir a estratégia REPERROR para tratar erros transitórios:
Sintaxe:
REPERROR (*status code*, TRANSABORT, MAXRETRIES *n*, DELAYSECS *n*)
-
TRANSABORT: Repita toda a transação. -
MAXRETRIES: Resolve em 3-5 tentativas. -
DELAYSECS: Backoff aplicado pelo Replicat.
Lidando com Erros Permanentes
Quando erros permanentes são detectados, o processo Replicat do Oracle GoldenGate é encerrado com um erro após o rollback da transação. Você deve corrigir o problema subjacente no banco de dados do Spanner antes de reiniciar o processo Replicat.