限制和不受支持的对象和操作
GoldenGate Replicat 存在与 Google Cloud Spanner 相同的限制。应用程序开发人员应了解这些限制,并需要相应地设计其应用程序负载。
下面是当前发行版中 Oracle GoldenGate Replicat for Google Spanner 不支持的操作:
-
预览版本中不支持并行复制。
-
Replicat for Google Cloud Spanner 不支持 DDL 复制。
-
不支持 SQLEXEC。
-
不支持自动方案演化。
-
Replicat for Google Cloud Spanner 不支持冲突检测和解决。
-
对于已强制实施引用完整性约束条件(对于
ON DELETE CASCADE和ON DELETE NO ACTION)的表,Oracle GoldenGate Replicat 不支持PKUPDATE。 -
Google Spanner 的复制不支持
SUSPEND EVENT ACTION,因为 Google Cloud Spanner 数据库会自动中止任何空闲超过 10 秒的读/写事务,并且不支持任何允许增加 10 秒空闲超时设置的配置。如果使用SUSPEND作为事件操作,则事务处理将保持打开状态超过 10 秒,并在RESUME上自动中止。在这种情况下,您可以在
ABORTEDerror(错误代码 10)上使用REPERROR RETRY规则,以便在复制遇到中止的事务处理时重试该事务处理。这也适用于 DMLREPERROR RETRY规则,如果在超过 10 秒后重试 DML,将导致 Spanner 自动中止正在进行的事务处理。 -
如果 Replicat for Spanner 找到任何已强制执行外键的表,则会异常终止并显示以下错误。
Google Spanner does not natively support PKUpdate. The PKUpdate operation is implemented in GoldenGate as DELETE followed by INSERT OR IGNORE operation. If the table contains enforced foreign key, PKUpdate (delete followed by insert) might unintentionally delete the records from the child table. In this case, you can take any of the following actions to continue: 1. If you do not intend to perform PKUpdate on table, use ALLOW_ENFORCED_FK in the Replicat parameter file. 2. Modify the enforced foreign keys to informational foreign keys 3. If the table is not required, exclude the target table from Replicat mapping to continue. -
以下是有关心跳支持的限制的详细信息:
-
Google Spanner 仅支持 Oracle GoldenGate Replicat 而非 Extract,因此 TimesTen 和 Teradata 数据库等 Google Spanner 明确不支持
TARGETONLY/NOTARGETONLY参数。 -
Oracle GoldenGate 仅支持在 Google Spanner 上交付,因此无需任何机制即可使用任何事件或作业调度器填充或更新心跳表。
-
Google Spanner 不支持带有
FREQUENCY、PURGE_FREQUENCY或RETENTION_TIME选项的ADD HEARTBEATTABLE命令。当使用ADD HEARTBEATTABLE命令指定这些选项中的任何一个时,将显示一条信息消息,指示忽略该选项。 -
Google Spanner 不支持心跳作业和频率,因此 Google Spanner 不支持
ALTER HEARTBEATTABLE命令。如果使用,则将无提示地忽略该命令。 -
跨度没有任何内部事件或作业调度器,因此无法自动清除脉动历史记录表。您需要显式截断相应的心跳对象。
-
-
如果某个事务导致了超过 80,000 个突变,则 Spanner 将返回一个错误,Replicat 将异常终止。
同样,Spanner 的事务大小为 100 MiB,如果事务写入的数据超过 100 MiB(包括索引和更改流),则该事务将失败,复制会异常终止。
要处理 Spanner 的 80000 突变/100MB 事务限制,您需要使用 Replicat 参数
MAXTRANSOPS将大型源事务拆分为较小的目标批处理,然后再达到 Spanner 的提交限制。 -
Spanner 强制读写事务从头到尾都能看到一个统一的方案版本。提交 DDL 语句(数据库中的任何表/索引)后,数据库方案版本就会提前。以前版本启动的事务处理将中止并显示错误,指示模式更改。中止是通过设计进行的,并且由于争用或瞬态故障而以与其他可重试中止相同的方式进行处理。要从此错误中恢复,请等待正在进行的 DDL 操作完成,然后重新启动复制。