开云体育官方注册网址Debezium连接器对甲骨文
概述
开云体育官方注册网址Debezium甲骨文连接器的捕捉和记录行级的变化发生在Oracle服务器上的数据库,包括表添加连接器运行时。开云体育电动老虎机您可以配置连接器发出更改事件为特定模式和表的子集,或忽视,面具,或截断值在特定列。
Oracle数据库的信息版本兼容这个连接器,看到开云体育电动老虎机开云体育官方注册网址Debezium释放概述。
开云体育官方注册网址Debezium摄食更改事件从Oracle或通过使用原生LogMiner数据库包开云体育电动老虎机XStream API。虽然连接器可能使用各种各样的Oracle版本和版本,只有甲骨文EE 12和19个被测试。
甲骨文连接器是如何运作的吗
优化配置和运行Debezium Oracle连接器,它有助于了解连开云体育官方注册网址接器执行快照,流改变事件,决定了卡夫卡主题名称,使用元数据,实现事件缓冲。
快照
通常,重做日志配置Oracle服务器上不保留数据库的完整历史。开云体育电动老虎机因此,Debezium甲骨文连接器开云体育官方注册网址不能从日志中检索数据库的整个历史。开云体育电动老虎机使连接器能够建立一个基线数据库的当前状态,连接器第一次启动时,它执行一个初始开云体育电动老虎机一致的快照的数据库。开云体育电动老虎机
您可以自定义连接器创建快照的方式通过设置的值snapshot.mode
连接器配置属性。默认情况下,将连接器的快照模式最初的
。
当快照模式设置为默认,连接器完成以下任务:创建一个快照
决定了表被捕获。
获得一个
行共享模式
锁在每个捕获的表来防止结构性变化发生在创建快照。开云体育官方注册网址Debezium持有的锁都只有很短的时间内。读取当前系统改变号码(SCN)从服务器位置的重做日志。
捕获所有相关表的结构。
释放锁在步骤2中获得的。
扫描所有的相关的数据库表和模式有效在视交叉上核的位置开云体育电动老虎机读取在步骤3 (
SELECT * FROM…123年SCN
),生成一个读
事件对于每一行,然后将事件记录写到table-specific卡夫卡的话题。记录的成功完成连接器补偿的快照。
快照过程开始后,如果过程中断是由于连接失败,重新平衡,或其他原因,过程连接器重启后重新启动。连接器完成后初始快照,它继续流的位置读取在步骤3中,这样它不会错过任何更新。如果连接器停止任何理由,重启后,简历流从它之前离开的地方。
设置 | 描述 |
---|---|
|
连接器执行数据库快照中描述开云体育电动老虎机默认工作流来创建一个初始快照。快照完成之后,连接器开始流事件记录为后续数据库更改。开云体育电动老虎机 |
|
连接器执行数据库快照和停止流事件记录任何改变之前,开云体育电动老虎机不允许任何后续更改事件捕获。 |
|
连接器捕获所有相关的结构表、执行中描述的所有步骤默认快照工作流,除了它不创造 |
|
设置这个选项来恢复一个数据库模式历史话题,丢失或损坏。开云体育电动老虎机在重启之后,连接器运行一个快照,重建这个话题从源表。您还可以将属性设置为定期修剪数据库模式历史主题,经历意想不到的发展。开云体育电动老虎机 |
有关更多信息,请参见snapshot.mode
表中连接器的配置属性。
特别的快照
默认情况下,一个连接器运行初始快照操作之后才开始第一次。这个初始快照后,在正常情况下,连接器不重复快照过程。未来的任何更改事件的数据连接器捕捉只通过流过程。
然而,在某些情况下获得的数据连接器在初始快照可能变得陈旧,丢失,或不完整的。为重新夺回表数据提供一种机制,Debezium包括一个选项来执行特定的快照。开云体育官方注册网址以下更改数据库中可能导致执行一个特设快照:开云体育电动老虎机
连接器配置修改捕获一组不同的表。
卡夫卡主题删除,必须重建。
数据损坏发生由于配置错误或者其他问题。
你可以重新运行你的快照表之前启动一个所谓的捕获快照特别的快照。特别的快照的使用要求信号表。你发起一个特设快照通过发送一个信号请求Debezium信号表。开云体育官方注册网址
当你启动一个特设现有表的快照,连接器附加内容的主题已经存在的表。如果以前现有主题是移除,Debezium可以自动创建一个主题开云体育官方注册网址自动主题创建启用。
特设快照信号中包含指定表快照。快照可以捕捉数据库的全部内容,或者只捕获数据库中的表的一个子集。开云体育电动老虎机此外,快照可以捕获的一个子集表的内容(s)在数据库中。开云体育电动老虎机
您指定的表来捕获通过发送一个execute-snapshot
信息信号表。设置的类型execute-snapshot
信号增量
,并提供表的名称中包含快照,下表中描述:
场 | 默认的 | 价值 |
---|---|---|
|
|
指定类型的快照,你想要运行。 |
|
N /一个 |
一个数组,其中包含正则表达式匹配表的完全限定名称快照。 |
|
Optional.Empty |
一个可选的字符串,它指定一个条件基于表的列(s) (s),捕获的内容表的一个子集(年代)。 |
你发起一个特设的快照通过添加一个条目execute-snapshot
信号类型的信号表。连接器处理消息之后,它开始快照操作。快照过程读取第一个和最后一个主键值,并使用这些值为每个表的开始和结束点。根据表中的条目的数量,和配置的块大小,Debezium把表分成块,每个块和收益快照,在继承,一次一个。开云体育官方注册网址
增量快照
快照管理上提供了很大的灵活性,Debezium包括补充快照机制,称为开云体育官方注册网址增量快照。增量快照依靠Debezium机制开云体育官方注册网址Debezium连接器发送信号开云体育官方注册网址。基于增量快照DDD-3设计文档。
在增量快照,而不是捕捉数据库的完整状态,在一个初始快照,Debezium捕捉每个表的阶段,在一系列的配置块。开云体育官方注册网址开云体育电动老虎机你可以指定表的快照捕获和每个数据块的大小。块大小确定的行数的快照收集在每个提取操作数据库。开云体育电动老虎机默认增量快照1 KB的块大小。
作为一个增量快照,Debezium使用水印追踪其进展,保持每个表的记录行,开云体育官方注册网址它捕获。分阶段方法捕获数据提供了以下优势标准初始快照过程:
您可以运行增量快照与流数据获取,而不是推迟直到快照完成流媒体。连接器继续捕获实时事件从快照过程中更改日志,也操作模块。
如果中断增量快照的进步,你可以恢复它而不会丢失任何数据。流程简历后,快照开始时它不禁停了下来,而不是重新夺回表从一开始。
您可以运行一个增量快照随时点播,并根据需要重复这个过程适应数据库更新。开云体育电动老虎机例如,您可以重新运行快照后修改连接器配置向其添加一个表
table.include.list
财产。
当您运行一个增量快照,Debezium每个表的主键,然后将表格分为块的基础上开云体育官方注册网址配置块大小。块的块,然后捕获块中的每个表行。对于每一行,它捕获快照发出读
事件。事件所代表的价值当块的快照开始的行。
快照收益,其他进程的继续访问数据库,可能修改表记录。开云体育电动老虎机反映这种变化,插入
,更新
,或删除
操作是致力于按平常的事务日志。同样,持续Debezium流过程继续检测这些事开云体育官方注册网址件并发出相应的改变事件记录卡夫卡。
在某些情况下,更新
或删除
收到的事件流过程排放的序列。即流过程可能会发出一个事件,修改一个表行之前快照捕获块包含读
事件这一行。当最终发出相应的快照读
行活动,其价值已经取代了。以确保增量快照事件到达的顺序处理正确的逻辑顺序,Debezium采用缓冲方案解决冲突。开云体育官方注册网址只有在快照之间的碰撞事件和事件流解析对卡夫卡Debezium发出一个事件记录。开云体育官方注册网址
协助解决后面到达之间的碰撞读
事件和事件流,修改相同的表行,Debezium雇佣了一个所谓的开云体育官方注册网址快照窗口。快照windows的划定了间隔期间增量快照捕获一个指定表数据块。在一块的快照窗口打开之前,Debezium遵循其一贯的行为和直接从事务日志发出事件下游目标卡开云体育官方注册网址夫卡的话题。但从特定块快照打开,直到关闭,Debezium执行重复数据删除步骤解决之间的碰撞事件具有相同的主键. .开云体育官方注册网址
对于每个数据收集,Debezium发出两种类型的事件,并存储开云体育官方注册网址记录它们在单个目的地卡夫卡的话题。它捕获快照记录直接从表发出读
操作。与此同时,随着用户继续更新记录的数据收集,和事务日志更新以反映每一个提交,Debezium发出开云体育官方注册网址更新
或删除
为每个变更操作。
快照窗口打开,Debezium开始处理一块快照,它提供了快照记录到内开云体育官方注册网址存缓冲区。在快照windows,主键的读
事件缓冲比较传入流的主键事件。如果没有发现匹配,直接发送到卡夫卡流事件记录。如果D开云体育官方注册网址ebezium检测到一个匹配,它丢弃缓冲读
事件,并将流记录写入目标主题,因为流事件逻辑取代静态快照事件。块的快照窗口关闭后,缓冲区只包含读
事件相关的事务日志事件存在。开云体育官方注册网址Debezium发出这些剩余读
事件表的卡夫卡的话题。
连接器为每个快照块重复这个过程。
甲骨文的开云体育官方注册网址Debezium连接器不支持增量快照运行时模式变化。 |
触发一个增量快照
目前,启动增量快照的唯一方法是发送一个特设快照信号源数据库上的信号表。开云体育电动老虎机你提交一个信号信号表的SQL插入
查询。
后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,请求的快照操作运行。
你提交的查询中包含指定表快照,而且,还指定了快照的操作。目前,快照操作的唯一有效的选项是默认值,增量
。
中包括指定表快照,提供一个数据收集
数组列表的表或数组正则表达式用于匹配表,例如,{“数据收集”:["。MyFirstTable”、“public.MySecondTable ")}
的数据收集
数组增量快照信号没有默认值。如果数据收集
数组为空,Debezium检测到开云体育官方注册网址不需要行动,不执行一个快照。
如果一个表的名称,你想要包含在一个快照包含一个点( |
启用信号。
一个信号数据采集存在于源数据库。开云体育电动老虎机
信号数据采集中指定
signal.data.collection
财产。
发出一个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 |
|
指定类型的快照操作运行。 |
2 |
|
指定事件类型。 |
停止一个增量快照
你也可以停止增量快照通过发送一个信号对源数据库表。开云体育电动老虎机你提交一个停止信号表快照通过发送一个SQL插入
查询。后Debez开云体育官方注册网址ium检测信号的变化表,它读取信号,停止增量快照操作如果是在进步。
你提交的查询指定快照的操作增量
,选择当前运行快照的表被删除。
启用信号。
一个信号数据采集存在于源数据库。开云体育电动老虎机
信号数据采集中指定
signal.data.collection
财产。
发出一个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
,类型
,数据
参数对应的信号命令信号表的字段。下表描述了参数的例子:
表4。描述字段的SQL命令发送停止信号到信号表增量快照 项 价值 描述 1
myschema.开云体育官方注册网址debezium_signal
指定完全限定名称的信号在源数据库表。开云体育电动老虎机
2
ad-hoc-1
的
id
参数指定一个任意字符串,指定的id
标识符的请求信号。
使用这个字符串来识别信号表中的日志消息条目。开云体育官方注册网址Debezium不使用这个字符串。3
stop-snapshot
指定
类型
参数指定的操作信号触发。4
数据收集
一个可选的组成部分
数据
领域的一个信号,指定表名数组或正则表达式匹配表名删除快照。
数组列表正则表达式匹配表的完全限定名称,使用相同的格式使用指定连接器的信号表的名称signal.data.collection
配置属性。如果该组件数据
省略字段,那么信号停止整个增量快照的进展。5
增量
一个必需的组成部分
数据
领域的一个信号,表明指定的快照操作停止。
目前,唯一有效的选项增量
。
如果你不指定一个类型
值时,信号无法停止增量快照。
主题名称
默认情况下,甲骨文连接器写更改事件插入
,更新
,删除
操作发生在一个表到一个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解析器处理它们。
默认情况下,连接器使用 您可以修改设置,这样模式的历史主题存储表的不同子集。使用下列方法之一来改变的表集主题商店:
|
当连接器配置为捕获一个表,它存储的历史表的模式变化不仅改变话题,而且在一个内部数据库模式的历史主题。开云体育电动老虎机内部数据库模式的历史主题是开云体育电动老虎机连接器只使用,不用于直接消费应用程序使用。确保应用程序只需要通知关于消费模式变化信息的模式改变话题。 |
没有分区数据库模式的历史主题。开云体育电动老虎机数据库模式的历史开云体育电动老虎机主题功能正确,必须保持一致的全球秩序连接器发出的事件记录。 确保主题不是分配给分区,设置分区数为主题通过使用下列方法之一:
|
模式改变主题消息格式是在酝酿状态和可能变化不另行通知。 |
开云体育官方注册网址Debezium发出一个新的消息这个话题时流数据从一个新表,或者当表的结构改变。
表结构的变化后,你必须遵循的模式演化过程)。 |
下面的示例显示了一个典型的模式改变消息以JSON格式。消息包含一个表模式的逻辑表示。
{"模式":{…},“有效载荷”:{“源”:{“版本”:“2.0.1。最后”、“连接器”:“甲骨文”、“名称”:“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”}]}}]}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 在源对象,ts_ms表示的时间更改到数据库中。开云体育电动老虎机通过比较payload.source的值。ts_ms载荷的值。ts_ms,you can determine the lag between the source database update and Debezium. |
2 |
|
标识包含的数据库和模式的变化。开云体育电动老虎机 |
3 |
|
该字段包含负责模式变化的DDL。 |
4 |
|
一个或多个数组项包含一个DDL命令生成的模式变化。 |
5 |
|
描述的那种变化。的
|
6 |
|
创建的表的完整标识符,修改或删除。对于表重命名,这个标识符是一个连接的 |
7 |
|
代表表元数据应用后改变。 |
8 |
|
列表的列组成表的主键。 |
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_collection
和event_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 "}}
事件缓冲
甲骨文将所有更改写入重做日志在它们发生的顺序,包括更改回滚后丢弃。因此,从单独的事务并发更改交织在一起。当连接器首先读取流的变化,因为它不能立即确定哪些变化提交或回滚,暂时改变事件存储在一个内部缓冲区。改变承诺后,连接器写缓冲区卡夫卡的更改事件。连接器滴改变事件所丢弃的回滚。
您可以配置连接器使用的缓冲机制,通过设置属性log.mining.buffer.type
。
Infinispan
Debe开云体育官方注册网址zium Oracle连接器还可以配置为使用Infinispan缓存提供者,支持缓存存储与嵌入模式同时在本地或远程服务器集群。为了使用Infinispan,log.mining.buffer.type
必须配置使用吗infinispan_embedded
或infinispan_remote
。
为了让灵活性Infinispan缓存配置,连接器预期为其提供一系列的缓存配置属性在使用Infinispan缓冲事件数据。看到配置属性在log.mining.buffer.infinispan.cache
名称空间。这些配置属性的内容取决于连接器是整合与远程Infinispan集群或使用嵌入式引擎。
例如,下面给出了嵌入式事务缓存产权配置看起来像当使用Infinispan在嵌入式模式:
<本地缓存名称= "交易" > <持久性钝化=“false”> <文件存储fetch-state = " true "只读=“false”预加载= " true "共享=“false”分段= = "“false”路径。/数据" / > < /持久性> < /本地缓存>
深入看配置,缓存配置是持久的。所有缓存都应该配置这种方式避免损失的交易事件连接器重启是否正在进行的事务。此外,缓存保存的位置定义的路径
属性,这应该是一个共享位置可访问所有可能的运行时环境。
当提供XML配置一个JSON连接器属性值,必须省略或替换换行符 |
另一个例子,下面的代码展示了相同的缓存配置了一个Infinispan集群:
<分布式缓存name = "交易"统计= " true " > <编码媒体类型= "应用程序/ x-protostream " / > <持久性钝化=“false”> <文件存储fetch-state = " true "只读=“false”预加载= " true "共享=“false”分段= " false " / > < /持久性> < /分布式缓存>
就像嵌入式本地缓存从前面的示例配置,这种配置定义也是持久的。所有缓存都应该配置这种方式避免损失的交易事件连接器重启是否正在进行的事务。
然而,有一些差异与注意。第一,缓存是定义为一个分布式缓存,而不是一个本地缓存。其次,定义缓存使用应用程序/ 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检测表更改并发出更改事件,确保补偿保持同步,甚至可插入数据库中,过程变化很少。开云体育电动老虎机
连接器使用 |
数据更改事件
每个数据更改事件,Oracle连接器发出键和一个值。键和值的结构取决于表更改事件的产生。Debezium如何构造主题名称的信息,请参阅开云体育官方注册网址主题名称。
Debe开云体育官方注册网址zium Oracle连接器确保所有卡夫卡连接模式名是有效Avro模式名。这意味着逻辑服务器名称必须以字母开始字符或下划线([a - z、a - z _])和剩余的字符在逻辑服务器名称和模式和表中所有的人物名称必须是字母数字字符或下划线([a - z、a - z 0 - 9, \ _])。连接器自动替换无效字符下划线字符。 意外的命名冲突可能会导致当多个逻辑服务器之间唯一的区别人物名字,模式名称,或表名是无效的字符,这些字符替换为下划线。 |
开云体育官方注册网址Debezium和卡夫卡连接的设计连续的事件消息流。然而,这些事件的结构可能会随时间改变,可消费者处理困难的话题。促进结构可变的处理事件,每个事件在卡夫卡连接是自包含的。每条消息键和值有两个部分:一个模式和有效载荷。模式描述了结构的负载,而负载包含实际的数据。
执行的变化 |
更改事件的钥匙
对于每个改变表,更改事件等关键结构字段存在主键的每一列(或唯一键约束)的创建表时事件。
例如,一个客户
表中定义库存
开云体育电动老虎机数据库模式,可能有以下改变事件的关键:
创建表的客户(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": "int32", "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.0.1.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模式
之前
和后
字段。
的模式的名称 |
的有效载荷
这个事件的一部分价值提供了关于事件的信息。它描述了创建一行(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”},“源”:{“版本”:“2.0.1。最后”、“名称”:“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”},“后”:空,“源”:{“版本”:“2.0.1。最后”、“名称”:“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)“版本”:“2.0.1。最后”、“连接器”:“甲骨文”、“名称”:“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)“事务”:零}}
项 | 字段名 | 描述 |
---|---|---|
1 |
|
强制性字段描述了事件源的元数据。在一个截断事件的价值,
|
2 |
|
强制性的字符串描述操作的类型。的 |
3 |
|
可选字段显示的时间连接器处理事件。基于系统时钟的时间是在JVM中运行卡夫卡连接任务。 在 |
因为截断事件代表整个表所做的更改,没有消息键,与多个分区的话题,没有保证消费者获得截断事件(事件和变化创建,更新等)为一个表。例如,当消费者从不同的分区读取事件,可能会收到一个更新它接收后事件的表截断事件相同的表。命令可以保证只有一个主题使用单个分区。
如果你不希望捕获截断事件,使用skipped.operations
选择过滤出来。
数据类型的映射
当Debezium开云体育官方注册网址 Oracle连接器检测到的变化的价值表行,它发出一种改变事件代表了变化。每个更改事件记录结构以同样的方式作为原始表,与事件记录包含一个字段为每个列的值。一个表列的数据类型决定了连接器代表改变事件字段的列的值,如表所示在下面几节中。
对于每个表中的列,Debezium源数据类型映射到一个开云体育官方注册网址文字类型在某些情况下,一个语义类型在相应的事件字段。
- 文字类型
-
描述所代表的价值就是,使用下列卡夫卡连接模式类型之一:
INT8
,INT16
,INT32
,INT64
,FLOAT32
,FLOAT64
,布尔
,字符串
,字节
,数组
,地图
,结构体
。 - 语义类型
-
描述如何抓住了卡夫卡连接模式意义的领域,通过使用卡夫卡连接模式的名称。
如果默认数据类型转换不符合你的需要,你可以创建一个自定义转换器连接器。
对于某些Oracle大型对象(CLOB、NCLOB和BLOB)和数值数据类型,您可以操作连接器执行类型映射的方式通过改变默认配置属性设置。为更多的信息关于Debezium属性控制这些数据类型映射,明白开云体育官方注册网址了二进制和字符LOB类型和数值类型。
进一步支持数据类型计划在后续版本。请文件JIRA问题对于任何特定的类型可能失踪。
字符类型
下表描述了连接器地图基本字符类型。
Oracle数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
|
|
n /一个 |
二进制和字符LOB类型
支持 |
下表描述了连接器地图二进制和字符大对象(LOB)数据类型。
Oracle数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
n /一个 |
这个数据类型不支持 |
|
|
原始字节(默认),一个base64编码的字符串,或base64-url-safe-encoded字符串,或hex-encoded字符串,根据 |
|
|
n /一个 |
|
n /一个 |
这个数据类型不支持。 |
|
n /一个 |
这个数据类型不支持。 |
|
|
n /一个 |
|
n /一个 |
这个数据类型不支持。 |
Oracle仅供列值 如果该值 |
数值类型
下表描述了Debezium Oracle连接器地图数字类型。开云体育官方注册网址
您可以修改连接器地图Oracle的方式 |
Oracle数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
n /一个 |
|
|
n /一个 |
|
|
当 当 |
|
|
|
|
|
|
|
|
|
|
|
当 当 |
|
|
当 当 |
|
|
|
|
|
当 当 |
|
|
|
|
|
当 当 |
布尔类型
甲骨文不提供本地支持布尔
数据类型。然而,常见的做法是使用其他数据类型与某些语义来模拟一个逻辑的概念布尔
数据类型。
使你能够将源列转换成布尔数据类型,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数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当time.precision.mode
配置属性设置为连接
,那么连接器使用预定义的卡夫卡连接逻辑类型。这可以有用当消费者只知道内置的卡夫卡连接逻辑类型,无法处理可变精度时间值。因为的精度水平,Oracle支持超过级,卡夫卡的逻辑类型连接的支持,如果你设置time.precision.mode
来连接
,精度的损失结果当精确到小数部分的第二数据库列的值大于3:开云体育电动老虎机
Oracle数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ROWID类型
下表描述了连接器地图ROWID(行地址)数据类型。
Oracle数据类型 | 文字类型(模式类型) | 语义类型(模式名称)和笔记 |
---|---|---|
|
|
这个不支持的数据类型在使用Oracle XStream。 |
|
n /一个 |
这个数据类型不支持。 |
用户定义的类型
甲骨文使您能够定义自定义数据类型提供灵活性当内置的数据类型不满足你的要求。有一些用户定义类型如对象类型,参考数据类型,varray和嵌套表。在这个时候,你不能使用Debezium Oracle连接器与这些用开云体育官方注册网址户定义的类型。
Oracle-supplied类型
Oracle提供基于sql接口,您可以使用它来定义新类型当内置或ANSI-supported类型是不够的。Oracle提供了几种常用的数据类型等一系列广泛的用途任何,XML,或空间类型。这个时候,你不能使用Debezium Oracle与任何这些数据类开云体育官方注册网址型的连接器。
默认值
如果指定一个默认值为一个列在数据库模式,Oracle连接器将试图传播这个值对应的卡夫卡的模式记录字段。开云体育电动老虎机最常见的数据类型的支持,包括:
字符类型(
字符
,NCHAR
,VARCHAR
,VARCHAR2
,NVARCHAR
,NVARCHAR2
)数字类型(
整数
,数字
等)。时间类型(
日期
,时间戳
,时间间隔
等)。
如果一个时间类型使用一个函数调用等TO_TIMESTAMP
或TO_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_ %
。嵌套表
使连接器能够捕获一个表的名称相匹配的任何先前的规则,你必须重命名表。
准备数据库开云体育电动老虎机
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改变数据库;开云体育电动老虎机改变数据库开开云体育电动老虎机放;——现在应该“数据库日志模式:开云体育电动老虎机归档模式”归档日志列表退出;
使Debezium捕开云体育官方注册网址获之前改变数据库行,您还必须启用补充日志开云体育电动老虎机记录为整个数据库表或捕获。下面的例子说明了如何配置补充所有列在一个日志inventory.customers
表。
ALTER TABLE库存。客户一个DD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
启用所有表列的附加日志增加甲骨文的体积重做日志。为了防止过度增长在日志的大小,有选择地应用前面的配置。
最小的补充必须启用日志记录在数据库级别上,可以配置如下。开云体育电动老虎机
修改数据库添开云体育电动老虎机加补充日志数据;
重做日志大小
根据数据库配置,重做日志的大小和数开云体育电动老虎机量可能不足以达到可接受的性能。设置Debezium Oracle连接器之前开云体育官方注册网址,确保重做日志的能力足以支持数据库。开云体育电动老虎机
重做日志的数据库的容量必须足够存储其数据字典。开云体育电动老虎机一般来说,数据字典的大小随数据库中的表和列的数量。开云体育电动老虎机如果重做日志缺乏足够的能力,数据库和Debezium连接器可能会遇到性能问题。开云体育官方注册网址开云体育电动老虎机
咨询您的数据库管理员,以评估是否数据开云体育电动老虎机库可能需要增加日志容量。
为连接器创建用户
Debezium开云体育官方注册网址 Oracle连接器捕捉变化事件,它必须运行Oracle LogMiner特定权限的用户。下面的例子显示了创建一个Oracle SQL用户帐户的连接器在多租户数据库模型。开云体育电动老虎机
连接器捕获数据库变化,是由自己的Oracle用开云体育电动老虎机户帐户。然而,它并不由捕获变化 |
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)退出;
项 | 角色名 | 描述 |
---|---|---|
1 |
创建会话 |
使连接器连接Oracle。 |
2 |
设置容器 |
使连接器之间切换可插入数据库。开云体育电动老虎机这只是Oracle安装容器时需要数据库支持(国开行)启用。开云体育电动老虎机 |
3 |
选择美元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 |
使连接器运行方法 |
14 |
执行DBMS_LOGMNR_D |
使连接器运行方法 |
15日至23日 |
选择V_…美元。 |
使连接器能够读这些表。连接器必须能够阅读关于Oracle重做和归档日志的信息,和当前事务的状态,准备Oracle LogMiner会话。没有这些赠款,连接器不能操作。 |
备用数据库开云体育电动老虎机
Oracle数据库可开云体育电动老虎机以配置一个物理或逻辑备用环境提供失败后恢复生产。这时,Debezium Oracle开云体育官方注册网址连接器不能使用一个物理或逻辑备用数据库事件源的变化。开云体育电动老虎机有一个开放的Jira问题调查这种支持。
故障恢复数据库开云体育电动老虎机
是习惯的逻辑或物理备用存在在Oracle中生产失败。当发生故障时,备用实例晋升为生产,必须开放数据库读/写事务之前Debezium甲骨文连接器可以连接到数据库。开云体育官方注册网址开云体育电动老虎机
对于物理备用,备用的精确复制生产,这意味着SCN值是相同的。当使用一个物理备用,足以重新配置Debezium甲骨文连接器使用的主机名备用数据库是开放的。开云体育官方注册网址开云体育电动老虎机
在一个逻辑备用,备用不是一个确切的生产数据库的副本,所以备用的SCN补偿不同于那些在生产数据库。开云体育电动老虎机如果你使用一个逻辑备用,以帮助确保Debezium不会错过任何改变事件,打开数据库后,配置一个新的连开云体育官方注册网址接器和执行一个新数据库快照。开云体育电动老虎机
部署
部署Debezium O开云体育官方注册网址racle连接器,安装Debezium Oracle连接器存档,配置连接器,并开始通过添加其配置卡夫卡连接连接器。
Oracle数开云体育电动老虎机据库安装,配置为使用Debezium连接器开云体育官方注册网址。
下载Debezium开云体育官方注册网址甲骨文连接器插件存档。
将文件解压缩到卡夫卡连接环境中。
下载对Oracle JDBC驱动程序从Maven中央和提取下载的驱动程序文件包含Debezium Oracle连接器JAR文件的目录。开云体育官方注册网址
添加JAR文件的目录卡夫卡连接的
plugin.path
。重新启动卡夫卡连接过程去接新的JAR文件。
开云体育官方注册网址Debezium甲骨文连接器配置
通常,您注册一个Debezium甲骨文连接器通过提交开云体育官方注册网址一个JSON请求指定连接器的配置属性。下面的例子显示了JSON请求注册的一个实例Debezium甲骨文连接器与逻辑名开云体育官方注册网址server1
在端口1521上:
你可以选择生成事件的一个子集模式和表在数据库中。开云体育电动老虎机可选地,您可以忽略,面具,或包含敏感数据的截断列,超过指定的尺寸,或者你不需要。
{" 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连接到数据库。开云体育电动老虎机
{" 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开云体育官方注册网址连接器,创建一个连接器配置,配置添加到您的卡夫卡连接集群。
Debe开云体育官方注册网址zium Oracle连接器安装。
创建一个配置甲骨文的连接器。
使用卡夫卡REST API连接卡夫卡添加连接器配置连接集群。
连接器启动后,它执行一个一致的快照连接器的Oracle数据库的开云体育电动老虎机配置。连接器然后开始生成数据行级操作的事件和流媒体的改变事件记录卡夫卡的话题。
可插入vs Non-Pluggable数据库开云体育电动老虎机
Oracle数开云体育电动老虎机据库部署支持以下类型:
- 容器数据库(国开行)开云体育电动老虎机
-
一个开云体育电动老虎机数据库可以包含多个可插入数据库(pdb分子)。开云体育电动老虎机数据库客户端连接到每个PDB就好像它是一个标准,non-CDB数据库。
- 非容器数据库(non-CDB开云体育电动老虎机)
-
一个标准的Oracle数据库,不支持开云体育电动老虎机可插入数据库的创建。
{"配置":{“连接器。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的国开行,您必须指定属性的值 |
{"配置":{“连接器。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连接器有许多配置属性,您可以使用它们来实现正确的连接器为您的应用程序的行为。许多属性的默认值。属性信息的组织结构如下:
开云体育电动老虎机数据库模式历史连接器配置属性控制Debezium如何处理事件,开云体育官方注册网址它从数据库中读取模式的历史主题。开云体育电动老虎机
直通数据库驱动程序属性开云体育电动老虎机控制数据库驱动程序的行为。开云体育电动老虎机
需要Debeziu开云体育官方注册网址m甲骨文连接器配置属性
以下配置属性要求除非一个默认值是可用的。
财产 |
默认的 |
描述 |
||
没有默认的 |
独特的连接器的名称。再次尝试注册名称相同的就会失败。(此属性所要求的所有卡夫卡连接连接器)。 |
|||
没有默认的 |
连接器的Java类的名称。总是使用的值 |
|||
没有默认的 |
列举了一个以逗号分隔的符号名称自定义转换器连接器可以使用实例。 对于每一个转换配置连接器,您必须添加一个
例如, 布尔。类型:io.debezium.connector.oracle.converters.NumberOneToBooleanConverter 如果你想进一步控制配置转换器的行为,您可以添加一个或多个配置参数值传递给转换器。把任何额外的配置参数和一个转换器,前缀符号名称的参数名称的转换器。 布尔。选择器:。*MYTABLE.FLAG,.*.IS_ARCHIVED |
|||
|
的最大数量为这个连接器创建任务。甲骨文连接器总是使用一个单一的任务,因此不使用这个值,所以默认总是可以接受的。 |
|||
没有默认的 |
Oracle数据库服务器的IP地址或主机名。开云体育电动老虎机 |
|||
没有默认的 |
整数Oracle数据库服务器的端口号。开云体育电动老虎机 |
|||
没有默认的 |
Oracle用户帐户的名称,连接器使用连接Oracle数据库服务器。开云体育电动老虎机 |
|||
没有默认的 |
连接时使用的密码到Oracle数据库服务器。开云体育电动老虎机 |
|||
没有默认的 |
数据库连接的名称。开云体育电动老虎机必须在国开行国开行的名字在处理+ PDB模型。 |
|||
没有默认的 |
指定的原始数据库的JDBC URL。开云体育电动老虎机使用这个属性来提供灵活性在定义数据库连接。开云体育电动老虎机有效值包括原始TNS名称和RAC连接字符串。 |
|||
没有默认的 |
Oracle可插入数据库连接的名称。开云体育电动老虎机使用这个属性数据库与容器(国开行)安装。开云体育电动老虎机 |
|||
没有默认的 |
主题为Oracle数据库服务器,它提供了一个名称空间前缀的连接器捕捉变化。开云体育电动老虎机你设置的值是所有卡夫卡主题名称作为前缀连接器发出。指定一个主题前缀是独特的在所有连接器Debezium环境中。开云体育官方注册网址以下字符是有效的:字母数字字符,连字符,点,和下划线。
|
|||
|
连接器使用的适配器实现流数据库更改。开云体育电动老虎机你可以设置以下值: |
|||
最初的 |
指定连接器使用的模式,采取了表的快照。你可以设置以下值:
快照完成后,连接器继续从数据库读取改变事件的重做日志时除外开云体育电动老虎机 有关更多信息,请参见表 |
|||
共享 |
控制是否和连接器多久持有表锁定。表锁防止某些类型的变化表操作发生在连接器执行一个快照。你可以设置以下值:
|
|||
所有表中指定 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称( 匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|||
没有默认的 |
指定的表行包括一个快照。使用属性如果你想要一个快照包含只有一个子集的一个表中的记录。这个属性只影响快照。它不适用于事件连接器读取的日志。 属性包含一个以逗号分隔的完全限定表名的形式 从一个 “snapshot.select.statement。覆盖”:“客户。订单", "snapshot.select.statement.overrides.customer.orders": "SELECT * FROM [customers].[orders] WHERE delete_flag = 0 ORDER BY id DESC" 在生成的快照,连接器只包含的记录 |
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配的模式的名称想要捕捉变化。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。不包括在任何模式名称 匹配一个模式的名字,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的模式名称;它不可能出现在一个模式匹配的子字符串的名字。 |
|||
|
布尔值,用于指定连接器是否应该解析和发布元数据表和列评论对象。启用此选项将内存使用情况的影响。逻辑模式对象的数量和大小是主要影响有多少内存消耗的Debezium连接器,并将潜在的巨大的字符串数据添加到他们每个人可能相当昂贵。开云体育官方注册网址 |
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配的模式的名称不希望捕获的变化。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。 匹配一个模式的名字,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串的模式名称;它不可能出现在一个模式匹配的子字符串的名字。 |
|||
没有默认的 |
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表被捕获。如果你使用LogMiner实现,只使用POSIX正则表达式与这个属性。设置此属性时,连接器捕捉变化只从指定的表。每个表标识符使用以下格式: 匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|||
没有默认的 |
一个可选的以逗号分隔的正则表达式匹配完全限定表标识符表被排除在监视。如果你使用LogMiner实现,只使用POSIX正则表达式与这个属性。连接器捕捉更改事件从任何表,并不排除列表中指定的。为每个表指定标识符使用以下格式: 匹配一个表的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个字符串表的名称;可能存在不匹配的子字符串表中的名称。 |
|||
没有默认的 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称列想要包含在改变事件消息的值。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。完全限定名称列使用以下格式: 匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个名称字符串列的子字符串不匹配可能出现在一个列名。 |
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配的完全限定名称列要从改变排除事件消息值。在环境使用LogMiner实现中,您必须使用POSIX正则表达式。完全限定列名使用以下格式: 匹配一个列的名称,Debezium适用于您指定的正则表达式开云体育官方注册网址锚定正则表达式。即指定表达式匹配整个名称字符串列的子字符串不匹配可能出现在一个列名。 |
|||
n /一个 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。完全限定名称列的形式 一个假名由散列值指定应用的结果hashAlgorithm和盐。基于所使用的哈希函数,引用完整性维护,当列值替换为假名。支持哈希函数的描述MessageDigest节Java加密体系结构标准算法名称的文档。 column.mask.hash.sha with.salt——256.。CzQMA0cB5K = inventory.orders。customerName, inventory.shipment.customerName 如果有必要,笔名是自动缩短列的长度。连接器配置可以包括多个属性,指定不同的哈希算法和盐。 |
|||
字节 |
指定二进制( |
|||
没有一个 |
指定应该如何调整的兼容模式名消息转换器使用的连接器。可能的设置:
|
|||
|
指定连接器应如何处理浮点值
|
|||
|
指定连接器应如何处理的值 |
|||
|
指定连接器应该如何应对异常事件的处理过程中。你可以设置以下选项之一:
|
|||
|
一个正整数的值指定的最大大小事件的每一批在每个迭代过程的连接器。 |
|||
|
正整数的值指定了阻塞队列的最大记录数所能容纳的量。当Debe开云体育官方注册网址zium从数据库读取事件流,它将事件阻塞队列之前写卡夫卡。开云体育电动老虎机阅读改变事件的阻塞队列可以提供反压力的情况下从数据库连接器吸入消息的速度比它可以编写卡夫卡,或者当卡夫卡变得不可用。开云体育电动老虎机事件队列连接器时忽视举行定期记录偏移量。总是设置的值 |
|||
|
一个长整型值,指定字节的阻塞队列的最大体积。默认情况下,体积限制不指定阻塞队列。指定的字节数,队列可以消费,将此属性设置为一个积极的长期价值。 |
|||
|
正整数的值指定的毫秒数连接器应该在每个迭代中等待新的更改事件出现。 |
|||
|
控制是否删除事件是紧随其后的是一个墓碑上的事件。下面的值:
源记录被删除后,墓碑事件(默认行为)使卡夫卡完全删除所有事件共享的关键主题中删除行日志压实启用。 |
|||
没有默认的 |
的表达式列表指定连接器使用的列表单自定义消息键改变事件记录,发布卡夫卡指定表的主题。 默认情况下,Debezi开云体育官方注册网址um使用一个表的主键列,它发出的消息键记录。的默认值,或指定一个关键对于缺乏一个主键的表,您可以配置自定义消息键基于一个或多个列。 |
|||
没有默认的 |
一个可选,以逗号分隔的正则表达式匹配的完全限定名称基于字符的列。设置该属性如果你希望连接器面具的一组列的值,例如,如果他们包含敏感数据。集 的完全限定名称列观察下列格式: 您可以指定多个属性具有不同的长度在一个配置。 |
|||
没有默认的 |
一个可选的以逗号分隔的正则表达式的掩蔽列名改变事件消息用星号代替字符( |
|||
没有默认的 |
可选,以逗号分隔的正则表达式匹配列,您想要的完全限定名称连接器排放额外参数代表列元数据。设置此属性时,连接器将以下字段添加到事件记录的模式:
这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。 的完全限定名称列观察下列格式: |
|||
没有默认的 |
可选,以逗号分隔的正则表达式,指定完全限定名称列的数据类型定义的一个数据库。开云体育电动老虎机当这个属性设置,对于匹配的数据类型的列,连接器发出事件记录在他们的模式包括以下额外的字段:
这些参数传递一个列的原始类型名称和长度(不同宽度的类型),分别。 的完全限定名称列观察下列格式: oracle数据类型名称的列表,请参阅Oracle数据类型映射。 |
|||
|
以毫秒为单位指定,连接器的频率发送消息到心跳的主题。 |
|||
没有默认的 |
指定一个查询时,连接器在源数据库上执行连接器发送心跳消息。开云体育电动老虎机 设置该属性,创建一个心跳表接收心跳消息解决的情况开云体育官方注册网址Debezium未能同步补偿低流量数据库在同一主机上作为一个高流量的数据库开云体育电动老虎机。连接器后将记录插入到配置表,它能够接收从低流量数据库并承认SCN变化在数据库中,以便补偿同步代理。开云体育电动老虎机 |
|||
没有默认的 |
以毫秒为单位指定一个时间间隔,连接器等后它开始之前需要一个快照。 |
|||
|
指定的最大行数应该读入一个从每个表而拍摄快照。连接器读取表内容在多个批次的指定的大小。 |
|||
没有默认的 |
指定的行数,将每个数据库获取给定查询的往返。开云体育电动老虎机默认为JDBC驱动程序的默认获取大小。 |
|||
|
指定字段名是否规范化遵守Avro命名要求。有关更多信息,请参见Avro命名。 |
|||
|
将属性设置为 看到事务的元数据额外的细节。 |
|||
|
指定了矿业战略控制甲骨文LogMiner构建和使用一个给定的数据字典解决表和列id的名称。 |
|||
|
缓冲式控制连接器如何管理缓冲事务数据。 + |
|||
|
事件的最大数量事务能够在事务缓冲区。交易与事件数超过这个阈值不会被发送,并将被放弃。默认行为是没有事务事件的阈值。 |
|||
没有默认的 |
Infinispan的XML配置事务缓存。有关更多信息,请参见Infinispan事件缓冲。 |
|||
没有默认的 |
Infinispan事件的XML配置缓存。有关更多信息,请参见Infinispan事件缓冲。 |
|||
没有默认的 |
Infinispan事务处理的XML配置缓存。有关更多信息,请参见Infinispan事件缓冲。 |
|||
没有默认的 |
Infinispan模式变化的XML配置缓存。 |
|||
|
指定缓冲国是否删除连接器后停止在一个优雅的,预期的方式。 |
|||
|
LogMiner会话的最大的毫秒数可以活跃之前使用一个新的会话。 |
|||
|
最小SCN间隔大小这个连接器试图从重新读取/归档日志。活跃批大小也增加/减少的金额调优连接器吞吐量。 |
|||
|
时这个连接器使用的最大SCN间隔大小阅读来自重做/归档日志。 |
|||
|
开始SCN间隔大小的连接器使用重做/归档日志读取数据。 |
|||
|
最少的时间连接器睡读取数据后重做/归档日志并再次开始读取数据。值以毫秒为单位。 |
|||
|
连接器的最大时间生病睡后重做/归档日志读取数据并再次开始读取数据。值以毫秒为单位。 |
|||
|
开始的时间从重新读取数据后,连接器睡/归档日志并再次开始读取数据。值以毫秒为单位。 |
|||
|
最大的时间连接器使用向上或向下调整的最佳睡眠时间从logminer读取数据的时候。值以毫秒为单位。 |
|||
|
的小时数在过去我从SYSDATE归档日志。当默认设置( |
|||
|
控制连接器矿山是否变化从归档日志或联机重做日志和归档日志(默认)。 |
|||
|
连接器的毫秒数将睡在轮询之间确定起动系统改变数字归档日志。如果 |
|||
|
正整数的值指定的时间重做日志开关之间保持长期运行的事务。当设置为 LogMiner适配器保持一个内存中的缓冲区的所有正在运行的事务。因为所有的DML操作事务的一部分是缓冲,直到检测到提交或回滚时,应避免长期运行的事务,以不溢出缓冲区。任何交易,超过了这个配置的值是完全丢弃,和连接器不发出任何消息的业务事务的一部分。虽然这个选项允许的行为被配置在个案基础上,我们计划加强这种行为在将来的版本中添加一个可伸缩的事务缓冲区,(见dbz - 3123)。 |
|||
没有默认的 |
指定配置Oracle存档与LogMiner目的地挖掘时使用归档日志。 |
|||
没有默认的 |
列表的数据库用户开云体育电动老虎机排除LogMiner查询。它可以有用的设置这个属性如果你想捕获过程总是排除特定用户做出的更改。 |
|||
|
指定一个值,连接器比较当前和以前的视交叉上核值之间的差异来确定一个视交叉上核存在的差距。如果视交叉上核之间的差异值大于指定值,和时差小于 |
|||
|
指定一个值,以毫秒为单位,连接器比较当前和以前的SCN时间戳之间的差异来确定一个视交叉上核存在的差距。如果时间戳之间的差异小于指定值,和视交叉上核三角洲大于 |
|||
|
控制是否大对象(CLOB或BLOB)列值在更改事件发出。 |
|||
|
指定连接器提供的常数表明原始值不变,而不是提供的数据库。开云体育电动老虎机 |
|||
没有默认的 |
一个以逗号分隔的甲骨文真正的应用程序集群(RAC)节点的主机名或地址。这个领域需要启用兼容Oracle RAC部署。 指定RAC节点的列表通过使用下列方法之一:
如果你提供一个原始数据库的JDBC URL使用开云体育电动老虎机 |
|||
没有默认的 |
一个以逗号分隔的操作类型,你想要的连接器在流跳过。您可以配置连接器跳过以下类型的操作:
默认情况下,只有截断操作跳过。 |
|||
没有默认值 |
完全限定的名称用于发送的数据收集信号连接器。当你使用这个属性与Oracle可插入数据库(PDB),将其值设置为根的数据库的名称。开云体育电动老虎机 |
|||
|
的最大行数连接器存取和读取到内存块在增量快照。增加块大小提供了更高的效率,因为快照少运行快照查询一个更大的规模。然而,更大的块的大小也需要更多的内存缓冲区快照数据。调整块大小的值提供了最佳的性能在您的环境中。 |
|||
|
TopicNamingStrategy类的名称应该用于确定数据的主题名称变化,模式改变,交易,心跳事件等,默认 |
|||
|
为主题名称指定分隔符,违约 |
|||
|
大小用于举办的主题名称有界并发散列映射。这个缓存将有助于确定主题名称对应于给定的数据收集。 |
|||
|
控件的名称连接器发送心跳消息的主题。主题名称有这种模式: |
|||
|
控制主题的连接器的名称发送交易信息的元数据。主题名称有这种模式: |
开云体育官方注册网址Debezium甲骨文连接器配置属性数据库模式历史开云体育电动老虎机
开云体育官方注册网址Debezium提供了一组schema.history.internal。*
属性控制连接器与模式交互历史话题。
下表描述了schema.history.internal
属性配置Debezium连接器。开云体育官方注册网址
财产 | 默认的 | 描述 |
---|---|---|
没有默认的 |
连接器的卡夫卡主题的全称存储数据库模式的历史。开云体育电动老虎机 |
|
没有默认的 |
一个主机/端口对列表,建立一个初始的连接器使用连接到卡夫卡集群。这个连接是用于检索以前存储的数据库模式历史连接器,写作和每个DDL语句从源数据库读取。开云体育电动老虎机每一对应该指向同一个卡夫卡集群卡夫卡所使用的连接过程。 |
|
|
一个整数值,它指定的最大数量毫秒连接器应该等待在启动/恢复,同时为持久化数据轮询。默认是100 ms。 |
|
|
一个整数值,它指定的最大数量毫秒连接器应该等待获取集群信息使用卡夫卡管理客户机。 |
|
|
一个整数值,它指定的最大数量毫秒连接器应该等待使用卡夫卡管理客户机创建卡夫卡的历史主题。 |
|
|
连接器的最大次数应该尝试读取保存历史数据连接器之前恢复失败的错误。最大的时间等待后没有数据 |
|
|
一个布尔值,用于指定连接器是否应该忽略畸形或未知的数据库语句或停止处理,所以人类可以解决这个问题。开云体育电动老虎机安全默认是 |
|
|
一个布尔值,用于指定连接器是否应该记录所有DDL语句
安全默认是 |
开云体育官方注册网址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甲骨文连接器直通数据库驱动程序的配置属性开云体育电动老虎机
Debe开云体育官方注册网址zium连接器提供了直通数据库驱动程序的配置。开云体育电动老虎机直通数据库属性从前缀开始开云体育电动老虎机司机。*
。例如,连接器传递属性等driver.foobar = false
JDBC URL。
一样的直通属性数据库模式历史客户开云体育电动老虎机之前开云体育官方注册网址,Debezium带前缀的属性将它们传递到数据库驱动程序。开云体育电动老虎机
监控
Debe开云体育官方注册网址zium Oracle连接器提供了三种指标除了内置支持JMX标准Apache管理员,Apache卡夫卡,卡夫卡连接。
请参考监控文档对如何通过JMX公开这些指标的细节。
快照指标
的MBean是开云体育官方注册网址debezium.oracle: type = connector-metrics上下文=快照,server =< oracle.server.name >
。
快照指标并非暴露,除非一个快照操作被激活时,或者如果发生自上次快照连接器的开始。
下表列出了shapshot指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
读过的最后一个快照事件连接器。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
这个连接器的事件总数已经从去年开始或重置。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的快照和主卡夫卡连接循环。 |
|
|
表的总数被包含在快照。 |
|
|
表的数量尚未复制快照。 |
|
|
快照是否开始。 |
|
|
快照是否停了下来。 |
|
|
快照是否中止。 |
|
|
快照是否完成。 |
|
|
总秒数,快照到目前为止,即使不完整。也包括时间快照时停了下来。 |
|
|
总秒数,快照是暂停。如果快照停了好几次,暂停时间增加。 |
|
|
地图包含扫描的行数为每个表的快照。表在处理过程中也逐渐被添加到地图。更新一个表扫描并完成每10000行。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
连接器还提供了以下额外的快照指标执行增量快照时:
属性 | 类型 | 描述 |
---|---|---|
|
当前的快照数据块的标识符。 |
|
|
下界的主键设置定义当前块。 |
|
|
主键的上限设置定义当前块。 |
|
|
下界的当前快照的表的主键设置。 |
|
|
主键的上界的当前快照表。 |
流指标
的MBean是开云体育官方注册网址debezium.oracle: type = connector-metrics、上下文=流媒体服务器=< oracle.server.name >
。
下表列出了流指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
过去的流事件连接器已经阅读。 |
|
|
连接器以来的毫秒数读取和处理最近的事件。 |
|
|
事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
创建事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
更新事件的总数,这个连接器以来最后复位启动或指标。 |
|
|
删除事件,该连接器的总数已经重置自上次启动或指标。 |
|
|
事件的数量已经被包括/排除列表过滤规则过滤配置连接器。 |
|
|
表的列表被连接器。 |
|
|
队列长度之间的拖缆和主要用来传递事件卡夫卡连接循环。 |
|
|
队列的自由能力用来传递事件之间的拖缆和主卡夫卡连接循环。 |
|
|
国旗,表示连接器是否正在连接到数据库服务器。开云体育电动老虎机 |
|
|
的毫秒数去年更改事件的时间戳和连接器之间的处理它。值将会把机器上的任何差异时钟运行数据库服务器和连接器。开云体育电动老虎机 |
|
|
处理事务的数量。 |
|
|
去年收到事件的坐标。 |
|
|
事务标识符的处理事务。 |
|
|
的最大缓冲区队列以字节为单位。这个指标是可用的 |
|
|
当前的体积,以字节为单位,记录在队列中。 |
Debe开云体育官方注册网址zium Oracle连接器还提供以下额外流指标:
属性 | 类型 | 描述 |
---|---|---|
|
最近的系统变更数量已经处理。 |
|
|
最古老的系统变更数量事务缓冲区。 |
|
|
最后提交的系统变化从事务缓冲区数目。 |
|
|
该系统改变目前写入连接器数量的补偿。 |
|
|
数组的日志文件,目前已被敌军布上了地雷。 |
|
|
对任何指定的最小数量的日志LogMiner会话。 |
|
|
日志的最大数量为任何指定LogMiner会话。 |
|
|
数组的每个开采的当前状态日志文件的格式 |
|
|
数据库的次数进行了最后一天的日志开关。开云体育电动老虎机 |
|
|
DML操作时观察到的数量在过去LogMiner会话查询。 |
|
|
DML操作时观察到的最大数量在处理单个LogMiner会话查询。 |
|
|
DML操作的总数。 |
|
|
的总数LogMiner会话查询(又名批次)。 |
|
|
去年LogMiner会话查询获取的持续时间,以毫秒为单位。 |
|
|
任何LogMiner会话的最大持续时间查询的获取,以毫秒为单位。 |
|
|
期间处理最后LogMiner查询批处理结果,以毫秒为单位。 |
|
|
时间以毫秒为单位用来解析DML SQL语句。 |
|
|
时间以毫秒为单位开始最后LogMiner会话。 |
|
|
最长持续时间以毫秒为单位开始LogMiner会话。 |
|
|
花费的总时间以毫秒为单位的连接器LogMiner开始会话。 |
|
|
最小时间以毫秒为单位花了从单个LogMiner会话处理结果。 |
|
|
最大持续时间以毫秒为单位在处理结果从一个LogMiner会话。 |
|
|
花费的总时间以毫秒为单位处理结果LogMiner会话。 |
|
|
花费的总时间以毫秒为单位的JDBC驱动程序获取下一行从日志挖掘视图处理。 |
|
|
行处理的总数从日志挖掘视图在所有会话。 |
|
|
获取的条目数量的日志挖掘每个数据库查询往返。开云体育电动老虎机 |
|
|
连接器的毫秒数睡觉之前获取另一批日志挖掘的结果视图。 |
|
|
的最大行数/秒处理从日志挖掘视图。 |
|
|
平均每秒处理的行数从日志挖掘。 |
|
|
平均每秒处理的行数为最后一批从日志挖掘视图。 |
|
|
检测到连接的数量问题。 |
|
|
的小时数事务是由连接器的内存缓冲区保留在丢弃之前没有提交或回滚。看到 |
|
|
当前活动事务的事务数量的缓冲区。 |
|
|
已提交的事务的事务缓冲区的数量。 |
|
|
交易的数量被丢弃,因为它们的大小超过了 |
|
|
回滚事务的事务数量的缓冲区。 |
|
|
每秒的平均数量已提交事务的事务缓冲区。 |
|
|
注册事务缓冲区的DML操作。 |
|
|
时差在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。 |
|
|
最长时间的区别在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。 |
|
|
最小时差在毫秒之间的变化发生在事务日志,当其添加到事务缓冲区。 |
|
|
最近的废弃的事务标识符数组从事务缓冲区中删除由于他们的年龄。看到 |
|
|
一组最近事务标识符已开采和回滚事务的缓冲区。 |
|
|
最后提交事务缓冲区操作的持续时间,以毫秒为单位。 |
|
|
持续时间最长的事务缓冲区提交操作,以毫秒为单位。 |
|
|
检测到错误的数量。 |
|
|
检测到的警告。 |
|
|
的次数,系统变化的数字是检查发展和保持不变。高价值可以表明一个长期运行的事务正在进行,防止连接器冲洗最近处理的系统数量更改为连接器的补偿。条件最优时,该值应接近或等于 |
|
|
DDL记录的数量,已发现但不能解析器解析的DDL。这应该是 |
|
|
当前全球区域矿业会话的用户(佐治亚大学)字节的内存消耗。 |
|
|
全球面积最大的矿业会议的用户(佐治亚大学)各字节的内存消耗所有矿业会议。 |
|
|
当前全球区域矿业会话的过程(PGA)字节的内存消耗。 |
|
|
最大的矿业会议流程的全球区域(PGA)各字节的内存消耗所有矿业会议。 |
模式历史指标
的MBean是开云体育官方注册网址debezium.oracle: type = connector-metrics、上下文= schema-history服务器=< oracle.server.name >
。
下表列出了模式历史指标可用。
属性 | 类型 | 描述 |
---|---|---|
|
之一 |
|
|
时间在时代秒复苏已经开始。 |
|
|
的数量变化,阅读在复苏阶段。 |
|
|
模式变化的总数在复苏和运行时应用。 |
|
|
后经过的毫秒数,最后从历史存储变化是恢复。 |
|
|
后经过的毫秒数,最后应用改变。 |
|
|
最后变化的字符串表示从历史存储中恢复过来。 |
|
|
最后应用变化的字符串表示。 |
代理模式演化
甲骨文连接器自动跟踪表模式更改应用通过解析重做日志的DDL。如果DDL解析器遇到一个不兼容的声明,如果需要,连接器提供了一个替代方法应用模式的变化。
默认情况下,连接器停止当它遇到一个DDL语句无法解析。您可以使用Debeziu开云体育官方注册网址m信号触发更新的数据库模式这样的DDL语句。开云体育电动老虎机
更新行动的类型模式模式变化
。这一行动更新模式枚举所有表的信号参数。不包含更新的消息模式。相反,它包含完整的新模式结构。
的名字 | 描述 |
---|---|
|
Oracle数据库的名称。开云体育电动老虎机 |
|
变化在哪里应用模式的名称。 |
|
一个数组,其中包含所请求的模式更新。 |
|
型模式的改变,通常 |
|
表的完全限定名称 |
|
表的完全限定名称 |
|
使用的字符集名称如果不同于数据库表的违约开云体育电动老虎机 |
|
数组的名字组合主键列 |
|
数组的列元数据 |
|
列的名称 |
|
JDBC类型的列定义JDBC API |
|
列类型的名称 |
|
完整的列类型定义 |
|
列如果不同于默认的字符集 |
|
列的长度/尺寸约束 |
|
数字列的规模 |
|
表中列的位置开始 |
|
布尔 |
|
布尔 |
|
布尔 |
后模式变化
信号插入连接器必须重新启动修改配置,包括指定schema.history.internal.skip.unparseable.ddl
选择真正的
。连接器的提交后视交叉上核进展超出了DDL变化,防止意外跳过unparseable DDL语句,返回连接器配置到其之前的状态。
列 | 价值 |
---|---|
id |
|
类型 |
|
数据 |
|
xstream支持
Debe开云体育官方注册网址zium Oracle连接器在默认情况下使用本机Oracle LogMiner摄食变化。连接器可以连接使用Oracle XStream代替。配置连接器使用Oracle XStream,你必须申请特定数据库和连接器配置,不同于那些你LogMiner使用。开云体育电动老虎机
使用XStream API,您必须有一个许可证GoldenGate产品。安装GoldenGate不是必需的。
准备数据库开云体育电动老虎机
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连接器要求建立与特定的用户账户权限,连接器可以捕捉更改事件。以下简要介绍这些用户配置使用多租户数据库模型。开云体育电动老虎机
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 = >真的,容器= > '所有');结束;/退出;
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):
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出站服务器捕捉变化从一个可插入数据库,开云体育电动老虎机 |
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即时客户端和提取所需的文件。
从一个浏览器,下载Oracle即时客户端包为您的操作系统。
提取档案,然后打开
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
复制
ojdbc8.jar
和xstreams.jar
文件,并将它们添加到< kafka_home >/ libs
例如,目录卡夫卡/ libs
。创建一个环境变量,
LD_LIBRARY_PATH
,并将其值设置为即时客户目录的路径,例如:LD_LIBRARY_PATH = /道路/ / instant_client /
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起始位置时连接器使用捕捉变化。找出主题的名称包含连接器补偿。这是基于值设置为配置
offset.storage.topic
配置属性。找到最后一个抵消连接器,在它的关键是存储和识别分区用于存储偏移量。这可以通过使用
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
最后抵消后的内容是关键。回到前一个抵消连接器应该停止,必须发出以下命令:
回声”(“inventory-connector”{“服务器”:“server1”}] |{“视交叉上核”:“3245675000”,“commit_scn”:“324567500”}”| \ localhost kafkacat - p - b - t my_connect_offsets - k \ | - p 11
这个写入分区
11
的my_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过程。 - 为什么要更改系统或系统用户不捕获?
-
Oracle数据库使用开云体育电动老虎机
SYS
和系统
用户帐户来执行大量的内部操作的重做日志对变化数据捕获并不重要。当Debezium开云体育官方注册网址甲骨文连接器从Oracle LogMiner读取的变化,改变了这两个用户帐户自动过滤掉。如果你使用这两个用户帐户和没有看到变化的事件,这就是为什么更改的用户不捕获。你应该使用一个指定的非系统的用户帐户来执行所有更改你想被捕获。 - 为什么连接器似乎停止捕捉变化对AWS ?
-
由于350秒的固定闲置超时AWS网关负载均衡器JDBC调用,需要超过350秒完成可以挂下去。
在调用Oracle LogMiner API的情况下需要超过350秒才能完成,可以触发一个超时,导致AWS网关负载平衡器悬挂。例如,这种超时可能发生当一个LogMiner会话同时处理大量数据的运行与甲骨文的周期性的检查点的任务。
防止超时发生在AWS网关负载均衡器,使点火电极数据包从卡夫卡连接或Debezium服务器环境中,通过执行下列任务作为根用户或超级用户环境中主机连接器:开云体育官方注册网址
从一个终端,运行以下命令:
sysctl - w net.ipv4.tcp_keepalive_time = 60
编辑
/etc/sysctl.conf
并设置以下变量的值如下所示:net.ipv4.tcp_keepalive_time = 60
重新配置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.mode
来schema_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问题与细节表映射,与其他相关父表,等解决方案,包括/排除配置选项可以调整,以防止连接器访问这些表。