为 Google Spanner 处理复制中的瞬态和永久错误

Google Spanner 有两类错误:临时或永久。虽然可以重试瞬态错误,但不能仅通过重试来解决永久错误。它需要在重试事务处理之前执行更正操作。

了解瞬态和永久性错误的详细信息及其在 Oracle GoldenGate Replicat 中的处理。

在 Google Spanner 的 DML 操作期间处理复制错误

在 Spanner 中,如果 DML 在事务处理内导致错误(无论是瞬态的还是永久的),则该事务处理将变得无效且不可用。然后,同一事务处理既不能部分提交,也不能重试。

需要使用新的事务处理对象重试该事务处理中的所有 DML。只能在无效的事务处理内重试失败的 DML。

对于重复的主键和未找到的行错误,应使用 DML 级别 REPERROR。对于所有其他 Google Cloud Spanner 错误,将使用事务处理级别 REPERROR 处理。

对于来自 Spanner 的所有其他错误,仅支持事务处理级别 REPERROR 处理。Google Cloud Spanner 支持的 REPERROR 操作包括 TRANSDISCARD、TRANSEXCEPTION 和 TRANSABORT。

请参阅《 Parameters and Functions Reference for Oracle GoldenGate 》中的 REPERROR 。

处理瞬态错误

瞬态错误表示在重试时很有可能成功的临时条件。检测到此类错误时,强烈建议您使用 REPERROR 重试事务处理。

以下是用于处理瞬态错误的 REPERROR 策略:

语法:

REPERROR (*status code*, TRANSABORT, MAXRETRIES *n*, DELAYSECS *n*)

处理永久错误

检测到永久性错误时,Oracle GoldenGate Replicat 将在回退事务处理后异常终止并显示错误。必须先修复 Spanner 数据库中的底层问题,然后才能重新启动复制。