开云体育官方注册网址Debezium连接器对甲骨文

概述

开云体育官方注册网址Debezium甲骨文连接器的捕捉和记录行级的变化发生在Oracle服务器上的数据库,包括表添加连接器运行时。开云体育电动老虎机您可以配置连接器发出更改事件为特定模式和表的子集,或忽视,面具,或截断值在特定列。

Oracle数据库的信息版本兼容这个连接器,看到开云体育电动老虎机开云体育官方注册网址Debezium释放概述

开云体育官方注册网址Debezium摄食更改事件从Oracle或通过使用原生LogMiner数据库包开云体育电动老虎机XStream API。虽然连接器可能使用各种各样的Oracle版本和版本,只有甲骨文EE 12和19个被测试。

甲骨文连接器是如何运作的吗

优化配置和运行Debezium Oracle连接器,它有助于了解连开云体育官方注册网址接器执行快照,流改变事件,决定了卡夫卡主题名称,使用元数据,实现事件缓冲。

快照

通常,重做日志配置Oracle服务器上不保留数据库的完整历史。开云体育电动老虎机因此,Debezium甲骨文连接器开云体育官方注册网址不能从日志中检索数据库的整个历史。开云体育电动老虎机使连接器能够建立一个基线数据库的当前状态,连接器第一次启动时,它执行一个初始开云体育电动老虎机一致的快照的数据库。开云体育电动老虎机

您可以自定义连接器创建快照的方式通过设置的值snapshot.mode连接器配置属性。默认情况下,将连接器的快照模式最初的

默认连接器工作流来创建一个初始快照

当快照模式设置为默认,连接器完成以下任务:创建一个快照

  1. 决定了表被捕获。

  2. 获得一个行共享模式锁在每个捕获的表来防止结构性变化发生在创建快照。开云体育官方注册网址Debezium持有的锁都只有很短的时间内。

  3. 读取当前系统改变号码(SCN)从服务器位置的重做日志。

  4. 捕获所有相关表的结构。

  5. 释放锁在步骤2中获得的。

  6. 扫描所有的相关的数据库表和模式有效在视交叉上核的位置开云体育电动老虎机读取在步骤3 (SELECT * FROM…123年SCN),生成一个事件对于每一行,然后将事件记录写到table-specific卡夫卡的话题。

  7. 记录的成功完成连接器补偿的快照。

快照过程开始后,如果过程中断是由于连接失败,重新平衡,或其他原因,过程连接器重启后重新启动。连接器完成后初始快照,它继续流的位置读取在步骤3中,这样它不会错过任何更新。如果连接器停止任何理由,重启后,简历流从它之前离开的地方。

表1。设置snapshot.mode连接器配置属性
设置 描述

总是

对每一个连接器开始执行快照。快照完成之后,连接器开始流事件记录为后续数据库更改。开云体育电动老虎机

最初的

连接器执行数据库快照中描述开云体育电动老虎机默认工作流来创建一个初始快照。快照完成之后,连接器开始流事件记录为后续数据库更改。开云体育电动老虎机

initial_only

连接器执行数据库快照和停止流事件记录任何改变之前,开云体育电动老虎机不允许任何后续更改事件捕获。

schema_only

连接器捕获所有相关的结构表、执行中描述的所有步骤默认快照工作流,除了它不创造事件代表数据集的连接器的启动(步骤6)。

schema_only_recovery

设置这个选项来恢复一个数据库模式历史话题,丢失或损坏。开云体育电动老虎机在重启之后,连接器运行一个快照,重建这个话题从源表。您还可以将属性设置为定期修剪数据库模式历史主题,经历意想不到的发展。开云体育电动老虎机

警告:不要使用这个模式来执行一个快照如果模式变化提交到数据库后连接器关闭。开云体育电动老虎机

有关更多信息,请参见snapshot.mode表中连接器的配置属性。

特别的快照

默认情况下,一个连接器运行初始快照操作之后才开始第一次。这个初始快照后,在正常情况下,连接器不重复快照过程。未来的任何更改事件的数据连接器捕捉只通过流过程。

然而,在某些情况下获得的数据连接器在初始快照可能变得陈旧,丢失,或不完整的。为重新夺回表数据提供一种机制,Debezium包括一个选项来执行特定的快照。开云体育官方注册网址以下更改数据库中可能导致执行一个特设快照:开云体育电动老虎机

  • 连接器配置修改捕获一组不同的表。

  • 卡夫卡主题删除,必须重建。

  • 数据损坏发生由于配置错误或者其他问题。

你可以重新运行你的快照表之前启动一个所谓的捕获快照特别的快照。特别的快照的使用要求信号表。你发起一个特设快照通过发送一个信号请求Debezium信号表。开云体育官方注册网址

当你启动一个特设现有表的快照,连接器附加内容的主题已经存在的表。如果以前现有主题是移除,Debezium可以自动创建一个主题开云体育官方注册网址自动主题创建启用。

特设快照信号中包含指定表快照。快照可以捕捉数据库的全部内容,或者只捕获数据库中的表的一个子集。开云体育电动老虎机此外,快照可以捕获的一个子集表的内容(s)在数据库中。开云体育电动老虎机

您指定的表来捕获通过发送一个execute-snapshot信息信号表。设置的类型execute-snapshot信号增量,并提供表的名称中包含快照,下表中描述:

表2。一个特别的例子execute-snapshot信号记录
默认的 价值

类型

增量

指定类型的快照,你想要运行。
设置类型是可选的。目前,你只能请求增量快照。

数据收集

N /一个

一个数组,其中包含正则表达式匹配表的完全限定名称快照。
名字的格式是一样的signal.data.collection配置选项。

附加条件

N /一个

一个可选的字符串,它指定一个条件基于表的列(s) (s),捕获的内容表的一个子集(年代)。

代理键

N /一个

一个可选的字符串,指定的列名连接器使用的主键表快照过程中。

触发一个特别的快照

你发起一个特设的快照通过添加一个条目execute-snapshot信号类型的信号表。连接器处理消息之后,它开始快照操作。快照过程读取第一个和最后一个主键值,并使用这些值为每个表的开始和结束点。根据表中的条目的数量,和配置的块大小,Debezium把表分成块,每个块和收益快照,在继承,一次一个。开云体育官方注册网址

目前,execute-snapshot动作类型触发增量快照只有。有关更多信息,请参见增量快照

增量快照

快照管理上提供了很大的灵活性,Debezium包括补充快照机制,称为开云体育官方注册网址增量快照。增量快照依靠Debezium机制开云体育官方注册网址Debezium连接器发送信号开云体育官方注册网址。基于增量快照DDD-3设计文档。

在增量快照,而不是捕捉数据库的完整状态,在一个初始快照,Debezium捕捉每个表的阶段,在一系列的配置块。开云体育官方注册网址开云体育电动老虎机你可以指定表的快照捕获和每个数据块的大小。块大小确定的行数的快照收集在每个提取操作数据库。开云体育电动老虎机默认增量快照块大小为1024行。

作为一个增量快照,Debezium使用水印追踪其进展,保持每个表的记录行,开云体育官方注册网址它捕获。分阶段方法捕获数据提供了以下优势标准初始快照过程:

  • 您可以运行增量快照与流数据获取,而不是推迟直到快照完成流媒体。连接器继续捕获实时事件从快照过程中更改日志,也操作模块。

  • 如果中断增量快照的进步,你可以恢复它而不会丢失任何数据。流程简历后,快照开始时它不禁停了下来,而不是重新夺回表从一开始。

  • 您可以运行一个增量快照随时点播,并根据需要重复这个过程适应数据库更新。开云体育电动老虎机例如,您可以重新运行快照后修改连接器配置向其添加一个表table.include.list财产。

增量快照过程

当您运行一个增量快照,Debezium每个表的主键,然后将表格分为块的基础上开云体育官方注册网址配置块大小。块的块,然后捕获块中的每个表行。对于每一行,它捕获快照发出事件。事件所代表的价值当块的快照开始的行。

快照收益,其他进程的继续访问数据库,可能修改表记录。开云体育电动老虎机反映这种变化,插入,更新,或删除操作是致力于按平常的事务日志。同样,持续Debezium流过程继续检测这些事开云体育官方注册网址件并发出相应的改变事件记录卡夫卡。

Debe开云体育官方注册网址zium如何解决碰撞中记录主键相同的吗

在某些情况下,更新删除收到的事件流过程排放的序列。即流过程可能会发出一个事件,修改一个表行之前快照捕获块包含事件这一行。当最终发出相应的快照行活动,其价值已经取代了。以确保增量快照事件到达的顺序处理正确的逻辑顺序,Debezium采用缓冲方案解决冲突。开云体育官方注册网址只有在快照之间的碰撞事件和事件流解析对卡夫卡Debezium发出一个事件记录。开云体育官方注册网址

快照窗口

协助解决后面到达之间的碰撞事件和事件流,修改相同的表行,Debezium雇佣了一个所谓的开云体育官方注册网址快照窗口。快照windows的划定了间隔期间增量快照捕获一个指定表数据块。在一块的快照窗口打开之前,Debezium遵循其一贯的行为和直接从事务日志发出事件下游目标卡开云体育官方注册网址夫卡的话题。但从特定块快照打开,直到关闭,Debezium执行重复数据删除步骤解决之间的碰撞事件具有相同的主键. .开云体育官方注册网址

对于每个数据收集,Debezium发出两种类型的事件,并存储开云体育官方注册网址记录它们在单个目的地卡夫卡的话题。它捕获快照记录直接从表发出操作。与此同时,随着用户继续更新记录的数据收集,和事务日志更新以反映每一个提交,Debezium发出开云体育官方注册网址更新删除为每个变更操作。

快照窗口打开,Debezium开始处理一块快照,它提供了快照记录到内开云体育官方注册网址存缓冲区。在快照windows,主键的事件缓冲比较传入流的主键事件。如果没有发现匹配,直接发送到卡夫卡流事件记录。如果D开云体育官方注册网址ebezium检测到一个匹配,它丢弃缓冲事件,并将流记录写入目标主题,因为流事件逻辑取代静态快照事件。块的快照窗口关闭后,缓冲区只包含事件相关的事务日志事件存在。开云体育官方注册网址Debezium发出这些剩余事件表的卡夫卡的话题。

连接器为每个快照块重复这个过程。

甲骨文的开云体育官方注册网址Debezium连接器不支持增量快照运行时模式变化。

触发一个增量快照

目前,启动增量快照的唯一方法是发送一个特设快照信号源数据库上的信号表。开云体育电动老虎机

你提交一个信号信号表的SQL插入查询。

后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,请求的快照操作运行。

你提交的查询中包含指定表快照,而且,还指定了快照的操作。目前,快照操作的唯一有效的选项是默认值,增量

中包括指定表快照,提供一个数据收集数组列表的表或数组正则表达式用于匹配表,例如,

{“数据收集”:["。MyFirstTable”、“public.MySecondTable ")}

数据收集数组增量快照信号没有默认值。如果数据收集数组为空,Debezium检测到开云体育官方注册网址不需要行动,不执行一个快照。

如果一个表的名称,你想要包含在一个快照包含一个点()数据库的名称、模式或表,添加表开云体育电动老虎机数据收集数组,你必须摆脱在双引号的每一部分的名字。

例如,包含一个表中存在公共模式和名称My.Table使用以下格式:“公共”。“My.Table”

