重要
现已弃用 Attunity 的 Oracle 变更数据捕获功能。 有关详细信息,请参阅公告。
Oracle CDC 实例是由 Oracle CDC 服务创建的过程,用于处理从单个 Oracle 源数据库捕获的更改。 Oracle CDC 实例从 cdc.xdbcdc_config 表中检索其配置,并在 cdc.xdbcdc_state 表中保持其状态。 这些表是 CDC 数据库的一部分,用于定义 Oracle CDC 实例。 有关 xdbcdc 数据库和表的详细信息,请参阅 CDC 数据库。
下面介绍了 Oracle CDC 实例执行的任务:
处理服务启动验证:启动时,CDC 实例从 xdbcdc_config 表中加载其配置,并执行一系列状态验证,确保 CDC 实例持久化状态一致,并且可以开始处理更改。
准备更改捕获:验证成功通过时,Oracle CDC 实例会扫描当前定义的所有捕获实例,并准备 Oracle LogMiner 查询和更改捕获所需的其他支持结构。 此外,Oracle 实例重新加载上次运行 Oracle CDC 实例时保存的内部捕获状态。
从 Oracle 捕获更改:Oracle CDC 实例通过 Oracle LogMiner 工具收集来自 Oracle 的更改,根据事务提交对其进行排序,然后按照事务时间记录,并将其写入 CDC 数据库中的 SQL Server 更改表。
处理服务关闭:Oracle CDC 实例的生命周期由 Oracle CDC 服务管理。 当请求 Oracle CDC 实例关闭时,它将执行以下任务:
停止从 Oracle 事务日志读取。
停止将已完成的 Oracle 事务写入 CDC 数据库。
等待最多 30 秒(如有必要),直到当前事务完成写入 CDC 数据库。 如果超过 30 秒,则会取消写入并回滚事务(在重新启动 CDC 实例时重试)。
在单独的线程中,将尽可能多的内存缓存记录写入到暂存事务表中长达 30 秒(从最旧事务到最新事务),然后更新 xdbcdc_state 表并提交所有更改。
处理配置更改:Oracle CDC 实例通过 CDC 服务或通过检测 cdc.xdbcdc_config 表中的新版本来通知配置更改。 大多数更改不需要重启 Oracle CDC 实例(例如添加或删除捕获实例)。 但是,某些更改(例如更改 Oracle 连接字符串或访问凭据)需要重启 CDC 实例。
处理恢复:当 Oracle CDC 实例启动时,其内部状态将从 xdbcdc_state 和 xdbcdc_staged_transactions 表中还原。 状态恢复后,CDC 实例会正常运行。