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

Datastream 从 Oracle 重做日志文件中提取变更数据捕获 (CDC) 事件,以将源数据库中的变更复制到目标位置。Oracle 数据库会将所有事务记录在联机重做日志文件中,并在当前日志文件轮替时归档这些文件。您可以选择 Datastream 访问重做日志文件的方式,并配置日志文件大小和轮替频率,以缩短复制延迟时间。

访问重做日志文件

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

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

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

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

使用 LogMiner CDC 方法时,这种设计会对 Datastream 的潜在延迟时间产生深远影响。由于 LogMiner 仅从归档日志中读取数据,因此如果 Oracle 的重做日志文件频繁切换或保持较小的大小(例如 < 256MB),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;

后续步骤