先决条件
利用源信号通道触发增量快照
  1. 发出一个SQL查询添加临时增量快照请求信号表:

    插入< signalTable >(id、类型、数据)值(“< id >”,“< snapshotType >”{“数据收集”:[",<表>”、“<表>“,”类型”:“< snapshotType >”、“附加条件”:“<附加条件>“}”);

    例如,

    插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)(1)值(“ad-hoc-1”,(2)“execute-snapshot”,(3)”{代码基于schema1中“数据收集”:["。表1”、“schema2.table2”),(4)“类型”:“增量”},(5)“附加条件”:“颜色=蓝色“}”);(6)

    的值id,类型,数据参数对应的命令信号表的字段

    下表描述了参数的例子:

    表3。描述字段的SQL命令发送信号到信号表增量快照
    价值 描述

    1

    myschema.开云体育官方注册网址debezium_signal

    指定完全限定名称的信号在源数据库表。开云体育电动老虎机

    2

    ad-hoc-1

    id参数指定一个任意字符串,指定的id标识符的请求信号。
    使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。相反,在快照,Debezium生成自己的开云体育官方注册网址id字符串作为水印信号。

    3

    execute-snapshot

    类型参数指定的操作信号触发。

    4

    数据收集

    一个必需的组成部分数据领域的一个信号,指定表名数组或正则表达式匹配表名中包含快照。
    数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection配置属性。

    5

    增量

    一个可选的类型组件的数据领域的一个信号,表明指定的快照操作运行。
    目前,唯一有效的选项是默认值,增量
    如果你不指定一个值,连接器运行增量快照。

    6

    附加条件

    一个可选的字符串,它指定一个条件基于表的列(s) (s),捕获的内容表的一个子集。更多的信息附加条件参数,看到临时增量快照附加条件

临时增量快照附加条件

如果你想要一个快照只包括内容表的一个子集,您可以修改请求通过添加一个信号附加条件信号参数的快照。

典型的SQL查询快照需要以下形式:

SELECT * FROM<表>....

通过添加一个附加条件参数,你添加一个在哪里SQL查询条件,如以下示例:

SELECT * FROM<表>在哪里<附加条件>....

下面的例子展示了一个SQL查询发送一个临时增量快照请求信号表的附加条件:

插入< signalTable >(id、类型、数据)值(“< id >”,“< snapshotType >”{“数据收集”:[",<表>”、“<表>“,”类型”:“< snapshotType >”、“附加条件”:“<附加条件>“}”);

例如,假设您有一个产品表,包含以下列:

  • id(主键)

  • 颜色

  • 数量

如果你想要一个增量的快照产品表只包括的数据项颜色=蓝色,您可以使用以下SQL语句触发快照:

插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)值(‘ad-hoc-1’,‘execute-snapshot’,‘{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色"});

附加条件参数也可以通过基于多个列的条件。例如,使用产品从前面的示例表,你可以提交一个查询,触发器增量快照,包括数据的只有那些物品颜色=蓝色量> 10:

插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)值(‘ad-hoc-1’,‘execute-snapshot’,‘{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色和数量> 10 "});

下面的例子,显示了JSON增量快照捕获的事件连接器。

例如:增量快照事件消息
{“前”:零,“后”:{“pk”:“1”,“价值”:“新数据”},“源”:{…“快照”:“增量”(1)},“人事处”:“r”,(2)“ts_ms”:“1620393591654”,“交易”:零}
字段名 描述

1

快照

指定类型的快照操作运行。
目前,唯一有效的选项是默认值,增量
指定一个类型在你提交的SQL查询信号表是可选的。
如果你不指定一个值,连接器运行增量快照。

2

人事处

指定事件类型。
快照事件的值r,标志着一个操作。

程序使用卡夫卡信号通道

你可以发送一条消息配置卡夫卡的话题要求连接器运行一个临时增量快照。

卡夫卡的关键消息的值必须匹配topic.prefix连接器配置选项。

消息是一个JSON对象的值类型数据字段。

信号类型execute-snapshot,数据字段必须有以下字段:

表4。执行快照数据字段
默认的 价值

类型

增量

执行快照的类型。目前Debezium开云体育官方注册网址只支持增量类型。
详细信息,请参阅下一节。

数据收集

N /一个

逗号分隔的正则表达式匹配数组中包含的完全限定名称表快照。
指定名称需要通过使用相同的格式signal.data.collection配置选项。

附加条件

N /一个

一个可选的字符串,指定一个条件是连接器评估指定列的一个子集,包括在一个快照。

的一个例子execute-snapshot卡夫卡的信息:

关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表2"], "type": "INCREMENTAL"}}`
临时增量快照与附加条件

开云体育官方注册网址Debezium使用附加条件字段选择一个表的内容的一个子集。

通常,当Debezium运行一个开云体育官方注册网址快照,它运行一个SQL查询,如:

SELECT * FROM<表>…。

当请求包含一个快照附加条件,附加条件添加到SQL查询,例如:

SELECT * FROM<表>在哪里<附加条件>…。

例如,给定一个产品表的列id(主键),颜色,品牌,如果你想要一个快照只包括的内容颜色=蓝色当你请求快照,您可以添加一个附加条件声明内容过滤:

关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色"}}

您可以使用附加条件声明中通过条件基于多个列。例如,使用相同的产品表在前面的例子,如果你想要一个快照只包括的内容产品颜色=蓝色,品牌= MyBrand你可以发送以下请求:

关键= ' test_connector ' Value = '{“类型”:“execute-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。产品”),“类型”:“增量”、“附加条件”:“颜色=蓝色和品牌= MyBrand "}}

停止一个增量快照

你也可以停止增量快照通过发送一个信号对源数据库表。开云体育电动老虎机你提交一个停止信号表快照通过发送一个SQL插入查询。

后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,停止增量快照操作如果是在进步。

你提交的查询指定快照的操作增量,选择当前运行快照的表被删除。

先决条件
使用一个源信号通道停止增量快照
  1. 发出一个SQL查询停止临时增量快照信号表:

    插入< signalTable >(id、类型、数据)值(“< id >”,“stop-snapshot”、“{“数据收集”:["<表>”、“<表>”,“类型”:“增量”}’);

    例如,

    插入myschema.debezium_s开云体育官方注册网址ignal (id、类型、数据)(1)值(“ad-hoc-1”,(2)“stop-snapshot”,(3)”{代码基于schema1中“数据收集”:["。表1”、“schema2.table2”),(4)“类型”:“增量”}’);(5)

    的值id,类型,数据参数对应的信号命令信号表的字段

    下表描述了参数的例子:

    表5所示。描述字段的SQL命令发送停止信号到信号表增量快照
    价值 描述

    1

    myschema.开云体育官方注册网址debezium_signal

    指定完全限定名称的信号在源数据库表。开云体育电动老虎机

    2

    ad-hoc-1

    id参数指定一个任意字符串,指定的id标识符的请求信号。
    使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。

    3

    stop-snapshot

    指定类型参数指定的操作信号触发。

    4

    数据收集

    一个可选的组成部分数据领域的一个信号,指定表名数组或正则表达式匹配表名删除快照。
    数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection配置属性。如果该组件数据省略字段,那么信号停止整个增量快照的进展。

    5

    增量

    一个必需的组成部分数据领域的一个信号,表明指定的快照操作停止。
    目前,唯一有效的选项增量
    如果你不指定一个类型值时,信号无法停止增量快照。

使用卡夫卡信号通道停止增量快照

你可以发送消息到一个信号卡夫卡信号配置主题停止一个临时增量快照。

卡夫卡的关键消息的值必须匹配topic.prefix连接器配置选项。

消息是一个JSON对象的值类型数据字段。

信号类型stop-snapshot,数据字段必须有以下字段:

表6所示。执行快照数据字段
默认的 价值

类型

增量

执行快照的类型。目前Debezium开云体育官方注册网址只支持增量类型。
详细信息,请参阅下一节。

数据收集

N /一个

一个可选的逗号分隔的正则表达式匹配的完全限定名称中包含的表快照。
指定名称需要通过使用相同的格式signal.data.collection配置选项。

下面的例子显示了一个典型stop-snapshot卡夫卡的信息:

关键= ' test_connector ' Value = '{“类型”:“stop-snapshot”、“数据”:{代码基于schema1中“数据收集”:["。表1”、“代码基于schema1中。表2"], "type": "INCREMENTAL"}}`

主题名称

默认情况下,甲骨文连接器写更改事件插入,更新,删除操作发生在一个表到一个Apache卡夫卡主题特定的表。连接器使用以下约定名称更改事件主题:

topicPrefix.schemaName.tableName

下面的列表提供了定义组件的默认名称:

topicPrefix

这个话题作为指定的前缀topic.prefix连接器配置属性。

schemaName

模式的名称的操作发生。

的表

表的名称的操作发生。

例如,如果实现是服务器名称,库存模式名称,数据库包含表的名字吗开云体育电动老虎机订单,客户,产品Debezi开云体育官方注册网址um Oracle连接器发送事件,卡夫卡的话题后,数据库中的每个表:开云体育电动老虎机

fulfillment.inventory。订单fulfillment.inventory。客户fulfillment.inventory。产品

连接器适用于类似的命名约定将其内部数据库模式的历史主题,开云体育电动老虎机模式改变话题,事务元数据主题

如果默认主题名称不符合您的需求,您可以配置自定义主题名称。配置自定义主题名称,您指定正则表达式在逻辑主题路由SMT。关于使用逻辑主题的更多信息路由SMT定制主题命名,明白了主题的路由

模式改变话题

您可以配置一个Debezium甲骨文连接开云体育官方注册网址器生产模式更改事件描述结构性变化应用于捕获数据库中的表。开云体育电动老虎机连接器写模式更改事件卡夫卡主题命名< serverName >,在那里topicName中指定的名称空间是吗topic.prefix配置属性。

开云体育官方注册网址Debezium发出新的消息这个话题时流数据从一个新表。

连接器的消息发送模式改变主题包含负载,可选地,也包含模式的改变事件消息。模式变化的负载事件消息包括以下要素:

ddl

提供了SQL创建,改变,或下降模式中声明,结果的变化。

开云体育电动老虎机数据库名

语句的数据库的名称。开云体育电动老虎机的价值开云体育电动老虎机数据库名作为关键的消息。

tableChanges

整个表的结构化表示模式后改变。的tableChanges字段包含一个数组,包括表的每一列的条目。因为JSON或Avro的结构化表示了数据格式,消费者可以很容易地读取消息没有首先通过DDL解析器处理它们。

默认情况下,连接器使用ALL_TABLES开云体育电动老虎机数据库视图识别模式中的表名来存储历史话题。在这个视图中,连接器可以访问数据从表可以通过它连接到数据库的用户帐户。开云体育电动老虎机

您可以修改设置,这样模式的历史主题存储表的不同子集。使用下列方法之一来改变的表集主题商店:

当连接器配置为捕获一个表,它存储的历史表的模式变化不仅改变话题,而且在一个内部数据库模式的历史主题。开云体育电动老虎机内部数据库模式的历史主题是开云体育电动老虎机连接器只使用,不用于直接消费应用程序使用。确保应用程序只需要通知关于消费模式变化信息的模式改变话题。

没有分区数据库模式的历史主题。开云体育电动老虎机数据库模式的历史开云体育电动老虎机主题功能正确,必须保持一致的全球秩序连接器发出的事件记录。

确保主题不是分配给分区,设置分区数为主题通过使用下列方法之一:

  • 如果你手动创建数据库模式的历史主题,开云体育电动老虎机指定的分区数1

  • 如果你使用Apache卡夫卡代理自动创建数据库模式的历史主题,创建主题,设置的值开云体育电动老虎机卡夫卡num.partitions配置选项1

模式改变主题消息格式是在酝酿状态和可能变化不另行通知。

开云体育官方注册网址Debezium发出一个新的消息这个话题时流数据从一个新表,或者当表的结构改变。

表结构的变化后,你必须遵循的模式演化过程)。

例子:消息发出Oracle连接器模式改变话题

下面的示例显示了一个典型的模式改变消息以JSON格式。消息包含一个表模式的逻辑表示。

{"模式":{…},“有效载荷”:{“源”:{“版本”:“tripwire。最后”、“连接器”:“甲骨文”、“名称”:“server1”、“ts_ms”: 1588252618953,“快照”:“真正的”,“分贝”:“ORCLPDB1”、“模式”:“DEBEZIUM”、“表”:“客户”、“txId”: null,视交叉上开云体育官方注册网址核”:“1513734”、“commit_scn”:“1513754”、“lcr_position”:空,“rs_id”:“001234.00012345.0124”、“ssn”: 1、“redo_thread”: 1、“user_name”:“用户”},“ts_ms”: 1588252618953,(1)“开云体育电动老虎机数据库名”:“ORCLPDB1”,(2):“schemaName DE开云体育官方注册网址BEZIUM ", / /“ddl”:“创建表\”DEBEZIUM \”。\“客户\“\ n (\ \“ID”数量(9,0)NOT NULL使\ n \ VARCHAR2 (255)“FIRST_NAME \”, \ n \“LAST_NAME VARCHAR2 (255), \ n \ VARCHAR2(255)“邮件\”,\ n主键(\“ID \”)使\ n补充日志数据(所有)列\ n)段创建直接\ n PCTFREE 10 PCTUSED 40 INITRANS MAXTRANS 255 \ n \ n NOCOMPRESS日志存储(初始65536下1048576 MINEXTENTS 1 MAXEXTENTS 1048576 \ n PCTINCREASE 0 FREELISTS 1 FREELIST组1 \ n BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)\ n表空间\“用户\“”,(3)“tableChanges”:((4){“类型”:“创造”,(5)“id”:“\”ORCLPDB1 \”, \开云体育官方注册网址“DEBEZIUM \“\”, \“客户,(6)"表":{(7)“defaultCharsetName”:零,“primaryKeyColumnNames”:(8)“ID”],“列”:[(9){" name ": " ID ",“jdbcType”: 2,“nativeType”:空,“typeName”:“数量”,“typeExpression”:“数量”,“charsetName”:空,“长度”:9,“规模”:0,“位置”:1、“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“FIRST_NAME”,“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR2”、“typeExpression”:“VARCHAR2”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:2,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“LAST_NAME”,“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR2”、“typeExpression”:“VARCHAR2”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:3,“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“电子邮件”、“jdbcType”: 12日“nativeType”:空,“typeName”:“VARCHAR2”、“typeExpression”:“VARCHAR2”、“charsetName”:空,“长度”:255年,“规模”:空,“位置”:4,“可选”:假的,“自动增量”:假的,“生成”:假}],“属性”:[(10){“customAttribute”:“attributeValue”}]}}]}}
表7所示。描述字段的消息发出模式改变话题
字段名 描述

1

ts_ms

可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。

在源对象,ts_ms表示的时间更改到数据库中。开云体育电动老虎机通过比较payload.source的值。ts_ms载荷的值。ts_ms,you can determine the lag between the source database update and Debezium.

2

开云体育电动老虎机数据库名
schemaName

标识包含的数据库和模式的变化。开云体育电动老虎机

3

ddl

该字段包含负责模式变化的DDL。

4

tableChanges

一个或多个数组项包含一个DDL命令生成的模式变化。

5

类型

描述的那种变化。的类型可以设置为以下值之一:

创建

创建表。

改变

表修改。

下降

表删除。

6

id

创建的表的完整标识符,修改或删除。对于表重命名,这个标识符是一个连接的<古>,<新>表名。

7

代表表元数据应用后改变。

8

primaryKeyColumnNames

列表的列组成表的主键。

9

改变表中的每一列的元数据。

10

属性

自定义属性为每个表元数据变化。

在连接器的消息发送模式改变话题,消息键是数据库的名称,包含模式的变化。开云体育电动老虎机在以下的示例中,有效载荷字段包含的开云体育电动老虎机数据库名关键:

{"模式":{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:假的,“场”:“数据库名”}],“可选”:假的,“名字”:“io.debezium.connector.ora开云体育电动老虎机cle.SchemaChangeKey”},“有效载荷”:{“数据库名”:“ORCLPDB1}}开云体育官方注册网址

事务的元数据

开云体育官方注册网址Debezium可以生成事件表示事务边界和丰富数据变化事件消息的元数据。

限制当Debezium接收事务开云体育官方注册网址的元数据

开云体育官方注册网址Debezium寄存器和接收元数据只对交易发生后部署连接器。交易发生之前部署连接器的元数据是不可用的。

开云体育电动老虎机数据库事务是由一个语句块之间的封闭开始结束关键词。开云体育官方注册网址Debezium生成事务边界的事件开始结束分隔符在每个事务。事务边界事件包含以下字段:

状态

开始结束

id

唯一的事务标识符的字符串表示。

ts_ms

一个事务边界事件的时间(开始结束事件)的数据源。如果数据源不提供Debezium事件时间,然后字段代表的时间而不是Deb开云体育官方注册网址ezium处理事件。

event_count(结束事件)

事件的总数emmitted事务。

data_collections(结束事件)

对的数组data_collectionevent_count元素表明事件连接器发出的数量变化,来源于一个数据收集。

下面的示例显示了一个典型的事务边界的信息:

例子:甲骨文连接器事务边界事件
{“状态”:“开始”,“id”:“5.6.641”、“ts_ms”: 1486500577125,“event_count”:空,“data_collections”:零}{“状态”:“结束”,“id”:“5.6.641”、“ts_ms”: 1486500577691,“event_count”: 2,“data_collections”: [{:“data_collection ORCLPDB1.DEBEZIUM。开云体育官方注册网址客户”、“event_count”: 1}, {:“data_collection ORCLPDB1.DEBEZIUM。开云体育官方注册网址订单”、“event_count”: 1}]}

除非通过覆盖topic.transaction选项,连接器排放交易事件< topic.prefix >.transaction的话题。

改变数据事件浓缩

启用事务元数据时,数据信息信封富含是新的吗事务字段。这个领域提供关于每一个事件的信息的形式复合的字段:

id

唯一的事务标识符的字符串表示。

total_order

事件在所有事件的绝对位置生成的事务。

data_collection_order

每个数据收集事件在所有事件的位置,发出的事务。

下面的示例显示了一个典型的交易事件消息:

{“前”:零,“后”:{“pk”:“2”,“aa”:“1”},“源”:{…},“人事处”:“c”、“ts_ms”:“1580390884335”,“交易”:{" id ":“5.6.641”、“total_order”:“1”,“data_collection_order”: " 1 "}}

查询模式

默认De开云体育官方注册网址bezium Oracle连接器与Oracle LogMiner集成。这种集成需要一套专门的步骤包括生成复杂的JDBC SQL查询来摄取的变化记录在事务日志的更改事件。的V $ LOGMNR_CONTENTS视图使用的JDBC SQL查询没有任何指标来提高查询的性能,因此有不同的查询方式,可以用来控制如何生成SQL查询来提高查询的执行。

log.mining.query.filter.mode连接器属性可以配置的JDBC SQL查询是如何产生的影响:

没有一个

(默认)这种模式只创建一个JDBC查询过滤器根据不同的操作类型,例如插入、更新或删除,在数据库级。开云体育电动老虎机过滤数据基于模式时,表,或者用户名包含/排除列表,这样做是在处理循环内的连接器。

这种模式捕获少量时通常是有用的从数据库表不严重饱和的变化。开云体育电动老虎机生成的查询非常简单,主要集中于尽快阅读数据库开销较低。开云体育电动老虎机

这种模式创建一个JDBC查询过滤器不仅在数据库级别上操作类型,而且模式,表,和用户名包含/排除列表。开云体育电动老虎机使用SQL查询的谓词生成条款基于价值观包括/排除列表中指定的配置属性。

时这种模式往往是有用捕捉大量的从数据库表严重饱和的变化。开云体育电动老虎机生成的查询更复杂没有一个模式,重点是降低网络开销和执行尽可能多的在数据库级过滤。开云体育电动老虎机

最后,指定正则表达式的模式和表包含/排除配置属性。使用正则表达式将导致连接器不匹配变化根据这些配置属性,导致变化被错过。

正则表达式

这种模式创建一个JDBC查询过滤器不仅在数据库级别上操作类型,而且模式,表,和用户名包含/排除列表。开云体育电动老虎机然而,不像模式,这种模式生成一个SQL查询使用OracleREGEXP_LIKE操作员使用结合或分离取决于包括或排除值指定。

捕获一个变量时,这种模式通常是有用的表数量可以确定使用少量的正则表达式。生成的查询更复杂的比任何其他模式,和关注减少网络开销和执行尽可能多的在数据库级过滤。开云体育电动老虎机

事件缓冲

甲骨文将所有更改写入重做日志在它们发生的顺序,包括更改回滚后丢弃。因此,从单独的事务并发更改交织在一起。当连接器首先读取流的变化,因为它不能立即确定哪些变化提交或回滚,暂时改变事件存储在一个内部缓冲区。改变承诺后,连接器写缓冲区卡夫卡的更改事件。连接器滴改变事件所丢弃的回滚。

您可以配置连接器使用的缓冲机制,通过设置属性log.mining.buffer.type

使用默认的缓冲类型配置内存。在默认的内存设置,连接器使用JVM进程的堆内存分配和管理缓冲事件记录。如果你使用内存缓冲区设置,确保你分配的内存数量的Java进程可以适应长期和大交易在您的环境中。

Infinispan

Debe开云体育官方注册网址zium Oracle连接器还可以配置为使用Infinispan缓存提供者,支持缓存存储与嵌入模式同时在本地或远程服务器集群。为了使用Infinispan,log.mining.buffer.type必须配置使用吗infinispan_embeddedinfinispan_remote

为了让灵活性Infinispan缓存配置,连接器预期为其提供一系列的缓存配置属性在使用Infinispan缓冲事件数据。看到配置属性log.mining.buffer.infinispan.cache名称空间。这些配置属性的内容取决于连接器是整合与远程Infinispan集群或使用嵌入式引擎。

例如,下面给出了嵌入式事务缓存产权配置看起来像当使用Infinispan在嵌入式模式:

<本地缓存名称= "交易" > <持久性钝化=“false”> <文件存储只读=“false”预加载共享=“false”> = " true " < = "数据路径。/ = "数据" / > <索引路径。/在dex"/>   

深入看配置,缓存配置是持久的。所有缓存都应该配置这种方式避免损失的交易事件连接器重启是否正在进行的事务。此外,缓存保存的位置定义的路径属性,这应该是一个共享位置可访问所有可能的运行时环境。

当提供XML配置一个JSON连接器属性值,必须省略或替换换行符\ n的性格。

另一个例子,下面的代码展示了相同的缓存配置了一个Infinispan集群:

<分布式缓存name = "交易"统计= " true " > <编码媒体类型= "应用程序/ x-protostream " / > <持久性钝化=“false”> <文件存储只读=“false”预加载共享=“false”> = " true " < = "数据路径。/ = "数据" / > <索引路径。/在dex"/>   

就像嵌入式本地缓存从前面的示例配置,这种配置定义也是持久的。所有缓存都应该配置这种方式避免损失的交易事件连接器重启是否正在进行的事务。

然而,有一些差异与注意。第一,缓存是定义为一个分布式缓存,而不是一个本地缓存。其次,定义缓存使用应用程序/ x-protostream编码,这需要所有Debezium缓存。开云体育官方注册网址最后,没有路径属性是必要的文件存储自定义Infinispan集群将自动处理这个问题。

Infinispan缓冲类型被认为是孵化;缓存版本之间的格式可能会改变,可能需要re-snapshot。迁移的笔记将指示是否需要这个。

此外,当删除Debezium甲骨文连接器使用Infinisp开云体育官方注册网址an的缓冲区,保存缓存文件不是从磁盘自动删除。如果同一个缓冲位置将被用于一个新的连接器部署,应该手动删除的文件在部署新的连接器。

Infinispan Hotrod端集成

Debe开云体育官方注册网址zium Oracle连接器利用Hotrod客户机与Infinispan集群通信。任何连接器前缀的属性log.mining.buffer.infinispan.client。将直接传递给Hotrod客户使用infinispan.client。名称空间,允许完全定制客户端如何与集群。

至少有一个需要的配置属性,必须提供在使用这个Infinspan模式:

log.mining.buffer.infinispan.client.hotrod.server_list

指定Infinispan的服务器主机名和端口列表组合,使用<主机名>:<口>格式。

视交叉上核间隙检测

当Debezium开云体育官方注册网址 Oracle连接器配置为使用LogMiner,它收集更改事件从Oracle通过使用一个开始和结束范围是基于系统改变数字(scn)。连接器自动管理这个范围,增加或减少的范围取决于连接器能够流接近实时的变化,或必须处理积压的变化由于体积大或批量事务在数据库中。开云体育电动老虎机

在某些情况下,Oracle数据库提出了视交叉上核的异常高的数量,而不是增加SCN开云体育电动老虎机值以恒定速率。这样一个跳的视交叉上核的价值可能发生因为特定集成与数据库交互的方式,或由于事件如热备份。开云体育电动老虎机

Debe开云体育官方注册网址zium Oracle连接器依赖以下配置属性检测SCN差距,调整开采范围。

log.mining.scn.gap.detection.gap.size.min

指定最小间隙尺寸。

log.mining.scn.gap.detection.time.interval.max.ms

指定的最大时间间隔。

连接器的第一个比较的差异之间的数量更改当前的视交叉上核和最高的SCN当前开采范围。如果当前的视交叉上核值之间的差别和最高的视交叉上核值大于最小间隙大小,那么连接器可能检测到视交叉上核的差距。确认是否存在差距,连接器下比较当前视交叉上核和视交叉上核的时间戳的前面的开采范围。如果时间戳之间的差异小于最大时间间隔,然后确认视交叉上核的存在差距。

SCN差距发生时,Debezium连接器自动使用当前视交开云体育官方注册网址叉上核的终点当前矿业会话的范围。这允许连接器迅速赶上实时事件之间没有矿业小范围返回没有变化,因为SCN值被意外大量增加。当连接器执行前面的步骤在回应一个SCN缺口,它忽略了指定的值log.mining.batch.size.max财产。连接器后完成采矿会话和捕获实时事件,它恢复执行的最大日志挖掘批量大小。

SCN差距检测可用只有大型SCN增量连接器运行时发生和处理实时事件。

低变化频率偏移的管理

Debe开云体育官方注册网址zium Oracle连接器跟踪系统改变数字连接器抵消,因此当重新启动连接器,它就可以开始。这些补偿每个排放变化事件的一部分;然而,当数据库更改的频率很低(每隔几小时或几天),补偿可能会过开云体育电动老虎机时,防止连接器从成功重启如果系统变化不再可用数量事务日志。

为连接器使用non-CDB模式连接到Oracle,您可以启用heartbeat.interval.ms迫使连接器发出心跳事件定期,以便抵消保持同步。

为连接器使用国开行模式连接到Oracle,保持同步更加复杂。你不仅必须设置heartbeat.interval.ms,但也是必要的heartbeat.action.query。指定这两个属性是必需的,因为在国开行模式,连接器在PDB只有专门跟踪变化。需要补充机制触发从内部改变事件可插入数据库。开云体育电动老虎机定期,心跳行动查询导致连接器插入一个新表行,或更新现有的可插入数据库中的行。开云体育电动老虎机开云体育官方注册网址Debezium检测表更改并发出更改事件,确保补偿保持同步,甚至可插入数据库中,过程变化很少。开云体育电动老虎机

连接器使用heartbeat.action.query与表不属于连接器的用户帐户连接器,您必须授予用户权限运行的必要插入更新在这些表的查询。

数据更改事件

每个数据更改事件,Oracle连接器发出键和一个值。键和值的结构取决于表更改事件的产生。Debezium如何构造主题名称的信息,请参阅开云体育官方注册网址主题名称

Debe开云体育官方注册网址zium Oracle连接器确保所有卡夫卡连接模式名有效Avro模式名。这意味着逻辑服务器名称必须以字母开始字符或下划线([a - z、a - z _])和剩余的字符在逻辑服务器名称和模式和表中所有的人物名称必须是字母数字字符或下划线([a - z、a - z 0 - 9, \ _])。连接器自动替换无效字符下划线字符。

意外的命名冲突可能会导致当多个逻辑服务器之间唯一的区别人物名字,模式名称,或表名是无效的字符,这些字符替换为下划线。

开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流。然而,这些事件的结构可能会随时间改变,可消费者处理困难的话题。促进结构可变的处理事件,每个事件在卡夫卡连接是自包含的。每条消息键和值有两个部分:一个模式有效载荷。模式描述了结构的负载,而负载包含实际的数据。

执行的变化SYS系统用户帐户没有被连接器。

更改事件的钥匙

对于每个改变表,更改事件等关键结构字段存在主键的每一列(或唯一键约束)的创建表时事件。

例如,一个客户表中定义库存开云体育电动老虎机数据库模式,可能有以下改变事件的关键:

创建表的客户(id号(9)由违约零身份(1001年开始)不是零主键,first_name VARCHAR2 (255) NOT NULL, last_name VARCHAR2 (255) NOT NULL,邮件VARCHAR2 (255) NOT NULL独特的);

如果该值< topic.prefix >.transaction配置属性设置为server1的JSON表示事件发生的每一个变化客户数据库中的表功能以下主要结开云体育电动老虎机构:

{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“ID”}],“可选”:假的,“名字”:“server1.INVENTORY.CUSTOMERS。关键”},“有效载荷”:{" ID ": 1004}}

模式的关键部分包含一个卡夫卡连接模式,描述了关键部分的内容。在前面的例子中,有效载荷值不是可选的,结构是由模式定义的命名server1.开云体育官方注册网址DEBEZIUM.CUSTOMERS.Key,有一个必需的字段命名id类型的int32。的价值的关键有效载荷场表明,它确实是一个结构(在JSON只是一个对象)和一个单身id领域,其价值1004年

因此,您可以解释这个关键的描述行inventory.customers表(输出连接器server1),其id主键列的值1004年

更改事件值

价值的结构事件消息反映了结构的变化消息键更改事件在消息中,包含一个模式部分和一个有效载荷部分。

负载变化事件的价值

一个信封结构的有效载荷部分更改事件值包含以下字段:

人事处

强制性字段,其中包含一个字符串值描述操作的类型。的人事处在Oracle连接器改变事件的负载值包含下列值之一:c(创建或插入),u(更新),d(删除),或r(阅读,这表明一个快照)。

之前

一个可选的字段,如果存在,描述的状态行之前事件发生。所描述的结构server1.INVENTORY.CUSTOMERS.Value卡夫卡连接模式,server1连接器使用的所有行inventory.customers表。

一个可选的字段,如果存在,包含一行的状态发生改变。描述的结构是相同的server1.INVENTORY.CUSTOMERS.Value卡夫卡是用于连接模式之前字段。

强制性字段包含一个结构,描述了事件源的元数据。对于Oracle连接器,结构包括以下字段:

  • Debe开云体育官方注册网址zium版本。

  • 连接器的名称。

  • 事件是否进行的一个快照。

  • 快照事务id(不包括)。

  • 视交叉上核的变化。

  • 一个时间戳,表示当源数据库中的记录改变(快照,表明快照发生时的时间戳)。开云体育电动老虎机

  • 用户名谁做了更改

    commit_scn字段是可选的,并且描述了SCN的事务提交更改事件参与。这个字段只存在在使用LogMiner连接适配器。

    user_name字段只有当使用LogMiner连接适配器。

ts_ms

一个可选的字段,如果存在,包含时间(基于系统时钟在JVM中运行的卡夫卡连接任务)的连接器处理事件。

模式的更改事件的价值

模式部分事件消息的值包含一个模式,描述了信封的结构载荷和嵌套的字段。

创建事件

下面的例子显示的价值创建事件的价值客户表中描述更改事件的钥匙例子:

{"模式":{“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“ID”},{“类型”:“弦”、“可选”:假的,“场”:“FIRST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“LAST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.DEBEZIUM.CUSTOMERS。开云体育官方注册网址值”、“场”:“之前”},{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“ID”},{“类型”:“弦”、“可选”:假的,“场”:“FIRST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“LAST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.DEBEZIUM.CUSTOMERS。开云体育官方注册网址价值", "field": "after" }, { "type": "struct", "fields": [ { "type": "string", "optional": true, "field": "version" }, { "type": "string", "optional": false, "field": "name" }, { "type": "int64", "optional": true, "field": "ts_ms" }, { "type": "string", "optional": true, "field": "txId" }, { "type": "string", "optional": true, "field": "scn" }, { "type": "string", "optional": true, "field": "commit_scn" }, { "type": "string", "optional": true, "field": "rs_id" }, { "type": "int64", "optional": true, "field": "ssn" }, { "type": "int32", "optional": true, "field": "redo_thread" }, { "type": "string", "optional": true, "field": "user_name" }, { "type": "boolean", "optional": true, "field": "snapshot" } ], "optional": false, "name": "io.debezium.connector.oracle.Source", "field": "source" }, { "type": "string", "optional": false, "field": "op" }, { "type": "int64", "optional": true, "field": "ts_ms" } ], "optional": false, "name": "server1.DEBEZIUM.CUSTOMERS.Envelope" }, "payload": { "before": null, "after": { "ID": 1004, "FIRST_NAME": "Anne", "LAST_NAME": "Kretchmar", "EMAIL": "annek@noanswer.org" }, "source": { "version": "2.3.0.Final", "name": "server1", "ts_ms": 1520085154000, "txId": "6.28.807", "scn": "2122185", "commit_scn": "2122185", "rs_id": "001234.00012345.0124", "ssn": 1, "redo_thread": 1, "user_name": "user", "snapshot": false }, "op": "c", "ts_ms": 1532592105975 } }

在前面的例子中,注意事件定义了以下模式:

  • 信封(server1.开云体育官方注册网址DEBEZIUM.CUSTOMERS.Envelope)。

  • 结构(io.开云体育官方注册网址debezium.connector.oracle.Source,这是特定于Oracle连接器和重用所有事件)。

  • 的table-specific模式之前字段。

的模式的名称之前表单的字段< logicalName >< schemaName ><表>value,因此是完全独立于所有其他表的模式。因此,当你使用Avro转换器,Avro模式为每个逻辑表源有他们自己的进化和历史。

有效载荷这个事件的一部分价值提供了关于事件的信息。它描述了创建一行(op = c),并显示字段值插入到包含值ID,FIRST_NAME,LAST_NAME,电子邮件列的行。

默认情况下,事件的JSON表示要比行描述。更大的规模是由于JSON表示包括消息的模式和有效载荷部分。您可以使用Avro转换器减少连接器大小的消息写入卡夫卡的话题。

更新事件

下面的例子显示了一个更新更改事件的连接器捕获与前面的相同的表创建事件。

{"模式":{…},“有效载荷”:{“前”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“anne@example.com”},“源”:{“版本”:“tripwire。最后”、“名称”:“server1”、“ts_ms”: 1520085811000,“txId”:“6.9.809”、“视交叉上核”:“2125544”、“commit_scn”:“2125544”、“rs_id”:“001234.00012345.0124”、“ssn”: 1、“redo_thread”: 1、“user_name”:“用户”、“快照”:假},“人事处”:“u”、“ts_ms”: 1532592713485}}

有效负载的负载有相同的结构创建(插入)事件,但以下值是不同的:

  • 的值人事处字段是u,表示这一行改变,因为一个更新。

  • 之前字段显示的前状态行与之前出现的值更新开云体育电动老虎机数据库提交。

  • 字段显示的更新状态行,与电子邮件现在值设置为anne@example.com

  • 的结构字段包含相同的字段,但值是不同的,因为连接器捕获事件从不同位置的重做日志。

  • ts_ms字段显示了时间戳Debezium事件处理。开云体育官方注册网址

有效载荷部分揭示了其他一些有用的信息。例如,通过对比之前一行是如何变化的结构,我们可以确定提交的结果。的结构提供了甲骨文的这种变化的记录信息,提供可跟踪性。也让我们了解这个事件发生时相对于其他事件在这个话题和其他话题。它发生之前、之后或一样的一部分提交另一个事件?

当列一行的主要/更新唯一键,行的关键变化的价值。因此,Debezium发出开云体育官方注册网址三个事件后这样的更新:

  • 一个删除事件。

  • 一个墓碑上的事件用旧的关键行。

  • 一个插入行事件提供了新的密钥。

删除事件

下面的例子显示了一个删除事件表,显示在前面创建更新事件的例子。的模式的部分删除事件是相同的模式这些事件的一部分。

{"模式":{…},“有效载荷”:{“前”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“anne@example.com”},“后”:空,“源”:{“版本”:“tripwire。最后”、“名称”:“server1”、“ts_ms”: 1520085153000,“txId”:“6.28.807”、“视交叉上核”:“2122184”、“commit_scn”:“2122184”、“rs_id”:“001234.00012345.0124”、“ssn”: 1、“redo_thread”: 1、“user_name”:“用户”、“快照”:假},“人事处”:“d”、“ts_ms”: 1532592105960}}

有效载荷部分的事件揭示了几个差异的有效载荷相比创建更新事件:

  • 的值人事处字段是d,表示行删除。

  • 之前场前状态显示被删除的行与数据库提交。开云体育电动老虎机

  • 的值字段是,标志着这一行已不复存在。

  • 的结构在存在的领域包括许多的关键创建更新事件,但中的值ts_ms,视交叉上核,txId字段是不同的。

  • ts_ms显示了一个时间戳Debezium处理这个事件。开云体育官方注册网址

删除事件给消费者提供他们需要的信息来处理删除这一行。

甲骨文连接器设计的事件卡夫卡日志压实,允许删除一些旧消息只要至少每个关键是保持最新的消息。这允许卡夫卡回收存储空间同时确保主题包含一个完整的数据集,可用于重新加载密钥的状态。

当一行被删除的删除事件值显示在前面的示例还使用日志压实,因为卡夫卡是能够早些时候删除所有消息,使用相同的密钥。必须设置为消息值指导卡夫卡移除所有消息共享相同的关键。使这一切成为可能,在默认情况下,Debezium甲骨文连接器总是遵循一开云体育官方注册网址个删除事件与一个特殊的墓碑上事件,但具有相同的关键价值。您可以更改默认行为通过设置连接器属性tombstones.on.delete

截断事件

一个截断更改事件信号,表已被截断。消息键在这种情况下,消息值是这样的:

{"模式":{…},“有效载荷”:{“前”:空,“后”:空,“源”:{(1)“版本”:“tripwire。最后”、“连接器”:“甲骨文”、“名称”:“oracle_server”、“ts_ms”: 1638974535000,“快照”:“假”、“分贝”:“ORCLPDB1”、“序列”:空,“模式”:“DEBEZIUM”、“表”:“TEST_TABLE”、“txId”:“02000 a00370300开云体育官方注册网址00”、“视交叉上核”:“13234397”、“commit_scn”:“13271102”、“lcr_position”:空,“rs_id”:“001234.00012345.0124”、“ssn”: 1、“redo_thread”: 1、“user_name”:“用户”},“人事处”:“t”,(2)“ts_ms”: 1638974558961,(3)“事务”:零}}
表8所示。的描述截断事件值字段
字段名 描述

1

强制性字段描述了事件源的元数据。在一个截断事件的价值,场结构是一样的创建,更新,删除事件同样的表,提供了该元数据:

  • 开云体育官方注册网址Debezium版本

  • 连接器类型和名称

  • 开云体育电动老虎机数据库和表包含新行

  • 模式名

  • 如果事件是一个快照(总是的一部分截断事件)

  • ID的事务被执行的操作

  • 视交叉上核的操作

  • 时间戳在数据库中更改时间开云体育电动老虎机

  • 用户名进行更改

2

人事处

强制性的字符串描述操作的类型。的人事处字段值是t,表示这个表被截断。

3

ts_ms

可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。

对象,ts_ms显示的时间更改到数据库中。开云体育电动老虎机通过比较的值payload.source.ts_ms的价值payload.ts_ms,您可以确定源数据库更新和Debezium之间的滞后。开云体育官方注册网址开云体育电动老虎机

因为截断事件代表整个表所做的更改,没有消息键,与多个分区的话题,没有保证消费者获得截断事件(事件和变化创建,更新等)为一个表。例如,当消费者从不同的分区读取事件,可能会收到一个更新它接收后事件的表截断事件相同的表。命令可以保证只有一个主题使用单个分区。

如果你不希望捕获截断事件,使用skipped.operations选择过滤出来。

数据类型的映射

当Debezium开云体育官方注册网址 Oracle连接器检测到的变化的价值表行,它发出一种改变事件代表了变化。每个更改事件记录结构以同样的方式作为原始表,与事件记录包含一个字段为每个列的值。一个表列的数据类型决定了连接器代表改变事件字段的列的值,如表所示在下面几节中。

对于每个表中的列,Debezium源数据类型映射到一个开云体育官方注册网址文字类型在某些情况下,一个语义类型在相应的事件字段。

文字类型

描述所代表的价值就是,使用下列卡夫卡连接模式类型之一:INT8,INT16,INT32,INT64,FLOAT32,FLOAT64,布尔,字符串,字节,数组,地图,结构体

语义类型

描述如何抓住了卡夫卡连接模式意义的领域,通过使用卡夫卡连接模式的名称。

如果默认数据类型转换不符合你的需要,你可以创建一个自定义转换器连接器。

对于某些Oracle大型对象(CLOB、NCLOB和BLOB)和数值数据类型,您可以操作连接器执行类型映射的方式通过改变默认配置属性设置。为更多的信息关于Debezium属性控制这些数据类型映射,明白开云体育官方注册网址了二进制和字符LOB类型数值类型

进一步支持数据类型计划在后续版本。请文件JIRA问题对于任何特定的类型可能失踪。

字符类型

下表描述了连接器地图基本字符类型。

表9所示。为甲骨文基本特征类型映射
Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

CHAR ((M))

字符串

n /一个

NCHAR ((M))

字符串

n /一个

NVARCHAR2 ((M))

字符串

n /一个

VARCHAR ((M))

字符串

n /一个

VARCHAR2 ((M))

字符串

n /一个

二进制和字符LOB类型

支持,CLOB,NCLOB目前正在酝酿的状态,也就是说,确切的语义,配置选项等等可能会改变在未来修订,根据我们收到的反馈。请让我们知道如果你遇到任何问题,使用这些数据类型。

下表描述了连接器地图二进制和字符大对象(LOB)数据类型。

表10。为Oracle二进制和字符LOB类型映射
Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

BFILE

n /一个

这个数据类型不支持

字节

原始字节(默认),一个base64编码的字符串,或base64-url-safe-encoded字符串,或hex-encoded字符串,根据binary.handling.mode连接器配置属性设置。

CLOB

字符串

n /一个

n /一个

这个数据类型不支持。

长期生

n /一个

这个数据类型不支持。

NCLOB

字符串

n /一个

n /一个

这个数据类型不支持。

Oracle仅供列值CLOB,NCLOB,如果他们显式地设置或更改数据类型在一个SQL语句。因此,永不改变的事件包含的值不变CLOB,NCLOB,或列。相反,它们包含占位符定义的连接器属性,unavailable.value.placeholder

如果该值CLOB,NCLOB,或列被更新,放在新值元素相应的更新更改事件。的之前元素包含无效值占位符。

数值类型

下表描述了Debezium Oracle连接器地图数字类型。开云体育官方注册网址

您可以修改连接器地图Oracle的方式小数,数量,数字,真正的通过改变数据类型的值的连接器decimal.handling.mode配置属性。的属性设置为默认值精确的,连接器将这些Oracle数据类型映射到卡夫卡连接org.apache.kafka.connect.data.Decimal逻辑类型,显示在表中。属性设置的值的时候出现字符串连接器使用替代某些Oracle数据类型的映射。有关更多信息,请参见语义类型和笔记列在下表中。

表11所示。为Oracle数值数据类型的映射
Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

BINARY_FLOAT

FLOAT32

n /一个

BINARY_DOUBLE

FLOAT64

n /一个

小数((P, S))

字节/INT8/INT16/INT32/INT64

org.apache.kafka.connect.data.Decimal如果使用字节

处理等价数量(注意,默认为0小数)。

decimal.handling.mode属性设置为,连接器代表小数值作为Java值和模式类型FLOAT64

decimal.handling.mode属性设置为字符串,连接器将十进制值表示为与模式类型的格式化的字符串表示字符串

双精度

结构体

io.开云体育官方注册网址debezium.data.VariableScaleDecimal

与两个字段包含一个结构:规模类型的INT32包含转移的规模和价值价值类型的字节包含任何范围的原始值形式。

浮动((P))

结构体

io.开云体育官方注册网址debezium.data.VariableScaleDecimal

与两个字段包含一个结构:规模类型的INT32包含转移的规模和价值价值类型的字节包含任何范围的原始值形式。

整数,INT

字节

org.apache.kafka.connect.data.Decimal

整数映射在Oracle中号(38岁,0),因此可以容纳值比的吗INT类型可以存储

数量((P [*]))

结构体

io.开云体育官方注册网址debezium.data.VariableScaleDecimal

与两个字段包含一个结构:规模类型的INT32包含转移的规模和价值价值类型的字节包含任何范围的原始值形式。

decimal.handling.mode属性设置为,连接器代表数量值作为Java值和模式类型FLOAT64

decimal.handling.mode属性设置为字符串,连接器代表数量值与模式类型的格式化的字符串表示字符串

数量(P, S < = 0)

INT8/INT16/INT32/INT64

数量列的规模0代表整数数字。消极的规模表明舍入在Oracle中,例如,一个规模2使舍入数百人。

根据精度和等级,卡夫卡的匹配连接整数类型选择:

  • P - S < 3INT8

  • P - S < 5,INT16

  • P - S < 10,INT32

  • P - S < 19日INT64

  • P - S > = 19日字节(org.apache.kafka.connect.data.Decimal)

decimal.handling.mode属性设置为,连接器代表数量值作为Java值和模式类型FLOAT64

decimal.handling.mode属性设置为字符串,连接器代表数量值与模式类型的格式化的字符串表示字符串

数量(P, S > 0)

字节

org.apache.kafka.connect.data.Decimal

数字[(P, S)]

字节/INT8/INT16/INT32/INT64

org.apache.kafka.connect.data.Decimal如果使用字节

处理等价数量(注意,默认为0数字)。

decimal.handling.mode属性设置为,连接器代表数字值作为Java值和模式类型FLOAT64

decimal.handling.mode属性设置为字符串,连接器代表数字值与模式类型的格式化的字符串表示字符串

短整型

字节

org.apache.kafka.connect.data.Decimal

短整型映射在Oracle中号(38岁,0),因此可以容纳值比的吗INT类型可以存储

真正的

结构体

io.开云体育官方注册网址debezium.data.VariableScaleDecimal

与两个字段包含一个结构:规模类型的INT32包含转移的规模和价值价值类型的字节包含任何范围的原始值形式。

decimal.handling.mode属性设置为,连接器代表真正的值作为Java值和模式类型FLOAT64

decimal.handling.mode属性设置为字符串,连接器代表真正的值与模式类型的格式化的字符串表示字符串

正如上面提到的,Oracle允许消极的尺度数量类型。这可能会导致一个问题在转换Avro格式表示的数量小数小数类型包括尺度信息,但是Avro规范只允许积极的值。根据模式注册使用,它可能导致Avro序列化失败。为了避免这个问题,您可以使用NumberToZeroScaleConverter,这将足够高的数字(P - S > = 19)与消极的规模小数类型为零。可以对它进行配置如下:

转换器= zero_scale zero_scale.type = io.debe开云体育官方注册网址zium.connector.oracle.converters.NumberToZeroScaleConverter zero_scale.decimal.mode =精确

默认情况下,转化为数量小数类型(zero_scale.decimal.mode =精确),但出于完整性的考虑剩下的两个支持类型(字符串)支持。

布尔类型

甲骨文不提供本地支持布尔数据类型。然而,常见的做法是使用其他数据类型与某些语义来模拟一个逻辑的概念布尔数据类型。

使你能够将源列转换成布尔数据类型,Debezium提供开云体育官方注册网址NumberOneToBooleanConverter自定义转换器你可以使用下列方法之一:

  • 映射所有数量(1)列一个布尔类型。

  • 枚举列的一个子集,通过使用一个以逗号分隔的正则表达式。
    使用这种类型的转换,您必须设置转换器配置属性的选择器参数,如以下示例所示:

    转换器=布尔boolean.type = io.debezium.co开云体育官方注册网址nnector.oracle.converters.NumberOneToBooleanConverter boolean.selector =。* MYTABLE.FLAG,。* .IS_ARCHIVED

时间类型

除了甲骨文时间间隔,时间戳和时区,与当地时区的时间戳数据类型,连接器的方式转换时态类型取决于的价值time.precision.mode配置属性。

time.precision.mode配置属性设置为自适应(默认),那么连接器决定了文字和语义类型颞类型基于列的数据类型定义,这样的事件完全代表数据库中的值:开云体育电动老虎机

Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

日期

INT64

io.开云体育官方注册网址debezium.time.Timestamp

代表了UNIX纪元以来的毫秒数,和不包括时区信息。

间隔一天[(M)]

FLOAT64

io.开云体育官方注册网址debezium.time.MicroDuration

的数量微秒时间间隔使用365.25/12.0每月平均公式天。

io.开云体育官方注册网址debezium.time.Interval(当interval.handling.mode被设置为字符串)

接下来的区间值的字符串表示的模式P <年> Y <月> M <天> DT <时间> H <分钟> M <秒> S例如,P1Y2M3DT4H5M6.78S

间隔年((M))

FLOAT64

io.开云体育官方注册网址debezium.time.MicroDuration

的数量微秒时间间隔使用365.25/12.0每月平均公式天。

io.开云体育官方注册网址debezium.time.Interval(当interval.handling.mode被设置为字符串)

接下来的区间值的字符串表示的模式P <年> Y <月> M <天> DT <时间> H <分钟> M <秒> S例如,P1Y2M3DT4H5M6.78S

时间戳(0 - 3)

INT64

io.开云体育官方注册网址debezium.time.Timestamp

代表了UNIX纪元以来的毫秒数,和不包括时区信息。

时间戳、时间戳(4 - 6)

INT64

io.开云体育官方注册网址debezium.time.MicroTimestamp

表示UNIX纪元以来的毫秒数,和不包括时区信息。

时间戳(7 - 9)

INT64

io.开云体育官方注册网址debezium.time.NanoTimestamp

表示UNIX纪元以来的纳秒数,和不包括时区信息。

时间戳和时区

字符串

io.开云体育官方注册网址debezium.time.ZonedTimestamp

的字符串表示一个时间戳和时区信息。

与当地时区的时间戳

字符串

io.开云体育官方注册网址debezium.time.ZonedTimestamp

在UTC时间戳字符串表示。

time.precision.mode配置属性设置为连接,那么连接器使用预定义的卡夫卡连接逻辑类型。这可以有用当消费者只知道内置的卡夫卡连接逻辑类型,无法处理可变精度时间值。因为的精度水平,Oracle支持超过级,卡夫卡的逻辑类型连接的支持,如果你设置time.precision.mode连接,精度的损失结果当精确到小数部分的第二数据库列的值大于3:开云体育电动老虎机

Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

日期

INT32

org.apache.kafka.connect.data.Date

代表了UNIX纪元以来的天数。

间隔一天[(M)]

FLOAT64

io.开云体育官方注册网址debezium.time.MicroDuration

的数量微秒时间间隔使用365.25/12.0每月平均公式天。

io.开云体育官方注册网址debezium.time.Interval(当interval.handling.mode被设置为字符串)

接下来的区间值的字符串表示的模式P <年> Y <月> M <天> DT <时间> H <分钟> M <秒> S例如,P1Y2M3DT4H5M6.78S

间隔年((M))

FLOAT64

io.开云体育官方注册网址debezium.time.MicroDuration

的数量微秒时间间隔使用365.25/12.0每月平均公式天。

io.开云体育官方注册网址debezium.time.Interval(当interval.handling.mode被设置为字符串)

接下来的区间值的字符串表示的模式P <年> Y <月> M <天> DT <时间> H <分钟> M <秒> S例如,P1Y2M3DT4H5M6.78S

时间戳(0 - 3)

INT64

org.apache.kafka.connect.data.Timestamp

代表了UNIX纪元以来的毫秒数,和不包括时区信息。

时间戳(4 - 6)

INT64

org.apache.kafka.connect.data.Timestamp

代表了UNIX纪元以来的毫秒数,和不包括时区信息。

时间戳(7 - 9)

INT64

org.apache.kafka.connect.data.Timestamp

代表了UNIX纪元以来的毫秒数,和不包括时区信息。

时间戳和时区

字符串

io.开云体育官方注册网址debezium.time.ZonedTimestamp

的字符串表示一个时间戳和时区信息。

与当地时区的时间戳

字符串

io.开云体育官方注册网址debezium.time.ZonedTimestamp

在UTC时间戳字符串表示。

ROWID类型

下表描述了连接器地图ROWID(行地址)数据类型。

表12。甲骨文ROWID数据类型的映射
Oracle数据类型 文字类型(模式类型) 语义类型(模式名称)和笔记

ROWID

字符串

这个不支持的数据类型在使用Oracle XStream。

UROWID

n /一个

这个数据类型不支持

用户定义的类型

甲骨文使您能够定义自定义数据类型提供灵活性当内置的数据类型不满足你的要求。有一些用户定义类型如对象类型,参考数据类型,varray和嵌套表。在这个时候,你不能使用Debezium Oracle连接器与这些用开云体育官方注册网址户定义的类型。

Oracle-supplied类型

Oracle提供基于sql接口,您可以使用它来定义新类型当内置或ANSI-supported类型是不够的。Oracle提供了几种常用的数据类型等一系列广泛的用途任何,XML,或空间类型。这个时候,你不能使用Debezium Oracle与任何这些数据类开云体育官方注册网址型的连接器。

默认值

如果指定一个默认值为一个列在数据库模式,Oracle连接器将试图传播这个值对应的卡夫卡的模式记录字段。开云体育电动老虎机最常见的数据类型的支持,包括:

  • 字符类型(字符,NCHAR,VARCHAR,VARCHAR2,NVARCHAR,NVARCHAR2)

  • 数字类型(整数,数字等)。

  • 时间类型(日期,时间戳,时间间隔等)。

如果一个时间类型使用一个函数调用等TO_TIMESTAMPTO_DATE代表默认值,连接器将解决默认值通过一个额外的数据库调用评价函数。开云体育电动老虎机例如,如果一个日期列定义的默认值TO_DATE (' 2021-01-02 ', ' YYYY-MM-DD ')列的默认值将UNIX纪元以来的天数的日期或18629年在这种情况下。

如果一个时间类型使用SYSDATE常数来表示缺省值,连接器将解决这个基于是否列被定义为非空。如果该列可以为空,没有默认值将被设置;然而,如果列不可以为空则默认值将得到解决0(日期时间戳(n)数据类型)或1970 - 01 - 01 - t00:00:00z(时间戳和时区与当地时区的时间戳数据类型)。默认值类型将除了如果列是一个数字时间戳和时区与当地时区的时间戳在这种情况下,其发出一个字符串。

建立甲骨文

下面的步骤是必要建立甲骨文与Debezium Oracle连接器使用。开云体育官方注册网址这些步骤假设与容器使用的多租户配置数据库和至少一个可插入数据库。开云体育电动老虎机如果你不打算使用多租户配置,它可能需要调整以下步骤。

信息使用的流浪汉建立甲骨文在虚拟机中,看到的开云体育官方注册网址对Oracle数据库Debezium流浪的盒子开云体育电动老虎机GitHub库。

与Oracle安装类型的兼容性

Oracle数据库可开云体育电动老虎机以作为一个独立的实例或安装使用Oracle真正的应用程序集群(RAC)。连接器D开云体育官方注册网址ebezium Oracle兼容两种类型的安装。

排除在捕获模式

Debezium 开云体育官方注册网址Oracle连接器捕捉表时,它会自动排除表从以下模式:

  • appqossys

  • audsys

  • ctxsys

  • dvsys

  • dbsfwuser

  • dbsnmp

  • qsmadmin_internal

  • lbacsys

  • mdsys

  • ojvmsys

  • olapsys

  • orddata

  • ordsys

  • outln

  • sys

  • 系统

  • wmsys

  • xdb

使连接器能够捕捉变化从一个表,表中必须使用一个模式不是在前面的列表。

表排除在捕获

Debezium 开云体育官方注册网址Oracle连接器捕捉表时,它会自动排除表匹配以下规则:

  • 压缩顾问表匹配的模式CMP[3 | 4][0 - 9] +美元

  • Index-organized表匹配的模式SYS_IOT_OVER_ %

  • 空间表匹配的模式MDRT_ %,MDRS_ %,或MDXT_ %

  • 嵌套表

使连接器能够捕获一个表的名称相匹配的任何先前的规则,你必须重命名表。

准备数据库开云体育电动老虎机

甲骨文LogMiner所需的配置
ORACLE_SID = ORACLCDB dbz_oracle sqlplus nolog连接sys / top_secret SYSDBA改变系统设置db_recovery_file_dest_size = 10 g;改变系统设置db_recovery_file_dest = ' / opt / oracle / oradata / recovery_area范围= spfile;关闭立即启动山archivelog改变数据库;开云体育电动老虎机改变数据库开开云体育电动老虎机放;——现在应该“数据库日志模式:开云体育电动老虎机归档模式”归档日志列表退出;

甲骨文AWS RDS不允许您执行上面的命令也不允许你作为sysdba登录。AWS提供这些替代命令来配置LogMiner。在执行这些命令之前,确保您的Oracle AWS RDS实例启用备份。

确认甲骨文启用备份,执行下面的命令。应该说ARCHIVELOG LOG_MODE。如果没有,你可能需要重新启动RDS Oracle AWS实例。

甲骨文AWS RDS LogMiner所需的配置
从V $ SQL >选择LOG_MODE数据库;开云体育电动老虎机LOG_MODE - - - - - - - - - - - - ARCHIVELOG

一旦将ARCHIVELOG LOG_MODE,执行命令来完成LogMiner配置。第一个命令设置数据库archivelog和第二个补充开云体育电动老虎机日志补充道。

甲骨文AWS RDS LogMiner所需的配置
exec rdsadmin.rdsadmin_util。set_configuration (archivelog保留时间,24);exec rdsadmin.rdsadmin_util.alter_supplemental_logging('添加');

使Debezium捕开云体育官方注册网址获之前改变数据库行,您还必须启用补充日志开云体育电动老虎机记录为整个数据库表或捕获。下面的例子说明了如何配置补充所有列在一个日志inventory.customers表。

ALTER TABLE库存。客户一个DD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

启用所有表列的附加日志增加甲骨文的体积重做日志。为了防止过度增长在日志的大小,有选择地应用前面的配置。

最小的补充必须启用日志记录在数据库级别上,可以配置如下。开云体育电动老虎机

修改数据库添开云体育电动老虎机加补充日志数据;

重做日志大小

根据数据库配置,重做日志的大小和数开云体育电动老虎机量可能不足以达到可接受的性能。设置Debezium Oracle连接器之前开云体育官方注册网址,确保重做日志的能力足以支持数据库。开云体育电动老虎机

重做日志的数据库的容量必须足够存储其数据字典。开云体育电动老虎机一般来说,数据字典的大小随数据库中的表和列的数量。开云体育电动老虎机如果重做日志缺乏足够的能力,数据库和Debezium连接器可能会遇到性能问题。开云体育官方注册网址开云体育电动老虎机

咨询您的数据库管理员,以评估是否数据开云体育电动老虎机库可能需要增加日志容量。

为连接器创建用户

Debezium开云体育官方注册网址 Oracle连接器捕捉变化事件,它必须运行Oracle LogMiner特定权限的用户。下面的例子显示了创建一个Oracle SQL用户帐户的连接器在多租户数据库模型。开云体育电动老虎机

连接器捕获数据库变化,是由自己的Oracle用开云体育电动老虎机户帐户。然而,它并不由捕获变化SYS系统用户帐户。

创建连接器LogMiner用户
sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB logminer_tbs sysdba创建表空间数据文件' / opt / oracle / oradata / ORCLCDB / logminer_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLPDB1 logminer_tbs sysdba创建表空间数据文件' / opt / oracle / oradata ORCLCDB / ORCLPDB1 / logminer_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB sysdba创建用户c # # dbzuser被dbz默认表空间logminer_tbs配额无限logminer_tbs容器=所有;格兰特创建会话c # # dbzuser容器=所有;(1)格兰特容器设置为c # # dbzuser容器=所有;(2)格兰特选择V_ $数据库到c # # 开云体育电动老虎机dbzuser容器=;(3)格兰特闪回表到c # # dbzuser容器=所有;(4)格兰特选择任何表c # # dbzuser容器=所有;(5)格兰特SELECT_CATALOG_ROLE c # # dbzuser容器=所有;(6)格兰特EXECUTE_CATALOG_ROLE c # # dbzuser容器=所有;(7)格兰特选择任何事务c # # dbzuser容器=;(8)格兰特LOGMINING c # # dbzuser容器=所有;(9)格兰特创建表c # # dbzuser容器=所有;(10)格兰特锁定任何表c # # dbzuser容器=所有;(11)格兰特创建序列c # # dbzuser容器=所有;(12)授权执行DBMS_LOGMNR c # # dbzuser容器=所有;(13)授权执行DBMS_LOGMNR_D c # # dbzuser容器=所有;(14)格兰特选择V_ $ c # # dbzuser容器日志=;(15)格兰特选择V_ LOG_HISTORY美元c # # dbzuser容器=所有;(16)格兰特选择V_ LOGMNR_LOGS美元c # # dbzuser容器=所有;(17)格兰特选择V_ LOGMNR_CONTENTS美元c # # dbzuser容器=所有;(18)格兰特选择V_ LOGMNR_PARAMETERS美元c # # dbzuser容器=所有;(19)格兰特选择V_ $ c # # dbzuser容器=所有日志文件;(20)格兰特选择V_ ARCHIVED_LOG美元c # # dbzuser容器=所有;(21)格兰特选择V_ ARCHIVE_DEST_STATUS美元c # # dbzuser容器=所有;(22)格兰特选择V_美元交易到c # # dbzuser容器=所有;(23)格兰特选择V_ MYSTAT美元c # # dbzuser容器=所有;(24)格兰特选择V_ STATNAME美元c # # dbzuser容器=所有;(25)退出;
表13。描述/授予的权限
角色名 描述

1

创建会话

使连接器连接Oracle。

2

设置容器

使连接器之间切换可插入数据库。开云体育电动老虎机这只是Oracle安装容器时需要数据库支持(国开行)启用。开云体育电动老虎机

3

选择美元V_数据库上开云体育电动老虎机

使连接器阅读V 开云体育电动老虎机$数据库表。

4

闪回表

使连接器执行闪回查询,连接器如何执行的初始快照数据。

5

选择任何表

使连接器读任何表。

6

SELECT_CATALOG_ROLE

使连接器能够读取数据字典,由Oracle LogMiner需要会话。

7

EXECUTE_CATALOG_ROLE

使连接器编写数据字典到Oracle重做日志,这是需要跟踪模式变化。

8

选择任何事务

使快照流程执行闪回快照查询任何事务。当闪回表当然,这也应该是理所当然。

9

LOGMINING

这个角色添加了新版本的Oracle作为格兰特完全访问Oracle LogMiner及其包。在旧版本的Oracle没有这个角色,你可以忽略这个格兰特。

10

创建表

使连接器在其默认表空间创建其刷新表。刷新表允许连接器来显式地控制冲洗LGWR内部缓冲区到磁盘。

11

锁定任何表

在模式快照允许连接器锁表。如果通过配置快照锁是显式禁用,格兰特可以安全地忽略。

12

创建序列

使连接器在其默认表空间创建一个序列。

13

执行DBMS_LOGMNR

使连接器运行方法DBMS_LOGMNR包中。这是需要与Oracle LogMiner交互。新版本的Oracle这是获得通过LOGMINING作用但在旧版本,这个必须明确授予。

14

执行DBMS_LOGMNR_D

使连接器运行方法DBMS_LOGMNR_D包中。这是需要与Oracle LogMiner交互。新版本的Oracle这是获得通过LOGMINING作用但在旧版本,这个必须明确授予。

15到25

选择V_…美元。

使连接器能够读这些表。连接器必须能够阅读关于Oracle重做和归档日志的信息,和当前事务的状态,准备Oracle LogMiner会话。没有这些赠款,连接器不能操作。

备用数据库开云体育电动老虎机

Oracle数据库可开云体育电动老虎机以配置一个物理或逻辑备用环境提供失败后恢复生产。这时,Debezium Oracle开云体育官方注册网址连接器不能使用一个物理或逻辑备用数据库事件源的变化。开云体育电动老虎机有一个开放的Jira问题调查这种支持。

故障恢复数据库开云体育电动老虎机

是习惯的逻辑或物理备用存在在Oracle中生产失败。当发生故障时,备用实例晋升为生产,必须开放数据库读/写事务之前Debezium甲骨文连接器可以连接到数据库。开云体育官方注册网址开云体育电动老虎机

对于物理备用,备用的精确复制生产,这意味着SCN值是相同的。当使用一个物理备用,足以重新配置Debezium甲骨文连接器使用的主机名备用数据库是开放的。开云体育官方注册网址开云体育电动老虎机

在一个逻辑备用,备用不是一个确切的生产数据库的副本,所以备用的SCN补偿不同于那些在生产数据库。开云体育电动老虎机如果你使用一个逻辑备用,以帮助确保Debezium不会错过任何改变事件,打开数据库后,配置一个新的连开云体育官方注册网址接器和执行一个新数据库快照。开云体育电动老虎机

部署

部署Debezium O开云体育官方注册网址racle连接器,安装Debezium Oracle连接器存档,配置连接器,并开始通过添加其配置卡夫卡连接连接器。

先决条件
过程
  1. 下载Debezium开云体育官方注册网址甲骨文连接器插件存档

  2. 将文件解压缩到卡夫卡连接环境中。

  3. 下载对Oracle JDBC驱动程序从Maven中央和提取下载的驱动程序文件包含Debezium Oracle连接器JAR文件的目录。开云体育官方注册网址

    如果您使用与Oracle XS开云体育官方注册网址tream Debezium Oracle连接器,获得JDBC驱动程序作为Oracle即时客户端包的一部分。有关更多信息,请参见获得Oracle JDBC驱动程序和XStream API文件
  4. 添加JAR文件的目录卡夫卡连接的plugin.path

  5. 重新启动卡夫卡连接过程去接新的JAR文件。

开云体育官方注册网址Debezium甲骨文连接器配置

通常,您注册一个Debezium甲骨文连接器通过提交开云体育官方注册网址一个JSON请求指定连接器的配置属性。下面的例子显示了JSON请求注册的一个实例Debezium甲骨文连接器与逻辑名开云体育官方注册网址server1在端口1521上:

你可以选择生成事件的一个子集模式和表在数据库中。开云体育电动老虎机可选地,您可以忽略,面具,或包含敏感数据的截断列,超过指定的尺寸,或者你不需要。

例如:Debezi开云体育官方注册网址um甲骨文连接器配置
{" name ": " inventory-connector”,(1)“配置”:{“连接器。class" : "io.debezium.connector.oracle.OracleConnector",(2)“开云体育电动老虎机数据库。主机名”:“< ORACLE_IP_ADDRESS >”,(3)“开云体育电动老虎机数据库。港”:“1521”,(4)“开云体育电动老虎机数据库。user" : "c##dbzuser",(5)“开云体育电动老虎机数据库。密码”:“dbz”,(6)“开云体育电动老虎机数据库。dbname" : "ORCLCDB",(7)”的话题。前缀”:“server1”,(8)”任务。马克斯”:“1”,(9):开云体育电动老虎机“database.pdb.name ORCLPDB1”,(10)“schema.history.internal.kafka.bootstrap.servers”:“卡夫卡:9092”,(11):“schema.history.internal.kafka.topic schema-changes.inventory”(12)}}
1 分配给连接器的名称与卡夫卡连接服务当你注册它。
2 这个甲骨文连接器类的名称。
3 Oracle实例的地址。
4 Oracle实例的端口号。
5 Oracle用户的名称,指定为连接器创建用户
6 Oracle用户的密码,在指定为连接器创建用户
7 数据库的名称来捕获变化。开云体育电动老虎机
8 话题识别和提供了一个名称空间前缀为Oracle数据库服务器的连接器捕捉变化。开云体育电动老虎机
9 的最大数量为这个连接器创建任务。
10 甲骨文的名称可插入数据库连接器捕获变化。开云体育电动老虎机容器中使用数据库(国开行)安装。开云体育电动老虎机
11 卡夫卡经纪人这个连接器使用的列表和恢复DDL语句写入数据库模式的历史主题。开云体育电动老虎机
12 数据库模式的名称历史主题连接器写开云体育电动老虎机道,恢复DDL语句。这个话题是仅供内部使用,不应被消费者使用。

在前面的例子中,开云体育电动老虎机database.hostname开云体育电动老虎机database.port属性用于定义数据库连接主机。开云体育电动老虎机然而,甲骨文在更复杂的部署,或在网络部署使用透明衬底(TNS)名称,您可以使用一个替代方法:指定一个JDBC URL。

下面的JSON的例子显示了相同的配置,在前面的例子中,除了它使用JDBC URL连接到数据库。开云体育电动老虎机

例如:Debezi开云体育官方注册网址um甲骨文连接器配置,使用JDBC URL连接到数据库开云体育电动老虎机
{" name ": " inventory-connector”、“配置”:{“连接器。class" : "io.debezium.connector.oracle.OracleConnector", "tasks.max" : "1", "topic.prefix" : "server1", "database.user" : "c##dbzuser", "database.password" : "dbz", "database.url": "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521)))(CONNECT_DATA=SERVICE_NAME=)(SERVER=DEDICATED)))", "database.dbname" : "ORCLCDB", "database.pdb.name" : "ORCLPDB1", "schema.history.internal.kafka.bootstrap.servers" : "kafka:9092", "schema.history.internal.kafka.topic": "schema-changes.inventory" } }

配置属性的完整列表,您可以设置Debezium Oracle连接器,明白了开云体育官方注册网址甲骨文连接器属性

你可以发送这个配置帖子命令来运行卡夫卡连接服务。服务记录配置并启动一个连接器的任务,执行以下操作:

  • 连接到Oracle数据库。开云体育电动老虎机

  • 读取重做日志。

  • 记录更改事件卡夫卡的话题。

添加连接器配置

开始运行Debezium Oracle开云体育官方注册网址连接器,创建一个连接器配置,配置添加到您的卡夫卡连接集群。

先决条件
过程
  1. 创建一个配置甲骨文的连接器。

  2. 使用卡夫卡REST API连接卡夫卡添加连接器配置连接集群。

结果

连接器启动后,它执行一个一致的快照连接器的Oracle数据库的开云体育电动老虎机配置。连接器然后开始生成数据行级操作的事件和流媒体的改变事件记录卡夫卡的话题。

可插入vs Non-Pluggable数据库开云体育电动老虎机

Oracle数开云体育电动老虎机据库部署支持以下类型:

容器数据库(国开行)开云体育电动老虎机

一个开云体育电动老虎机数据库可以包含多个可插入数据库(pdb分子)。开云体育电动老虎机数据库客户端连接到每个PDB就好像它是一个标准,non-CDB数据库。

非容器数据库(non-CDB开云体育电动老虎机)

一个标准的Oracle数据库,不支持开云体育电动老虎机可插入数据库的创建。

例证:国开行Deb开云体育官方注册网址ezium连接器配置部署
{"配置":{“连接器。class" : "io.debezium.connector.oracle.OracleConnector", "tasks.max" : "1", "topic.prefix" : "server1", "database.hostname" : "", "database.port" : "1521", "database.user" : "c##dbzuser", "database.password" : "dbz", "database.dbname" : "ORCLCDB", "database.pdb.name" : "ORCLPDB1", "schema.history.internal.kafka.bootstrap.servers" : "kafka:9092", "schema.history.internal.kafka.topic": "schema-changes.inventory" } }

当您配置一个Debezium甲骨文连接器使开云体育官方注册网址用Oracle的国开行,您必须指定属性的值开云体育电动老虎机database.pdb.namePDB的名字,你想要的连接器来捕获变化。对于non-CDB安装,做指定开云体育电动老虎机database.pdb.name财产。

例子:Debezi开云体育官方注册网址um甲骨文连接器配置non-CDB部署
{"配置":{“连接器。class" : "io.debezium.connector.oracle.OracleConnector", "tasks.max" : "1", "topic.prefix" : "server1", "database.hostname" : "", "database.port" : "1521", "database.user" : "c##dbzuser", "database.password" : "dbz", "database.dbname" : "ORCLCDB", "schema.history.internal.kafka.bootstrap.servers" : "kafka:9092", "schema.history.internal.kafka.topic": "schema-changes.inventory" } }

连接器属性

Debe开云体育官方注册网址zium Oracle连接器有许多配置属性,您可以使用它们来实现正确的连接器为您的应用程序的行为。许多属性的默认值。属性信息的组织结构如下:

需要Debeziu开云体育官方注册网址m甲骨文连接器配置属性

以下配置属性要求除非一个默认值是可用的。

财产

默认的

描述

没有默认的

独特的连接器的名称。再次尝试注册名称相同的就会失败。(此属性所要求的所有卡夫卡连接连接器)。

没有默认的

连接器的Java类的名称。总是使用的值io.开云体育官方注册网址debezium.connector.oracle.OracleConnector甲骨文的连接器。

没有默认的

列举了一个以逗号分隔的符号名称自定义转换器连接器可以使用实例。
例如,布尔
这个属性是必需的,使连接器使用一个自定义转换器。

对于每一个转换配置连接器,您必须添加一个.type属性,该属性指定了fully-qualifed实现converter接口的类的名称。的.type财产使用以下格式:

< converterSymbolicName >.type

例如,

布尔。类型:io.debezium.connector.oracle.converters.NumberOneToBooleanConverter

如果你想进一步控制配置转换器的行为,您可以添加一个或多个配置参数值传递给转换器。把任何额外的配置参数和一个转换器,前缀符号名称的参数名称的转换器。

例如,定义一个选择器参数指定列的子集布尔转炉流程,添加以下属性:

布尔。选择器:。*MYTABLE.FLAG,.*.IS_ARCHIVED

1

的最大数量为这个连接器创建任务。甲骨文连接器总是使用一个单一的任务,因此不使用这个值,所以默认总是可以接受的。

没有默认的

Oracle数据库服务器的IP地址或主机名。开云体育电动老虎机

没有默认的

整数Oracle数据库服务器的端口号。开云体育电动老虎机

没有默认的

Oracle用户帐户的名称,连接器使用连接Oracle数据库服务器。开云体育电动老虎机

没有默认的

连接时使用的密码到Oracle数据库服务器。开云体育电动老虎机

没有默认的

数据库连接的名称。开云体育电动老虎机在容器的数据库环境中,指定名称开云体育电动老虎机的根容器数据库(国开行),不包括可插入数据库的名称(PDB)。

没有默认的

指定的原始数据库的JDBC URL。开云体育电动老虎机使用这个属性来提供灵活性在定义数据库连接。开云体育电动老虎机有效值包括原始TNS名称和RAC连接字符串。

没有默认的

Oracle可插入数据库连接的名称。开云体育电动老虎机使用这个属性数据库与容器(国开行)安装。开云体育电动老虎机

没有默认的

主题为Oracle数据库服务器,它提供了一个名称空间前缀的连接器捕捉变化。开云体育电动老虎机你设置的值是所有卡夫卡主题名称作为前缀连接器发出。指定一个主题前缀是独特的在所有连接器Debezium环境中。开云体育官方注册网址以下字符是有效的:字母数字字符,连字符,点,和下划线。

不改变这个属性的值。如果你改变名称值,重启之后,而不是继续发出事件最初的话题,连接器发出后续事件主题的名字是基于新值。连接器也无法恢复其数据库模式的历史主题。开云体育电动老虎机

logminer

连接器使用的适配器实现流数据库更改。开云体育电动老虎机你可以设置以下值:logminer(默认)::Oracle LogMiner连接器使用本机API。xstream::连接器使用Oracle xstream API。

最初的

指定连接器使用的模式,采取了表的快照。你可以设置以下值:

总是

快照包含捕获的结构和数据表。指定这个值来填充主题的完整表示的数据捕获的表在每个连接器的开始。

最初的

快照包含捕获的结构和数据表。指定这个值来填充主题的完整表示捕获的数据表。如果快照成功完成,在下一次连接器开始快照不是再次执行。

initial_only

快照包含捕获的结构和数据表。连接器执行初始快照,然后停止,不处理任何后续变化。

schema_only

快照只包含了表的结构。指定这个值如果你想连接器只捕获数据快照后发生的变化。

schema_only_recovery

这个恢复设置连接器已经捕捉变化。当你重新启动连接器,该设置使复苏的损坏或丢失数据库模式的历史主题。开云体育电动老虎机你可能把它定期“清理”数据库模式历史话题,意外增长。开云体育电动老虎机开云体育电动老虎机数据库模式历史主题需要无限的保留。注意这种模式只是安全使用时保证没有模式变化后发生的时间点连接器被关闭之前,时间点快照。

快照完成后,连接器继续从数据库读取改变事件的重做日志时除外开云体育电动老虎机snapshot.mode被配置为initial_only

有关更多信息,请参见snapshot.mode选项

共享

控制是否和连接器多久持有表锁定。表锁防止某些类型的变化表操作发生在连接器执行一个快照。你可以设置以下值:

共享

允许并发访问表,但阻止任何会话获得独家表锁定。连接器获得行共享锁而它捕获表模式。

没有一个

防止连接器收购任何表锁在快照。使用此设置只有在没有模式变化可能发生在创建快照。

所有表中指定的连接器table.include.list财产。

一个可选,以逗号分隔的正则表达式匹配的完全限定名称(<开云体育电动老虎机数据库名>。< schemaName ><表>)表包括的一个快照。

在多租户数据库容器(国开行)环境中,正则表达式必须包括开云体育电动老虎机可插入数据库(PDB开云体育电动老虎机)的名字使用格式< pdbName >< schemaName ><表>

匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。
在环境使用LogMiner实现中,您必须使用POSIX正则表达式。

快照可以只包括表命名的连接器table.include.list财产。

这个属性生效只有连接器snapshot.mode除了属性设置为一个值从来没有
这个属性不会影响增量快照的行为。

没有默认的

指定的表行包括一个快照。使用属性如果你想要一个快照包含只有一个子集的一个表中的记录。这个属性只影响快照。它不适用于事件连接器读取的日志。

属性包含一个以逗号分隔的完全限定表名的形式< schemaName >。<表>。例如,

“snapshot.select.statement。覆盖”:“inventory.products customers.orders”

对于每个表列表中,添加一个进一步配置属性指定了选择语句的连接器运行表时需要一个快照。指定的选择声明确定的子集表行中包含快照。使用以下格式指定的名字选择声明属性:

snapshot.select.statement.overrides。< schemaName ><表>

例如,snapshot.select.statement.overrides.customers.orders

例子:

从一个customers.orders表,包括软删除列,delete_flag添加以下属性如果你想要一个快照只包括那些不是soft-deleted:记录

“snapshot.select.statement。覆盖”:“客户。订单", "snapshot.select.statement.overrides.customer.orders": "SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC"

在生成的快照,连接器只包含的记录delete_flag = 0

没有默认的

可选,以逗号分隔的正则表达式匹配的模式的名称想要捕捉变化。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。不包括在任何模式名称schema.include.list排除在其变化捕获。默认情况下,所有非系统的捕获模式有其变化。

匹配一个模式的名字,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的模式名称;它不可能出现在一个模式匹配的子字符串的名字。
如果包含该属性的配置,也不设置schema.exclude.list财产。

布尔值,用于指定连接器是否应该解析和发布元数据表和列评论对象。启用此选项将内存使用情况的影响。逻辑模式对象的数量和大小是主要影响有多少内存消耗的Debezium连接器,并将潜在的巨大的字符串数据添加到他们每个人可能相当昂贵。开云体育官方注册网址

没有默认的

可选,以逗号分隔的正则表达式匹配的模式的名称希望捕获的变化。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。
不包括在任何模式的名称schema.exclude.list有它改变了,除了系统模式。

匹配一个模式的名字,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的模式名称;它不可能出现在一个模式匹配的子字符串的名字。
如果包含该属性的配置,不设置'schema.include。的财产清单。

没有默认的

一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表被捕获。如果你使用LogMiner实现,只使用POSIX正则表达式与这个属性。设置此属性时,连接器捕捉变化只从指定的表。每个表标识符使用以下格式:

< schema_name >。< table_name >

默认情况下,连接器监控每一个非系统的表在每个捕获数据库。开云体育电动老虎机

匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。
如果包含该属性的配置,也不设置table.exclude.list财产。

没有默认的

一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表被排除在监视。如果你使用LogMiner实现,只使用POSIX正则表达式与这个属性。连接器捕捉更改事件从任何表,并不排除列表中指定的。为每个表指定标识符使用以下格式:

< schemaName >。<表>

匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。
如果包含该属性的配置,也不设置table.include.list财产。

没有默认的

一个可选,以逗号分隔的正则表达式匹配的完全限定名称列想要包含在改变事件消息的值。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。完全限定名称列使用以下格式:

< Schema_name >, < table_name >。< column_name >

主键列总是包含在一个事件的关键,即使你不使用这个属性来明确地包含了它的价值。

匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个名称字符串列的子字符串不匹配可能出现在一个列名。
如果包含该属性的配置,也不设置column.exclude.list财产。

没有默认的

可选,以逗号分隔的正则表达式匹配的完全限定名称列要从改变排除事件消息值。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。完全限定列名使用以下格式:

< schema_name >, < table_name >。< column_name >

主键列总是包含在一个事件的关键,即使你使用这个属性来明确排除它的价值。

匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个名称字符串列的子字符串不匹配可能出现在一个列名。
如果包含该属性的配置,不设置column.include.list财产。

指定是否跳过发布消息时没有变化包括列。这将基本上过滤消息如果没有改变列包括按column.include.listcolumn.exclude.list属性。

n /一个

一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。完全限定名称列的形式< schemaName ><表>< columnName >
匹配的名称列Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;表达式不匹配的子字符串可能出现在一个列名。
在生成的更改事件记录,指定列的值替换为假名。

一个假名由散列值指定应用的结果hashAlgorithm。基于所使用的哈希函数,引用完整性维护,当列值替换为假名。支持哈希函数的描述MessageDigest节Java加密体系结构标准算法名称的文档。

在接下来的例子中,CzQMA0cB5K是一个随机选择的盐。

column.mask.hash.sha with.salt——256.。CzQMA0cB5K = inventory.orders。customerName, inventory.shipment.customerName

如果有必要,笔名是自动缩短列的长度。连接器配置可以包括多个属性,指定不同的哈希算法和盐。

根据hashAlgorithm使用,选中,和实际数据集,生成的数据集可能不是完全掩盖了。

哈希策略版本2应该用于确保富达如果被散列的值是在不同的地方或系统。

字节

指定二进制(应该在改变)列事件,包括:字节将二进制数据表示为字节数组(默认),base64将二进制数据表示为base64编码的字符串,base64-url-safe将二进制数据表示为base64-url-safe-encoded字符串,十六进制将二进制数据表示为hex-encoded (base16)字符串

没有一个

指定应该如何调整的兼容模式名消息转换器使用的连接器。可能的设置:

  • 没有一个不应用任何调整。

  • avro替换字符,不能用于强调Avro类型名称。

  • avro_unicode替换下划线或字符,不能用于像_uxxxx Avro与相应的unicode类型名称。注意:_是一个转义序列类似于Java反斜杠

没有一个

指定字段名称应该如何调整的兼容性与消息转换器使用的连接器。可能的设置:

  • 没有一个不应用任何调整。

  • avro替换字符,不能用于强调Avro类型名称。

  • avro_unicode替换下划线或字符,不能用于像_uxxxx Avro与相应的unicode类型名称。注意:_是一个转义序列类似于Java反斜杠

看到Avro命名为更多的细节。

精确的

指定连接器应如何处理浮点值数量,小数数字列。你可以设置以下选项之一:

精确的(默认)

正是通过使用代表值java.math.BigDecimal价值观在改变事件在一个二进制形式表示。

代表值通过使用值。使用值更容易,但是会导致失去精度。

字符串

编码值格式化字符串。使用字符串选项更容易使用,但导致语义信息的丧失真正的类型。有关更多信息,请参见数值类型

数字

指定连接器应如何处理的值时间间隔列:

数字代表间隔使用近似数微秒。

字符串代表间隔完全通过使用字符串模式表示P <年> Y <月> M <天> DT <时间> H <分钟> M <秒> S。例如:P1Y2M3DT4H5M6.78S

失败

指定连接器应该如何应对异常事件的处理过程中。你可以设置以下选项之一:

失败

传播异常(指示问题事件的抵消),导致连接器停止。

警告

导致有问题的事件被忽略。然后记录的偏移问题事件。

跳过

导致有问题的事件被忽略。

2048年

一个正整数的值指定的最大大小事件的每一批在每个迭代过程的连接器。

8192年

正整数的值指定了阻塞队列的最大记录数所能容纳的量。当Debe开云体育官方注册网址zium从数据库读取事件流,它将事件阻塞队列之前写卡夫卡。开云体育电动老虎机阅读改变事件的阻塞队列可以提供反压力的情况下从数据库连接器吸入消息的速度比它可以编写卡夫卡,或者当卡夫卡变得不可用。开云体育电动老虎机事件队列连接器时忽视举行定期记录偏移量。总是设置的值max.queue.size更大的价值max.batch.size

0(禁用)

一个长整型值,指定字节的阻塞队列的最大体积。默认情况下,体积限制不指定阻塞队列。指定的字节数,队列可以消费,将此属性设置为一个积极的长期价值。
如果max.queue.size也是集,写作时队列阻塞队列的大小达到通过属性指定的限制。例如,如果您设置max.queue.size = 1000,max.queue.size.in.bytes = 5000、写作到队列阻塞队列包含1000条记录后,或记录在队列的体积后达到5000字节。

500年(0.5秒)

正整数的值指定的毫秒数连接器应该在每个迭代中等待新的更改事件出现。

真正的

控制是否删除事件是紧随其后的是一个墓碑上的事件。下面的值:

真正的

对于每一个删除操作,连接器发出删除事件和随后的墓碑事件。

对于每一个删除操作,连接器只发出删除事件。

源记录被删除后,墓碑事件(默认行为)使卡夫卡完全删除所有事件共享的关键主题中删除行日志压实启用。

没有默认的

的表达式列表指定连接器使用的列表单自定义消息键改变事件记录,发布卡夫卡指定表的主题。

默认情况下,Debezi开云体育官方注册网址um使用一个表的主键列,它发出的消息键记录。的默认值,或指定一个关键对于缺乏一个主键的表,您可以配置自定义消息键基于一个或多个列。
建立一个自定义消息键表,列出表格,紧随其后的是列使用消息键。每个列表项采用以下格式:

< fullyQualifiedTableName >:< keyColumn >,< keyColumn >

基地主要在多个列的表名称,插入逗号之间的列名。
每一个完全限定表名是一个正则表达式在以下格式:

< schemaName ><表>

属性可以包含多个表的条目。使用分号来单独的表条目列表中。
下面的示例设置消息键的表inventory.customerspurchase.orders:

inventory.customers: pk1 pk2; (. *) .purchaseorders: pk3 pk4

为表inventory.customer,列pk1pk2指定消息键。为在任何模式表,列pk3pk4服务器消息键。
列的数量没有限制,您使用它来创建自定义消息键。然而,最好使用所需的最小数量,指定一个唯一键。

没有默认的

一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。设置该属性如果你希望连接器面具的一组列的值,例如,如果他们包含敏感数据。集长度一个正整数指定列中的数据替换为星号的数量(*)指定的字符长度在属性名。集长度0(零),用一个空字符串替换指定列中的数据。

的完全限定名称列观察下列格式:< schemaName ><表>< columnName >。匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;表达式不匹配的子字符串可能出现在一个列名。

您可以指定多个属性具有不同的长度在一个配置。

没有默认的

一个可选的以逗号分隔的正则表达式的掩蔽列名改变事件消息用星号代替字符(*)。
指定数量的字符替换属性的名称,例如,column.mask.with.8.chars
长度指定为一个正整数或零。然后将正则表达式添加到列表为每个字符的列名称你想应用一个面具。
使用以下格式指定完全限定的列名称:< schemaName ><表>< columnName >

连接器配置包括多个属性,可以指定不同的长度。

没有默认的

可选,以逗号分隔的正则表达式匹配列,您想要的完全限定名称连接器排放额外参数代表列元数据。设置此属性时,连接器将以下字段添加到事件记录的模式:

  • __开云体育官方注册网址debezium.source.column.type

  • __开云体育官方注册网址debezium.source.column.length

  • __开云体育官方注册网址debezium.source.column.scale

这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。
使连接器正确地发出这个额外的数据可以帮助大小水槽数据库中特定的数字或字符的列。开云体育电动老虎机

的完全限定名称列观察下列格式:<表>< columnName >,或< schemaName ><表>< columnName >
匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串列的名称;表达式不匹配的子字符串可能出现在一个列名。

没有默认的

可选,以逗号分隔的正则表达式,指定完全限定名称列的数据类型定义的一个数据库。开云体育电动老虎机当这个属性设置,对于匹配的数据类型的列,连接器发出事件记录在他们的模式包括以下额外的字段:

  • __开云体育官方注册网址debezium.source.column.type

  • __开云体育官方注册网址debezium.source.column.length

  • __开云体育官方注册网址debezium.source.column.scale

这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。
使连接器正确地发出这个额外的数据可以帮助大小水槽数据库中特定的数字或字符的列。开云体育电动老虎机

的完全限定名称列观察下列格式:<表>< typeName >,或< schemaName ><表>< typeName >
匹配一个数据类型的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串数据类型的名称;表达式不匹配的子字符串可能存在的类型名称。

oracle数据类型名称的列表,请参阅Oracle数据类型映射

0

以毫秒为单位指定,连接器的频率发送消息到心跳的主题。
使用这个属性来确定连接器是否继续接收来自源数据库的更改事件。开云体育电动老虎机
它也可以是有用的设置属性在没有改变的情况下事件发生在捕获表一段时间。
在这种情况下,尽管连接器继续阅读重做日志,它吐不出改变事件消息,以便抵消卡夫卡的主题保持不变。因为连接器不刷新最新的系统变化数(SCN),它从数据库中读取,数据库可能保留超过必要的重做日志文件。开云体育电动老虎机如果连接器重新启动,延长保存期可能导致连接器多余地发送一些更改事件。
的默认值0防止连接器发送心跳消息。

没有默认的

指定一个查询时,连接器在源数据库上执行连接器发送心跳消息。开云体育电动老虎机

例如:

插入test_heartbeat_table(文本)值(“test_heartbeat”)

连接器运行查询后发出心跳消息

设置该属性,创建一个心跳表接收心跳消息解决的情况开云体育官方注册网址Debezium未能同步补偿低流量数据库在同一主机上作为一个高流量的数据库开云体育电动老虎机。连接器后将记录插入到配置表,它能够接收从低流量数据库并承认SCN变化在数据库中,以便补偿同步代理。开云体育电动老虎机

没有默认的

以毫秒为单位指定一个时间间隔,连接器等后它开始之前需要一个快照。
当你开始使用这个属性来避免快照中断多个连接器在一个集群中,这可能导致连接器的调整。

2000年

指定的最大行数应该读入一个从每个表而拍摄快照。连接器读取表内容在多个批次的指定的大小。

2000年

指定的行数,将每个数据库获取给定查询的往返。开云体育电动老虎机使用价值的0将使用JDBC驱动程序的默认获取大小。

将属性设置为真正的如果你想让Debeziu开云体育官方注册网址m生成事件与事务边界和丰富数据事件信封与事务的元数据。

看到事务的元数据额外的细节。

redo_log_catalog

指定了矿业战略控制甲骨文LogMiner构建和使用一个给定的数据字典解决表和列id的名称。

redo_log_catalog::编写数据字典的联机重做日志造成更多归档日志生成。这也使得跟踪对捕获表DDL的变化,因此,如果模式变化频繁,这是最理想的选择。

online_catalog::使用数据库的当前数据开云体育电动老虎机字典解决对象id和不写任何额外的信息联机重做日志。这允许LogMiner我大大快但以牺牲DDL变化不能跟踪。如果捕获表(s)模式变化很少或从来没有,这是最理想的选择。

没有一个

指定了矿业查询模式控制如何构建Oracle LogMiner查询。

没有一个::不做任何模式生成的查询,表,或者用户名查询中过滤。

::使用标准的SQL查询生成条款来过滤模式、表、用户名在数据库端。开云体育电动老虎机模式、表和用户名的配置包括/排除列表不应该指定任何正则表达式作为查询的方法是直接使用的值。

正则表达式::查询使用甲骨文的生成REGEXP_LIKE运营商过滤模式和表名在数据库方面,随着用户名使用SQL条款。开云体育电动老虎机模式和表配置包括/排除列表可以安全地指定正则表达式。

内存

缓冲式控制连接器如何管理缓冲事务数据。

内存——使用JVM进程的堆缓冲所有交易数据。选择这个选项如果你不期望连接器处理大量的长期或大型交易。当这个选项被激活时,缓冲国不是保存在重新启动。后重新启动,重新创建当前的缓冲区的SCN价值偏移量。

infinispan_embedded- - - - - -这个选项使用嵌入式Infinispan缓存缓冲区事务数据并保存到磁盘。

infinispan_remote——这个选项使用远程集群Infinispan缓冲事务数据并保存到磁盘。

0

事件的最大数量事务能够在事务缓冲区。交易与事件数超过这个阈值不会被发送,并将被放弃。默认行为是没有事务事件的阈值。

没有默认的

Infinispan的XML配置事务缓存。有关更多信息,请参见Infinispan事件缓冲

没有默认的

Infinispan事件的XML配置缓存。有关更多信息,请参见Infinispan事件缓冲

没有默认的

Infinispan事务处理的XML配置缓存。有关更多信息,请参见Infinispan事件缓冲

没有默认的

Infinispan模式变化的XML配置缓存。

指定缓冲国是否删除连接器后停止在一个优雅的,预期的方式。

这个设置只影响缓冲实现持久化状态在重启,等infinispan
默认行为是重新启动之间的缓冲国总是保留。

设置为真正的只有在测试或开发环境。

0

LogMiner会话的最大的毫秒数可以活跃之前使用一个新的会话。

对于低容量系统,LogMiner会话可能会消耗太多的PGA内存使用相同的会话时很长一段时间。默认行为是只使用一个新的LogMiner会话当检测到日志开关。通过设置这个值大于0这指定毫秒LogMiner会话的最大数量可以活跃之前停了下来,开始释放和重新分配PGA内存。

指定JDBC连接是否关闭并重启日志开关或当矿业会话已达到最大生命周期阈值。

默认情况下,JDBC连接没有在日志开关闭合或最大会话。
这应该启用,如果你经验与LogMiner甲骨文SGA过度增长。

1000年

最小SCN间隔大小这个连接器试图从重新读取/归档日志。活跃批大小也增加/减少的金额调优连接器吞吐量。

100000年

时这个连接器使用的最大SCN间隔大小阅读来自重做/归档日志。

20000年

开始SCN间隔大小的连接器使用重做/归档日志读取数据。这也服务器作为调整批大小的测量——当当前的视交叉上核和之间的区别开始/结束的视交叉上核批大于这个值,批量大小是增加/减少。

0

最少的时间连接器睡读取数据后重做/归档日志并再次开始读取数据。值以毫秒为单位。

3000年

连接器的最大时间生病睡后重做/归档日志读取数据并再次开始读取数据。值以毫秒为单位。

1000年

开始的时间从重新读取数据后,连接器睡/归档日志并再次开始读取数据。值以毫秒为单位。

200年

最大的时间连接器使用向上或向下调整的最佳睡眠时间从logminer读取数据的时候。值以毫秒为单位。

0

的小时数在过去我从SYSDATE归档日志。当默认设置(0),连接器矿山所有归档日志。

控制连接器矿山是否变化从归档日志或联机重做日志和归档日志(默认)。

重做日志使用循环缓冲区,可以在任何时候存档。联机重做日志归档频繁的环境中,这可能导致LogMiner会话失败。重做日志相比,归档日志保证可靠。设置这个选项真正的我迫使连接器归档日志。设置连接器后我只有归档日志,一个操作被提交和连接器之间的延迟发射一个关联的更改事件可能会增加。延迟的程度取决于频率数据库配置归档联机重做日志。开云体育电动老虎机

10000年

连接器的毫秒数将睡在轮询之间确定起动系统改变数字归档日志。如果log.mining.archive.log.only.mode未启用,不使用此设置。

0

正整数的值指定的毫秒数保留重做日志开关之间的长期运行的事务。当设置为0、事务被保留,直到检测到提交或回滚。

默认情况下,LogMiner适配器保持一个内存中的缓冲区的所有正在运行的事务。因为所有的DML操作事务的一部分是缓冲,直到检测到提交或回滚时,应避免长期运行的事务,以不溢出缓冲区。任何交易,超过了这个配置的值是完全丢弃,和连接器不发出任何消息的业务事务的一部分。

没有默认的

指定配置Oracle存档与LogMiner目的地挖掘时使用归档日志。

默认行为自动选择第一个有效的本地配置的目的地。不过,您可以使用一个特定的目的地可以通过提供目的地名称,例如,LOG_ARCHIVE_DEST_5

没有默认的

数据库用户列表包开云体育电动老虎机括从LogMiner查询。设置该属性可以有用如果你想捕获过程包括从指定的用户。

没有默认的

列表的数据库用户开云体育电动老虎机排除LogMiner查询。它可以有用的设置这个属性如果你想捕获过程总是排除特定用户做出的更改。

1000000

指定一个值,连接器比较当前和以前的视交叉上核值之间的差异来确定一个视交叉上核存在的差距。如果视交叉上核之间的差异值大于指定值,和时差小于log.mining.scn.gap.detection.time.interval.max.ms然后一个SCN发现差距,和连接器使用挖掘窗口大于配置的最大的批处理。

20000年

指定一个值,以毫秒为单位,连接器比较当前和以前的SCN时间戳之间的差异来确定一个视交叉上核存在的差距。如果时间戳之间的差异小于指定值,和视交叉上核三角洲大于log.mining.scn.gap.detection.gap.size.min检测到,然后一个SCN差距和连接器使用挖掘窗口大于配置的最大的批处理。

LOG_MINING_FLUSH

指定的名称冲洗冲洗Oracle表坐标LogWriter重做日志缓冲区(LGWR)。通常情况下,多个连接器可以使用相同的表。然而,如果表锁争用连接器遇到错误,使用这个属性来指定一个专门的表为每个连接器部署。

控制是否大对象(CLOB或BLOB)列值在更改事件发出。

默认情况下,改变事件有大对象列,但不包含的列值。在处理有一定的开销和管理大对象列类型和载荷。捕捉大对象的价值观和序列化的更改事件,设置这个选项真正的

__开云体育官方注册网址debezium_unavailable_value

指定连接器提供的常数表明原始值不变,而不是提供的数据库。开云体育电动老虎机

没有默认的

一个以逗号分隔的甲骨文真正的应用程序集群(RAC)节点的主机名或地址。这个领域需要启用兼容Oracle RAC部署。

指定RAC节点的列表通过使用下列方法之一:

  • 指定一个值开云体育电动老虎机database.port每个地址,并使用指定的端口值rac.nodes列表。例如:

    开云体育电动老虎机database.port=1521 rac.nodes=192.168.1.100,192.168.1.101
  • 指定一个值开云体育电动老虎机database.port,覆盖默认的端口列表中一个或多个条目。使用默认的列表可以包含条目开云体育电动老虎机database.port价值,条目定义自己的独特的端口值。例如:

    开云体育电动老虎机database.port=1521 rac.nodes=192.168.1.100,192.168.1.101:1522

如果你提供一个原始数据库的JDBC URL使用开云体育电动老虎机开云体育电动老虎机database.url财产,而不是定义一个值开云体育电动老虎机database.port,每个RAC节点条目必须显式地指定一个端口值。

t

一个以逗号分隔的操作类型,你想要的连接器在流跳过。您可以配置连接器跳过以下类型的操作:

  • c(插入/创建)

  • u(更新)

  • d(删除)

  • t(截断)

默认情况下,只有截断操作跳过。

没有默认值

完全限定的名称用于发送的数据收集信号连接器。当你使用这个属性与Oracle可插入数据库(PDB),将其值设置为根的数据库的名称。开云体育电动老虎机
使用以下格式指定集合名称:
<开云体育电动老虎机数据库名>< schemaName ><表>

的信号通道名称列表启用的连接器。默认情况下,以下渠道:

  • 卡夫卡

  • 文件

  • jmx

可选地,也可以实现自定义信号通道

没有默认的

启用的通知通道名称列表的连接器。默认情况下,以下渠道:

  • 水槽

  • 日志

  • jmx

可选地,也可以实现自定义通知渠道

1024年

的最大行数连接器存取和读取到内存块在增量快照。增加块大小提供了更高的效率,因为快照少运行快照查询一个更大的规模。然而,更大的块的大小也需要更多的内存缓冲区快照数据。调整块大小的值提供了最佳的性能在您的环境中。

io.开云体育官方注册网址debezium.schema.SchemaTopicNamingStrategy

TopicNamingStrategy类的名称应该用于确定数据的主题名称变化,模式改变,交易,心跳事件等,默认SchemaTopicNamingStrategy

为主题名称指定分隔符,违约

10000年

大小用于举办的主题名称有界并发散列映射。这个缓存将有助于确定主题名称对应于给定的数据收集。

__开云体育官方注册网址debezium-heartbeat

控件的名称连接器发送心跳消息的主题。主题名称有这种模式:

topic.heartbeat.prefixtopic.prefix

例如,如果话题是前缀实现,默认的主题名称__开云体育官方注册网址debezium-heartbeat.fulfillment

事务

控制主题的连接器的名称发送交易信息的元数据。主题名称有这种模式:

topic.prefixtopic.transaction

例如,如果话题是前缀实现,默认的主题名称fulfillment.transaction

1

连接器使用指定数量的线程在执行一个初始快照。支持并行初始快照,将属性设置为大于1的值。在一个平行的初始快照,连接器同时处理多个表。这个特性是孵化。

开云体育官方注册网址Debezium甲骨文连接器配置属性数据库模式历史开云体育电动老虎机

开云体育官方注册网址Debezium提供了一组schema.history.internal。*属性控制连接器与模式交互历史话题。

下表描述了schema.history.internal属性配置Debezium连接器。开云体育官方注册网址

表14。连接器配置属性数据库开云体育电动老虎机模式历史
财产 默认的 描述

没有默认的

连接器的卡夫卡主题的全称存储数据库模式的历史。开云体育电动老虎机

没有默认的

一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。这个连接是用于检索以前存储的数据库模式历史连接器,写作和每个DDL语句从源数据库读取。开云体育电动老虎机每一对应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。

One hundred.

一个整数值,它指定的最大数量毫秒连接器应该等待在启动/恢复,同时为持久化数据轮询。默认是100 ms。

3000年

一个整数值,它指定的最大数量毫秒连接器应该等待获取集群信息使用卡夫卡管理客户机。

30000年

一个整数值,它指定的最大数量毫秒连接器应该等待使用卡夫卡管理客户机创建卡夫卡的历史主题。

One hundred.

连接器的最大次数应该尝试读取保存历史数据连接器之前恢复失败的错误。最大的时间等待后没有数据recovery.attempts×recovery.poll.interval.ms

一个布尔值,用于指定连接器是否应该忽略畸形或未知的数据库语句或停止处理,所以人类可以解决这个问题。开云体育电动老虎机安全默认是。不应该只有小心使用,因为它会导致数据丢失或矫直时binlog正在处理。

一个布尔值,用于指定连接器是否应该记录所有从数据库模式或指定DDL语句开云体育电动老虎机

真正的只记录那些变化的相关表的DDL语句被Debezium捕获。开云体育官方注册网址设置为真正的小心因为缺失的数据可能成为必要的如果你改变哪些表变化捕获。

安全默认是

一个布尔值,用于指定连接器是否应该记录所有DDL语句

真正的只记录那些相关数据库的DDL语句/模式的表被Debezium捕获的变化。开云体育官方注册网址开云体育电动老虎机将存储所有传入的DDL语句。

默认值是真正的MySQL连接器
直通数据库模式历史属性配置开云体育电动老虎机生产国和消费国的客户


开云体育官方注册网址Debezium依赖于卡夫卡生产商编写模式的更改数据库模式的历史主题。开云体育电动老虎机同样的,它依赖于消费者阅读卡夫卡连接器开始时从数据库模式的历史主题。开云体育电动老虎机您定义的配置卡夫卡生产国和消费国的客户通过将值分配给一组开始的直通配置属性schema.history.internal.producer。*schema.history.internal.consumer。*前缀。直通生产国和消费国数据库模式历史属性控制的一系列行为,比如如何将这些客户与卡夫开云体育电动老虎机卡代理安全连接,如以下示例所示:

SSL schema.history.internal.producer.ssl.keystore.location schema.history.internal.producer.security.protocol = = / var /私人/ SSL / kafka.server.keystore.jks schema.history.internal.producer.ssl.keystore.password = test1234 schema.history.internal.producer.ssl.truststore.location = / var /私人/ SSL / kafka.server.truststore.jks schema.history.internal.producer.ssl.truststore.password = test1234 schema.history.internal.producer.ssl.key.password = test1234 schema.history.internal.consumer.security.protocol = SSL schema.history.internal.consumer.ssl.keystore.location = / var /私人/ SSL / kafka.server.keystore.jks schema.history.internal.consumer.ssl.keystore.password = test1234 schema.history.internal.consumer.ssl.truststore.location = / var /私人/ SSL / kafka.server.truststore.jks schema.history.internal.consumer.ssl.truststore.password = test1234 schema.history.internal.consumer.ssl.key.password = test1234

开云体育官方注册网址Debezium带前缀的属性名之前,将属性传递到卡夫卡客户机。

看到卡夫卡文档了解更多细节卡夫卡生产商配置属性卡夫卡消费者配置属性

开云体育官方注册网址Debezium连接器卡夫卡信号配置属性

开云体育官方注册网址Debezium提供了一组信号。*属性控制连接器与卡夫卡的信号交互的话题。

下表描述了卡夫卡信号属性。

表15。卡夫卡信号配置属性
财产 默认的 描述

没有默认的

卡夫卡的名称主题,特设的连接器监控信号。

没有默认的

一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。每一对引用的卡夫卡集群Debezium卡夫卡所使用的连接过程。开云体育官方注册网址

One hundred.

一个整数值,它指定的最大数量毫秒时,连接器等轮询的信号。

开云体育官方注册网址Debezium直通信号连接器卡夫卡消费者客户端配置属性

Debe开云体育官方注册网址zium连接器提供了直通信号卡夫卡消费者的配置。直通信号属性从前缀开始signals.consumer。*。例如,连接器传递属性等signal.consumer.security.protocol = SSL卡夫卡的消费者。

一样的直通属性数据库模式历史客户开云体育电动老虎机,D开云体育官方注册网址ebezium带前缀的属性之前,会将它们传递到消费者卡夫卡信号。

开云体育官方注册网址Debezium连接器水槽通知配置属性

下表描述了通知属性。

表16所示。水槽通知配置属性
财产 默认的 描述

没有默认的

主题的名称,从Debezium接收通知。开云体育官方注册网址这个属性是必需的配置notification.enabled.channels财产包括水槽为启用通知渠道之一。

开云体育官方注册网址Debezium甲骨文连接器直通数据库驱动程序的配置属性开云体育电动老虎机

Debe开云体育官方注册网址zium连接器提供了直通数据库驱动程序的配置。开云体育电动老虎机直通数据库属性从前缀开始开云体育电动老虎机司机。*。例如,连接器传递属性等driver.foobar = falseJDBC URL。

一样的直通属性数据库模式历史客户开云体育电动老虎机之前开云体育官方注册网址,Debezium带前缀的属性将它们传递到数据库驱动程序。开云体育电动老虎机

监控

Debe开云体育官方注册网址zium Oracle连接器提供了三种指标除了内置支持JMX标准Apache管理员,Apache卡夫卡,卡夫卡连接。

请参考监控文档对如何通过JMX公开这些指标的细节。

快照指标

MBean开云体育官方注册网址debezium.oracle: type = connector-metrics上下文=快照,server =< oracle.server.name >

快照指标并非暴露,除非一个快照操作被激活时,或者如果发生自上次快照连接器的开始。

下表列出了shapshot指标可用。

属性 类型 描述

字符串

读过的最后一个快照事件连接器。

连接器以来的毫秒数读取和处理最近的事件。

这个连接器的事件总数已经从去年开始或重置。

事件的数量已经被包括/排除列表过滤规则过滤配置连接器。

string []

表的列表被连接器。

int

队列长度用来传递事件之间的快照和主卡夫卡连接循环。

int

队列的自由能力用来传递事件之间的快照和主卡夫卡连接循环。

int

表的总数被包含在快照。

int

表的数量尚未复制快照。

布尔

快照是否开始。

布尔

快照是否停了下来。

布尔

快照是否中止。

布尔

快照是否完成。

总秒数,快照到目前为止,即使不完整。也包括时间快照时停了下来。

总秒数,快照是暂停。如果快照停了好几次,暂停时间增加。

Map < String,长>

地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。

的最大缓冲区队列以字节为单位。这个指标是可用的max.queue.size.in.bytes被设置为一个积极的长期价值。

当前的体积,以字节为单位,记录在队列中。

连接器还提供了以下额外的快照指标执行增量快照时:

属性 类型 描述

字符串

当前的快照数据块的标识符。

字符串

下界的主键设置定义当前块。

字符串

主键的上限设置定义当前块。

字符串

下界的当前快照的表的主键设置。

字符串

主键的上界的当前快照表。

流指标

MBean开云体育官方注册网址debezium.oracle: type = connector-metrics、上下文=流媒体服务器=< oracle.server.name >

下表列出了流指标可用。

属性 类型 描述

字符串

过去的流事件连接器已经阅读。

连接器以来的毫秒数读取和处理最近的事件。

事件,该连接器的总数已经重置自上次启动或指标。

创建事件的总数,这个连接器以来最后复位启动或指标。

更新事件的总数,这个连接器以来最后复位启动或指标。

删除事件,该连接器的总数已经重置自上次启动或指标。

事件的数量已经被包括/排除列表过滤规则过滤配置连接器。

string []

表的列表被连接器。

int

队列长度之间的拖缆和主要用来传递事件卡夫卡连接循环。

int

队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。

布尔

国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机

的毫秒数去年更改事件的时间戳和连接器之间的处理它。值将会把机器上的任何差异时钟运行数据库服务器和连接器。开云体育电动老虎机

处理事务的数量。

Map < String, String >

去年收到事件的坐标。

字符串

事务标识符的处理事务。

的最大缓冲区队列以字节为单位。这个指标是可用的max.queue.size.in.bytes被设置为一个积极的长期价值。

当前的体积,以字节为单位,记录在队列中。

Debe开云体育官方注册网址zium Oracle连接器还提供以下额外流指标:

表17所示。额外的描述流指标
属性 类型 描述

字符串

最近的系统变更数量已经处理。

字符串

最古老的系统变更数量事务缓冲区。

字符串

最后提交的系统变化从事务缓冲区数目。

字符串

该系统改变目前写入连接器数量的补偿。

string []

数组的日志文件,目前已被敌军布上了地雷。

对任何指定的最小数量的日志LogMiner会话。

日志的最大数量为任何指定LogMiner会话。

string []

数组的每个开采的当前状态日志文件的格式文件名|状态

int

数据库的次数进行了最后一天的日志开关。开云体育电动老虎机

DML操作时观察到的数量在过去LogMiner会话查询。

DML操作时观察到的最大数量在处理单个LogMiner会话查询。

DML操作的总数。

的总数LogMiner会话查询(又名批次)。

去年LogMiner会话查询获取的持续时间,以毫秒为单位。

任何LogMiner会话的最大持续时间查询的获取,以毫秒为单位。

期间处理最后LogMiner查询批处理结果,以毫秒为单位。

时间以毫秒为单位用来解析DML SQL语句。

时间以毫秒为单位开始最后LogMiner会话。

最长持续时间以毫秒为单位开始LogMiner会话。

花费的总时间以毫秒为单位的连接器LogMiner开始会话。

最小时间以毫秒为单位花了从单个LogMiner会话处理结果。

最大持续时间以毫秒为单位在处理结果从一个LogMiner会话。

花费的总时间以毫秒为单位处理结果LogMiner会话。

花费的总时间以毫秒为单位的JDBC驱动程序获取下一行从日志挖掘视图处理。

行处理的总数从日志挖掘视图在所有会话。

int

获取的条目数量的日志挖掘每个数据库查询往返。开云体育电动老虎机

连接器的毫秒数睡觉之前获取另一批日志挖掘的结果视图。

的最大行数/秒处理从日志挖掘视图。

平均每秒处理的行数从日志挖掘。

平均每秒处理的行数为最后一批从日志挖掘视图。

检测到连接的数量问题。

int

的小时数事务是由连接器的内存缓冲区保留在丢弃之前没有提交或回滚。有关更多信息,请参见log.mining.transaction.retention.ms

当前活动事务的事务数量的缓冲区。

已提交的事务的事务缓冲区的数量。

交易的数量被丢弃,因为它们的大小超过了log.mining.buffer.transaction.events.threshold

回滚事务的事务数量的缓冲区。

每秒的平均数量已提交事务的事务缓冲区。

注册事务缓冲区的DML操作。

时差在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。

最长时间的区别在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。

最小时差在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。

string []

最近的废弃的事务标识符数组从事务缓冲区中删除由于他们的年龄。看到log.mining.transaction.retention.ms获取详细信息。

string []

一组最近事务标识符已开采和回滚事务的缓冲区。

最后提交事务缓冲区操作的持续时间,以毫秒为单位。

持续时间最长的事务缓冲区提交操作,以毫秒为单位。

int

检测到错误的数量。

int

检测到的警告。

int

的次数,系统变化的数字是检查发展和保持不变。高价值可以表明一个长期运行的事务正在进行,防止连接器冲洗最近处理的系统数量更改为连接器的补偿。条件最优时,该值应接近或等于0

int

DDL记录的数量,已发现但不能解析器解析的DDL。这应该是0;然而当允许跳过是否DDL,这个指标可以用来确定任何警告已经写入连接器日志。

当前全球区域矿业会话的用户(佐治亚大学)字节的内存消耗。

全球面积最大的矿业会议的用户(佐治亚大学)各字节的内存消耗所有矿业会议。

当前全球区域矿业会话的过程(PGA)字节的内存消耗。

最大的矿业会议流程的全球区域(PGA)各字节的内存消耗所有矿业会议。

模式历史指标

MBean开云体育官方注册网址debezium.oracle: type = connector-metrics、上下文= schema-history服务器=< oracle.server.name >

下表列出了模式历史指标可用。

属性 类型 描述

字符串

之一停止,恢复(恢复历史存储),运行描述了历史数据库模式的状态。开云体育电动老虎机

时间在时代秒复苏已经开始。

的数量变化,阅读在复苏阶段。

模式变化的总数在复苏和运行时应用。

后经过的毫秒数,最后从历史存储变化是恢复。

后经过的毫秒数,最后应用改变。

字符串

最后变化的字符串表示从历史存储中恢复过来。

字符串

最后应用变化的字符串表示。

代理模式演化

甲骨文连接器自动跟踪表模式更改应用通过解析重做日志的DDL。如果DDL解析器遇到一个不兼容的声明,如果需要,连接器提供了一个替代方法应用模式的变化。

默认情况下,连接器停止当它遇到一个DDL语句无法解析。您可以使用Debeziu开云体育官方注册网址m信号触发更新的数据库模式这样的DDL语句。开云体育电动老虎机

更新行动的类型模式模式变化。这一行动更新模式枚举所有表的信号参数。不包含更新的消息模式。相反,它包含完整的新模式结构。

表18。操作参数
的名字 描述

开云体育电动老虎机

Oracle数据库的名称。开云体育电动老虎机

模式

变化在哪里应用模式的名称。

变化

一个数组,其中包含所请求的模式更新。

changes.type

型模式的改变,通常改变

changes.id

表的完全限定名称

changes.table

表的完全限定名称

changes.table.defaultCharsetName

使用的字符集名称如果不同于数据库表的违约开云体育电动老虎机

changes.table.primaryKeyColumnNames

数组的名字组合主键列

changes.table.columns

数组的列元数据

…columns.name

列的名称

…columns.jdbcType

JDBC类型的列定义JDBC API

…columns.typeName

列类型的名称

…columns.typeExpression

完整的列类型定义

…columns.charsetName

列如果不同于默认的字符集

…columns.length

列的长度/尺寸约束

…columns.scale

数字列的规模

…columns.position

表中列的位置开始1

…columns.optional

布尔真正的如果列值不是强制性的

…columns.autoIncremented

布尔真正的如果列值自动计算出一个序列

…columns.generated

布尔真正的如果列值自动计算

模式变化信号插入连接器必须重新启动修改配置,包括指定schema.history.internal.skip.unparseable.ddl选择真正的。连接器的提交后视交叉上核进展超出了DDL变化,防止意外跳过unparseable DDL语句,返回连接器配置到其之前的状态。

表19。日志记录的例子
价值

id

924 e3ff8 - 2245 - 43 - ca - ba77 af9af02fa07——2

类型

模式变化

数据

{“数开云体育电动老虎机据库”:“ORCLPDB1”、“模式”:“DEBEZIUM”、“开云体育官方注册网址变化”:[{“类型”:“改变”,“id”:“\”ORCLPDB1 \”, \“DEBEZIUM \”。\“客户\””、“表”:{“defaultCharsetName”:空,“primaryKeyColumnNames”:“ID”、“名称”,“列”:[{“名称”:“ID”、“jdbcType”: 2,“typeName”:“数量”,“typeExpression”:“数量”,“charsetName”:空,“长度”:9,“规模”:0,“位置”:1、“可选”:假的,“自动增量”:假的,“生成”:假},{“名称”:“名字”,“jdbcType”: 12日“typeName”:“VARCHAR2”、“typeExpression”:“VARCHAR2”、“charsetName”:空,“长度”:1000年,“位置”:2,“可选”:真的,“自动增量”:假的,“生成”:假},{“名称”:“分数”,“jdbcType”: 2,“typeName”:“数量”,“typeExpression”:“数量”,“charsetName”:空,“长度”:6“规模”:2,“位置”:3,“可选”:真的,“自动增量”:假的,“生成”:假},{“名称”:“注册”、“jdbcType”: 93年,“typeName”:“时间戳(6)”、“typeExpression”:“时间戳(6)”、“charsetName”:空,“长度”:6,“位置”:4,“可选”:真的,”自动增量”:假的,”生成“:假}]}}}

xstream支持

Debe开云体育官方注册网址zium Oracle连接器在默认情况下使用本机Oracle LogMiner摄食变化。连接器可以连接使用Oracle XStream代替。配置连接器使用Oracle XStream,你必须申请特定数据库和连接器配置,不同于那些你LogMiner使用。开云体育电动老虎机

先决条件
  • 使用XStream API,您必须有一个许可证GoldenGate产品。安装GoldenGate不是必需的。

准备数据库开云体育电动老虎机

甲骨文XStream所需的配置
ORACLE_SID = ORCLCDB dbz_oracle sqlplus nolog连接sys / top_secret SYSDBA改变系统设置db_recovery_file_dest_size = 5克;改变系统设置db_recovery_file_dest = ' / opt / oracle / oradata / recovery_area范围= spfile;改变系统设置enable_goldengate_replication = true;关闭立即启动山archivelog改变数据库;开云体育电动老虎机改变数据库开开云体育电动老虎机放;——应该显示“数据库日志模式:归开云体育电动老虎机档模式”归档日志列表退出;

此外,补充必须启用日志表或数据库为了捕获数据更改捕获开云体育电动老虎机之前改变数据库行。开云体育电动老虎机以下说明了如何配置特定的表,这是最理想的选择中捕获的信息最小化Oracle重做日志。

ALTER TABLE库存。客户一个DD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

连接器创建XStream用户

Debe开云体育官方注册网址zium Oracle连接器要求建立与特定的用户账户权限,连接器可以捕捉更改事件。以下简要介绍这些用户配置使用多租户数据库模型。开云体育电动老虎机

创建一个XStream管理员用户
sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB xstream_adm_tbs sysdba创建表空间数据文件' / opt / oracle / oradata / ORCLCDB / xstream_adm_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLPDB1 xstream_adm_tbs sysdba创建表空间数据文件' / opt / oracle / oradata ORCLCDB / ORCLPDB1 / xstream_adm_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB sysdba创建用户c # # dbzadmin被dbz默认表空间xstream_adm_tbs配额无限xstream_adm_tbs容器=所有;格兰特创建会话,设置容器c # # dbzadmin容器=所有;DBMS_XSTREAM_AUTH开始。GRANT_ADMIN_PRIVILEGE(受让人= > c # # dbzadmin, privilege_type = >“捕获”,grant_select_privileges = >真的,容器= > '所有');结束;/退出;
创建连接器的XStream用户
sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB xstream_tbs sysdba创建表空间数据文件' / opt / oracle / oradata / ORCLCDB / xstream_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLPDB1 xstream_tbs sysdba创建表空间数据文件' / opt / oracle / oradata ORCLCDB / ORCLPDB1 / xstream_tbs。dbf的大小25 m重用AUTOEXTEND最大容量无限的;退出;sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB sysdba创建用户c # # dbzuser被dbz默认表空间xstream_tbs配额无限xstream_tbs容器=所有;格兰特创建会话c # # dbzuser容器=所有;格兰特容器设置为c # # dbzuser容器=所有;格兰特选择V_ $数据库到c # # 开云体育电动老虎机dbzuser容器=;格兰特闪回表到c # # dbzuser容器=所有;格兰特SELECT_CATALOG_ROLE c # # dbzuser容器=所有; GRANT EXECUTE_CATALOG_ROLE TO c##dbzuser CONTAINER=ALL; exit;

创建一个服务器XStream出站

创建一个XStream出站服务器(考虑到右特权,这可能是自动完成的连接器,明白了dbz - 721):

创建一个服务器XStream出站
sqlplus c # # dbzadmin dbz@ / / localhost: 1521 / ORCLCDB DBMS_UTILITY.UNCL_ARRAY声明表;模式DBMS_UTILITY.UNCL_ARRAY;开始表(1):=零;模式(1):=“debeziu开云体育官方注册网址m”;DBMS_XSTREAM_ADM。创建_OUTBOUND( server_name => 'dbzxout', table_names => tables, schema_names => schemas); END; / exit;

当建立一个XStream出站服务器捕捉变化从一个可插入数据库,开云体育电动老虎机source_container_name应提供参数指定可插入数据库名称。开云体育电动老虎机

配置XStream用户帐户连接到服务器XStream出站
sqlplus sys / top_secret@ / / localhost: 1521 / ORCLCDB sysdba DBMS_XSTREAM_ADM开始。ALTER_OUTBOUND (server_name = > ' dbzxout connect_user = > ' c # # dbzuser ');结束;/退出;

单个XStream出站服务器不能由多个共享Debezium Oracle连接器。开云体育官方注册网址每个连接器需要一个独特的XStream出站连接器配置。

配置XStream适配器

默认情况下,Debezi开云体育官方注册网址um使用Oracle LogMiner摄取改变事件从Oracle。你可以调整让连接器使用的连接器配置Oracle xstream适配器。

以下配置示例添加属性开云体育电动老虎机database.connection.adapter开云体育电动老虎机database.out.server.name让连接器使用XStream API实现。

{" name ": " inventory-connector”、“配置”:{“连接器。class" : "io.debezium.connector.oracle.OracleConnector", "tasks.max" : "1", "topic.prefix" : "server1", "database.hostname" : "", "database.port" : "1521", "database.user" : "c##dbzuser", "database.password" : "dbz", "database.dbname" : "ORCLCDB", "database.pdb.name" : "ORCLPDB1", "schema.history.internal.kafka.bootstrap.servers" : "kafka:9092", "schema.history.internal.kafka.topic": "schema-changes.inventory", "database.connection.adapter": "xstream", "database.out.server.name" : "dbzxout" } }

获得Oracle JDBC驱动程序和XStream API文件

Debe开云体育官方注册网址zium Oracle连接器需要Oracle JDBC驱动程序(ojdbc8.jar)连接Oracle数据库。开云体育电动老虎机如果连接器使用XStream来访问数据库,您还必须有XStream API (开云体育电动老虎机xstreams.jar)。许可要求禁止Debezium包括Oracle连接器中的这些文件存开云体育官方注册网址档。然而,所需的文件可供免费下载的甲骨文即时客户。下面的步骤描述了如何下载Oracle即时客户端和提取所需的文件。

过程
  1. 从一个浏览器,下载Oracle即时客户端包为您的操作系统。

  2. 提取档案,然后打开instantclient_ <版本>目录中。

    例如:

    instantclient_21_1 /├──adrci├──BASIC_LITE_LICENSE├──BASIC_LITE_README├──genezi├──libclntshcore。所以- > libclntshcore.so.21.1├──libclntshcore.so.12.1 - > libclntshcore.so.21.1……├──ojdbc8。jar├──跟单信用证。jar├──uidrvci└──xstreams.jar
  3. 复制ojdbc8.jarxstreams.jar文件,并将它们添加到< kafka_home >/ libs例如,目录卡夫卡/ libs

  4. 创建一个环境变量,LD_LIBRARY_PATH,并将其值设置为即时客户目录的路径,例如:

    LD_LIBRARY_PATH = /道路/ / instant_client /

XStream连接器属性

以下配置属性要求当使用xstream除非默认值是可用的。

财产

默认的

描述

没有默认的

XStream出站的名称服务器中配置数据库。开云体育电动老虎机

XStream和DBMS_LOB

Oracle提供了一个数据库包开云体育电动老虎机DBMS_LOB,由一组程序操作BLOB、CLOB,和NCLOB列。大多数这些项目在整体操作LOB列,然而,一个程序,WRITEAPPEND,能够操作的一个子集LOB数据缓冲区。

使用XStream时,WRITEAPPEND发出一个逻辑变更记录(LCR)为每个调用程序的事件。这些电感电容电阻测量事件不是结合成一个单一的更改事件就像在使用Oracle LogMiner适配器,所以消费者的主题应该准备接收事件和部分列值。这种分化行为捕获dbz - 4741并将在将来的版本中解决。

常见问题

Oracle 11 g支持吗?

不支持Oracle 11 g;不过,我们的目标是向后兼容Oracle 11 g力所能及。我们依靠社区与Oracle 11 g通信兼容性问题以及提供bug修复回归时确定。

不是甲骨文LogMiner弃用?

不,甲骨文只弃用连续采矿选项和甲骨文LogMiner在Oracle 12 c和移除选项从Oracle 19 c。Debe开云体育官方注册网址zium Oracle连接器不依赖这个选项功能,因此可以安全地使用新版本的Oracle没有任何影响。

我如何改变位置补偿?

Debe开云体育官方注册网址zium Oracle连接器保持两个关键值的偏移量,一个字段命名视交叉上核和另一个叫commit_scn。的视交叉上核字段是一个字符串,表示low-watermark起始位置时连接器使用捕捉变化。

  1. 找出主题的名称包含连接器补偿。这是基于值设置为配置offset.storage.topic配置属性。

  2. 找到最后一个抵消连接器,在它的关键是存储和识别分区用于存储偏移量。这可以通过使用kafkacat卡夫卡代理提供的实用程序脚本安装。一个例子可能是这个样子:

    kafkacat localhost - b - c - t my_connect_offsets - f的分区(% p) % k % s \ n的分区(11)(“inventory-connector”{“服务器”:“server1”}]{“视交叉上核”:“324567897”,“commit_scn”:“324567897: 0 x2832343233323:1”}

    的关键inventory-connector[" inventory-connector ",{“服务器”:“server1”}]分区是11最后抵消后的内容是关键。

  3. 回到前一个抵消连接器应该停止,必须发出以下命令:

    回声”(“inventory-connector”{“服务器”:“server1”}] |{“视交叉上核”:“3245675000”,“commit_scn”:“324567500”}”| \ localhost kafkacat - p - b - t my_connect_offsets - k \ | - p 11

    这个写入分区11my_connect_offsets题目给定的键和偏移值。在这个例子中,我们是扭转连接器SCN3245675000而不是324567897

如果连接器不能找到与给定抵消SCN日志吗?

Debe开云体育官方注册网址zium连接器保持较低和高水印SCN连接器的价值补偿。low-watermark SCN代表起始位置,必须存在于联机重做或归档日志为了连接器成功开始。当连接器报告找不到这个抵消SCN,这表明仍然可用的日志不包含SCN因此连接器从上次我不能更改。

当这种情况发生时,有两个选项。第一是删除的历史主题和补偿连接器并重新启动连接器,以一个新的快照为建议。这将确保没有数据丢失会发生任何话题的消费者。第二种是手动操作抵消,推进视交叉上核的位置可用重做或归档日志。这将导致旧的SCN价值之间发生的变化和新提供的视交叉上核值丢失和不写主题。这是不推荐。

各种挖掘策略之间的差异是什么?

Debe开云体育官方注册网址zium Oracle连接器提供了两个选项log.mining.strategy

默认值是redo_in_catalog,这指示连接器将Oracle数据字典写入重做日志每次检测到一个日志开关。数据字典是必要的对甲骨文LogMiner跟踪模式变化解析重做并归档日志时有效。这个选项将生成更多的比平时多的归档日志但可操作表被抓获在实时捕获数据变化没有任何影响。这个选项通常需要更多的Oracle数据库内存和将导致Oracle LogMiner会话开云体育电动老虎机和过程需要稍微长的时间开始后每个日志开关。

另一种选择,online_catalog,不写重做日志的数据字典。相反,甲骨文LogMiner总是使用包含的当前状态的在线数据字典表的结构。这也意味着,如果一个表的结构变化和不再匹配的在线数据字典,甲骨文LogMiner将无法解决表名或列名,如果表的结构发生了变化。不应该使用这种开采策略选项如果表被俘虏受到频繁的模式变化。重要的是所有的数据变化与模式同步变化,这样所有更改从表的日志被抓获,停止连接器,适用的模式变化,并重新启动连接器和恢复数据变化在桌子上。这个选项需要较少的Oracle数据库内存和Oracle LogMi开云体育电动老虎机ner会话通常开始大幅更快因为数据字典不需要加载或影射LogMiner过程。

为什么连接器似乎停止捕捉变化对AWS ?

由于350秒的固定闲置超时AWS网关负载均衡器JDBC调用,需要超过350秒完成可以挂下去。

在调用Oracle LogMiner API的情况下需要超过350秒才能完成,可以触发一个超时,导致AWS网关负载平衡器悬挂。例如,这种超时可能发生当一个LogMiner会话同时处理大量数据的运行与甲骨文的周期性的检查点的任务。

防止超时发生在AWS网关负载均衡器,使点火电极数据包从卡夫卡连接或Debezium服务器环境中,通过执行下列任务作为根用户或超级用户环境中主机连接器:开云体育官方注册网址

  1. 从一个终端,运行以下命令:

    sysctl - w net.ipv4.tcp_keepalive_time = 60
  2. 编辑/etc/sysctl.conf并设置以下变量的值如下所示:

    net.ipv4.tcp_keepalive_time = 60
  3. 重新配置Oracle的Debez开云体育官方注册网址ium连接器使用开云体育电动老虎机database.url财产而不是开云体育电动老虎机database.hostname并添加(使=坏了)Oracle连接字符串描述符如以下示例所示:

    开云体育电动老虎机database.url = jdbc: oracle:薄:用户名/密码! @(描述=(启用=破碎)(ADDRESS_LIST =(地址= =(协议TCP)(主机=主机名)(端口=端口)))(CONNECT_DATA = (SERVICE_NAME =名)))

前面的步骤配置TCP网络栈发送维生数据包每隔60秒。因此,AWS网关负载均衡器不超时当JDBC调用LogMiner API需要超过350秒才能完成,使连接器继续读变化从数据库的事务日志。开云体育电动老虎机

ora - 01555是什么原因,如何处理它?

Debe开云体育官方注册网址zium Oracle连接器使用闪回查询初始快照阶段执行。闪回查询是一种特殊类型的查询,依赖于闪回区,由数据库的维护开云体育电动老虎机UNDO_RETENTION开云体育电动老虎机数据库参数,返回查询的结果基于表的内容在一个给定的时间,或在我们的例子中在给定SCN。默认情况下,甲骨文通常只维护一个撤销或闪回区大约15分钟,除非这是增加或减少你的数据库管理员。开云体育电动老虎机对于捕获大型表的配置,可能需要超过15分钟或者你的配置UNDO_RETENTION执行初始快照,这将最终导致这个异常:

ora - 01555:太老快照:回滚段12345号与名称“_SYSSMU11_1234567890 $”太小了

第一种方式来处理这个异常是与您的数据库管理员工作,看看他们是否可以增加开云体育电动老虎机UNDO_RETENTION开云体育电动老虎机临时数据库参数。这个不需要重启的Oracle数据库,这可以做在线而不影响数据库的可用性。开云体育电动老虎机然而,改变这仍可能导致上述异常或“快照太老”异常如果表空间不足的空间来存储必要的撤销数据。

第二种方式来处理这个异常是不依赖于初始快照,设置snapshot.modeschema_only然后而不是依赖增量快照。增量快照不依赖于一个闪回查询,因此不受ora - 01555例外。

ora - 04036是什么原因,如何处理它?

Debe开云体育官方注册网址zium Oracle连接器可能报告ora - 04036例外数据库时很少发生变化。开云体育电动老虎机Oracle LogMiner会话启动和重用,直到检测到一个日志开关。会话重用为它提供了最佳的性能与Oracle LogMiner利用率,但应长期采矿会话发生,这可能会导致过度PGA内存使用,最终导致异常如下:

ora - 04036: PGA超过PGA_AGGREGATE_LIMIT内存使用的实例

这个异常可以避免通过指定如何频繁Oracle开关重做日志或多久Debezium Oracle连接器允许重用矿业会话。开云体育官方注册网址Debe开云体育官方注册网址zium Oracle连接器提供了一个配置选项,log.mining.session.max.ms当前Oracle LogMiner会话控制多久可以重用之前关闭,开始一个新的会话。这允许数据库资源保持出来发挥没有开云体育电动老虎机超过PGA内存允许的数据库。

ora - 01882是什么原因,如何处理它?

Debe开云体育官方注册网址zium Oracle连接器可能报告以下例外当连接Oracle数据库:开云体育电动老虎机

ora - 01882:时区地区未找到

这发生在当时区信息不能正确地解决了JDBC驱动程序。为了解决这个驱动程序有关的问题,需要告知司机没有解决时区使用区域的细节。可以通过指定一个司机通过属性使用driver.oracle.jdbc.timezoneAsRegion = false

ora - 25191是什么原因,如何处理它?

Debe开云体育官方注册网址zium Oracle连接器自动忽略index-organized表(物联网),因为他们不支持Oracle LogMiner。然而,如果一个ora - 25191异常,这可能是由于一个独特的角落了映射和额外的规则自动排除这些可能是必要的。ora - 25191例外的一个例子可能会看起来像这样:

ora - 25191:不能引用溢流表index-organized表

如果一个ora - 25191异常,请举起Jira问题与细节表映射,与其他相关父表,等解决方案,包括/排除配置选项可以调整,以防止连接器访问这些表。