甲骨文 CDC 客户端
支持的管道类型:
|
您可以使用此源来执行数据库复制。您可以将单独的管道与 JDBC 查询使用者或 JDBC 多表使用者源结合使用,以读取现有数据。然后,使用 Oracle CDC 客户端源启动管道以处理后续更改。
Oracle CDC 客户端根据提交编号(按升序)处理数据。
要读取重做日志,Oracle CDC 客户端需要日志矿工字典。源可以在重做日志或联机目录中使用字典。在重做日志中使用字典时,源会捕获并调整到架构更改。使用重做日志字典时,源还可以生成事件。
源可以为数据库中一个或多个表的 INSERT、UPDATE、SELECT_FOR_UPDATE和 DELETE 操作创建记录。您可以选择要使用的操作。源还在记录标头属性中包含 CDC 和 CRUD 信息,因此生成的记录可以很容易地由启用了 CRUD 的目标进行处理。有关数据收集器更改数据处理的概述以及启用了 CRUD 的目标的列表,请参阅处理已更改的数据。
源可以为事件流生成事件。有关数据流触发器和事件框架的详细信息,请参阅数据流触发器概述。
配置 Oracle CDC 客户端时,可以配置更改数据捕获详细信息,例如要从中读取的架构和表、如何读取初始更改、字典源位置以及要包括的操作。您还可以指定要使用的事务窗口和 LogMiner 会话窗口。
您可以将源配置为在本地缓冲记录或使用数据库缓冲区。在使用本地缓冲区之前,请验证所需的资源是否可用,并指定要对未提交的事务执行的操作。
您可以指定当源遇到不受支持的数据类型时的行为,并且可以将源配置为在从补充日志记录数据接收空值时传递 null 值。当源数据库具有高精度时间戳时,可以将源配置为写入字符串值而不是日期时间值以保持精度。
您还可以指定 JDBC 连接信息和用户凭证。如果架构是在可插入数据库中创建的,请声明可插入数据库名称。您可以配置驱动程序所需的自定义属性。
您可以配置高级连接属性。要使用早于 4.0 的 JDBC 版本,请指定驱动程序类名并定义运行状况检查查询。
当担心性能时,例如在处理非常宽的表时,您可以考虑默认源行为的几种替代方法。您可以使用备用 PEG 解析器或使用多个线程进行解析。或者,可以将源配置为不分析 SQL 查询语句,以便将查询传递给要分析的 SQL 分析器处理器。
日志矿工字典源
日志矿工提供字典来帮助处理重做日志。日志矿工可以将字典存储在多个位置。
- 联机目录 - 在预计表结构不会更改时使用联机目录。
- 重做日志 - 当表结构预计会更改时使用重做日志。从重做日志中读取字典时,Oracle CDC 客户端源确定何时发生架构更改,并刷新用于创建记录的架构。源还可以为它在重做日志中读取的每个 DDL 生成事件。
重要:在重做日志中使用字典时,请确保每次更改时间表结构时,都将最新的字典提取到重做日志中。有关详细信息,请参阅 任务 4。提取日志矿工字典(重做日志)。
请注意,在重做日志中使用字典的延迟可能比在联机目录中使用字典的延迟要高得多。但是,使用联机目录不允许进行架构更改。
有关字典选项和配置日志挖掘机的更多信息,请参阅 Oracle 日志挖掘机文档。
Oracle CDC 客户端先决条件
- 启用日志挖掘机。
- 为数据库或表启用补充日志记录。
- 创建具有所需角色和权限的用户帐户。
- 要在重做日志中使用字典,请提取日志矿工字典。
- 安装甲骨文 JDBC 驱动程序。
任务 1.启用日志挖掘机
日志矿工提供重做日志来汇总数据库活动。源使用这些日志来生成记录。
- 以具有 DBA 权限的用户身份登录到数据库。
- 检查数据库日志记录模式:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>select log_mode from v$database;</code></span></span>
如果该命令返回存档日志,则可以跳到任务 2。
如果该命令返回无存档日志,请继续执行以下步骤:
- 关闭数据库:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>shutdown immediate;</code></span></span>
- 启动并装入数据库:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>startup mount;</code></span></span>
- 配置启用存档并打开数据库:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>alter database archivelog; alter database open;</code></span></span>
任务 2.启用补充日志记录
要从重做日志中检索数据,LogMiner 需要对数据库或表进行补充日志记录。
在表级别为要使用的每个表启用至少主键或“标识键”日志记录。使用标识键日志记录,记录仅包括主键和已更改的字段。
由于 Oracle 已知问题,若要为表启用补充日志记录,必须首先为数据库启用最小补充日志记录。
- 若要验证是否为数据库启用了补充日志记录,请运行以下命令:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;</code></span></span>
如果该命令对所有三列都返回“是”或“隐式”,则使用标识键和完整补充日志记录启用补充日志记录。您可以跳到任务 3。
如果该命令对前两列返回“是”或“隐式”,则使用标识键日志记录启用补充日志记录。如果这是您想要的,则可以跳到任务 3。
- 启用标识密钥或完整补充日志记录。
对于 12c 多租户数据库,最佳做法是为表的容器(而不是整个数据库)启用日志记录。可以先使用以下命令将更改仅应用于容器:您可以启用标识密钥或完整补充日志记录,以从重做日志中检索数据。您不需要同时启用这两项:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>ALTER SESSION SET CONTAINER=<pdb>;</code></span></span>
启用标识键日志记录
您可以为数据库中的单个表或所有表启用标识键日志记录:
- 对于单个表
使用以下命令为数据库启用最小补充日志记录,然后为要使用的每个表启用标识键日志记录:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;</code></span></span>
<span style="color:#333333"><span style="background-color:#eeeeee"><code>ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;</code></span></span>
- 对于所有表
使用以下命令为整个数据库启用标识键日志记录:
<span style="color:#333333"><span style="background-color:#eeeeee"><code>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;</code></span></span>
启用完全补充日志记录
您可以为数据库中的单个表或所有表启用完整的补充日志记录:
-
对于单个表
使用以下命令为数据库启用最小补充日志记录,然后为要使用的每个表启用完全补充日志记录:<span style="color:#333333"><span style="background-color:#eeeeee"><code>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;</code></span></span>
<span style="color:#333333"><span style="background-color:#eeeeee"
- 对于单个表