使用 Oracle 数据库重做日志文件

在变更数据捕获期间,Datastream 会读取 Oracle 重做日志文件,以监控源数据库中的更改并将其复制到目标实例。每个 Oracle 数据库都有一组在线重做日志文件。数据库中的所有事务记录都记录在文件中。当前重做日志文件被轮替(或被切换)时,归档过程会 将此文件复制到归档存储。同时,数据库会提升另一个文件用作当前文件。

Datastream Oracle 连接器会从归档的 Oracle 重做日志文件中提取变更数据捕获 (CDC) 事件。

访问重做日志文件

Datastream 可以使用 Oracle LogMiner API 或二进制读取器方法访问重做日志文件:

  • Oracle LogMiner:Oracle 数据库中包含的开箱即用实用程序。如果您将 Datastream 配置为使用 Oracle LogMiner API,Datastream 只能与归档的重做日志文件搭配使用,不支持在线重做日志文件。LogMiner API 方法是单线程的,在处理包含大量事务数的源数据库时,延迟时间会更长,吞吐量也会更低。LogMiner 支持大多数数据类型和 Oracle 数据库功能。

  • 二进制读取器预览版):这是一个专用高性能实用程序,适用于在线和归档的 redo 日志文件。二进制读取器可以使用自动存储空间管理 (ASM) 访问日志文件,也可以使用数据库目录对象直接读取文件。二进制读取器是多线程的,并且支持低延迟 CDC。此外,由于重新做日志是在数据库操作之外解析的,因此对源数据库的影响较小。二进制读取器 CDC 方法对某些数据类型或功能的支持有限。如需了解详情,请参阅已知限制

为 Oracle 的重做日志文件设置配置参数

此设计对 Datastream 的潜在延迟时间有着深远的影响。如果 Oracle 的重做日志文件频繁切换或保持较小的大小(例如 < 256 MB),则 Datastream 可以更快地复制更改。

您可以设置配置参数来控制日志文件轮替频率:

  • 大小:在线重做日志文件的大小下限为 4 MB,默认大小取决于您的操作系统。您可以通过创建新的在线日志文件并删除旧日志文件来修改日志文件的大小。

    要查找在线重做日志文件的大小,请运行以下查询:

    SELECT GROUP#, STATUS, BYTES/1024/1024 MB FROM V$LOG
  • 时间ARCHIVE_LAG_TARGET 参数提供主数据库的当前日志可跨越的时长上限(以秒为单位)。

    这不是确切的日志切换时间,因为需要考虑归档日志所需的时间。默认值为 0(无上限),建议采用合理的值 1800(30 分钟)或更短。

    您可使用以下命令在初始化期间或数据库启动期间设置 ARCHIVE_LAG_TARGET 参数:

    • SHOW PARAMETER ARCHIVE_LAG_TARGET; 此命令显示当前日志跨越所需要的秒数。
    • ALTER SYSTEM SET ARCHIVE_LAG_TARGET = number-of-seconds; 使用此命令更改上限。

      例如,如需将上限设置为 10 分钟(600 秒),请输入 ALTER SYSTEM SET ARCHIVE_LAG_TARGET = 600;

后续步骤