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*)

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.