关于协调复制
在协调模式下,复制操作如下:
-
读取 Oracle GoldenGate 线索。
-
执行数据筛选、映射和转换。
-
执行数据筛选、映射和转换。
-
通过给定目标数据库(如 ODBC 或本机数据库接口)支持的 SQL 接口将 SQL 应用于目标。
经典模式与协调模式的区别在于,在协调模式下,复制是多线程的。在单个复制实例中,多个线程独立读取线索并并行应用事务处理。每个线程处理为其分配的工作负荷的过滤、映射、转换、SQL 构造和错误处理。协调器线程协调线程之间的事务,以考虑线程之间的依赖性。
源事务处理可以跨 CR 流程进行拆分,以免维护源事务处理总数的完整性。CR 流程处理的事务处理部分按提交顺序完成,但并非所有 CR 流程中的整个事务处理。
协调复制允许对工作量进行用户定义的分区,以便同时应用大量事务。此外,它还通过 THREADRANGE 分区自动协调需要协调的事务(例如 DDL 和主键更新)的执行。此类事务处理作为目标中具有完全同步的一个事务处理执行:它等待,直到先应用所有先前的事务处理,此屏障事务处理之后的所有事务处理都必须等待,直到应用此屏障事务处理。
无论线程数是多少,协调复制仅需要一个参数文件。在 MAP 语句中使用 THREAD 或 THREADRANGE 选项可以指定哪些线程处理这些对象的事务,在创建复制组时可以指定最大线程数。
此图说明了协调复制的体系结构。

如下图所示,协调复制包括以下两个进程:
关于障碍交易
屏障事务在协调的复制配置中自动管理。障碍事务是需要跨线程协调的事务。示例包括 DDL 语句、包含主键更新的事务处理以及某些 EVENTACTIONS 操作。
(可选)您可以通过使用 `COORDINATED keyword in a MAP statement. One use case for this would be force a SQLEXEC` 以类似于串行执行的方式强制将其他事务视为屏障事务。如果结果可能变得不明确,除非目标的状态在所有事务处理中保持一致,则这可能会有所帮助。
注:基于 THREADRANGE 对映射表进行分区时,协调复制不会对非障碍事务执行相关性计算。它依赖于指定的 THREADRANGE 列来计算散列值。它根据散列值对传入数据进行分区,并将与此散列值匹配的所有记录发送到同一线程。
如何处理障碍事务处理
所有线程在屏障事务开始时会收敛并等待。屏障事务将暂停,直到其他线程到达其起始位置。如果任何线程已在处理屏障事务的一部分,则这些线程将执行回退。分组的事务(如由 BATCHSQL 或 ` GROUPTRANSOPS` 参数控制的事务)也会回滚,然后重新应用,直到达到屏障事务的开始。
所有线程都会收敛,并在屏障事务之后的下一个事务开始时等待。两个同步点(在屏障事务处理之前和之后)确保元数据操作和 EVENTACTIONS 操作都按与数据操作相关的正确顺序执行。
一旦线程在屏障事务开始时同步,屏障事务将由线程串行处理,该线程在 MAP 语句中指定的所有线程中具有最低线程 ID,然后恢复跨线程的并行处理。通过在 Replicat 参数文件中指定 USEDEDICATEDCOORDINATIONTHREAD 参数,可以强制通过始终为线程 0 的特定线程处理屏障事务。