您正在查看过时的Debezium版本的文档。开云体育官方注册网址
如果您想查看本页最新的稳定版本,请前往在这里

开云体育官方注册网址Debezium连接器用于Oracle

该连接器目前处于孵化状态,即准确的语义,配置选项等可能会根据我们收到的反馈在未来的修订中改变。如果您遇到任何问题,请告诉我们。

开云体育官方注册网址Debezium的Oracle Connector可以监视和记录Oracle服务器上数据库中的所有行级更改。开云体育电动老虎机最值得注意的是,连接器还不支持更改捕获表的结构(例如。ALTER TABLE……)在初始快照完成后(请参阅dbz - 718).不过,它支持在连接器运行时捕获新添加的表(前提是新表的名称与连接器的筛选器配置匹配)。

概述

开云体育官方注册网址Debezium从Oracle中使用XStream API.为了使用这个API和连接器,您需要拥有GoldenGate产品的许可证(尽管并不要求安装GoldenGate本身)。我们目前正在探索在未来的Debezium版本中使用XStream的替代方案,例如基于LogMiner和/或替代解决方案。开云体育官方注册网址请追踪dbz - 137如果您知道从Oracle获取变更事件的其他潜在方法,请加入讨论。

安装Oracle

需要执行以下步骤来准备数据库,以便可以使用Debezium连接器。开云体育官方注册网址开云体育电动老虎机这假设多租户配置(具有容器数据库和至少一个可插拔数据库);开云体育电动老虎机如果您不使用此模型,请相应地调整步骤。

你可以在目录中找到在虚拟机中设置Oracle的模板(通过Vagrant)oracle-vagrant-box /存储库。

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

启用GoldenGate复制和归档日志模式:

ORACLE_SID=ORCLCDB dbz_oracle sqlplus /nolog CONNECT sys/top_secret AS SYSDBA alter system set db_recovery_file_dest_size = 5G;修改system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;Alter system set enable_goldengate_replication=true;立即关闭数据库启动;开云体育电动老虎机打开数据库开云体育电动老虎机——应该显示“数据库日志模式:存开云体育电动老虎机档模式”存档日志列表退出;

此外,为了捕获之前更改行的状态,必须为捕获的表或数据库启用补充日志记录。开云体育电动老虎机例如,对于一个特定的表:

更改表库存。客户ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

为连接器创建一个XStream管理用户和用户

在容器数据库中创建一个XStream管理用户(根据Oracle的建议来管理XStream):开云体育电动老虎机

/opt/oracle/oradata/ORCLCDB/xstream_adm_tbs. sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba CREATE TABLESPACE xstream_adm_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/xstream_adm_tbs. sqldbf的大小25M重用自动扩展MAXSIZE无限制;退出;
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/xstream_adm_tbs DATAFILE . sqlplus sys/top_secret@//localhost:1521/ORCLPDB1 as sysdba CREATE TABLESPACE xstream_adm_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/xstream_adm_tbs. sqldbf的大小25M重用自动扩展MAXSIZE无限制;退出;
sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba CREATE USER c##xstrmadmin IDENTIFIED BY xsa DEFAULT TABLESPACE xstream_adm_tbs QUOTA UNLIMITED ON xstream_adm_tbs CONTAINER=ALL;授权创建会话,设置容器为c##xstrmadmin CONTAINER=ALL;DBMS_XSTREAM_AUTH开始。GRANT_ADMIN_PRIVILEGE(grantee => 'c##xstrmadmin', privilege_type => 'CAPTURE', grant_select_privileges => TRUE, container => 'ALL');结束;/退出;

创建XStream用户(Debezium连接器用于连接到XStre开云体育官方注册网址am出站服务器):

/opt/oracle/oradata/ORCLCDB/xstream_tbs. sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba CREATE TABLESPACE xstream_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/xstream_tbs. sqldbf的大小25M重用自动扩展MAXSIZE无限制;退出;
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/xstream_tbs DATAFILE . sqlplus sys/ top_secrets @//localhost:1521/ORCLPDB1 as sysdba CREATE TABLESPACE xstream_tbs DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/xstream_tbs. sqldbf的大小25M重用自动扩展MAXSIZE无限制;退出;
sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba CREATE USER c##xstrm IDENTIFIED BY xs DEFAULT TABLESPACE xstream_tbs QUOTA UNLIMITED ON xstream_tbs CONTAINER=ALL;授予c##xstrm CONTAINER=ALL创建会话权限;授予c##xstrm CONTAINER=ALL;授予V_$DATABASE的SELEC开云体育电动老虎机T权限给c##xstrm CONTAINER=ALL;给c##xstrm CONTAINER=ALL回闪任意表;退出;

创建一个XStream出站服务器

创建一个出站服务器(给定正确的特权,这可能由连接器自动完成,参见dbz - 721):

sqlplus c##xstrmadmin/xsa@//localhost:1521/ORCLCDB声明表dbms_utilities . uncl_array;模式DBMS_UTILITY.UNCL_ARRAY;开始表(1):= NULL;schema (1):= 'd开云体育官方注册网址ebezium';DBMS_XSTREAM_ADM。CREATE_OUTBOUND(server_name => 'dbzxout', table_names =>表,schema_names => schema);结束;/退出;

修改XStream出站服务器以允许xstrm用户连接到它:

sqlplus sys/top_secret@//localhost:1521/ORCLCDB as sysdba BEGIN DBMS_XSTREAM_ADM. sqlALTER_OUTBOUND(server_name => 'dbzxout', connect_user => 'c##xstrm');结束;/退出;

注意,给定的出站服务器不能同时被多个连接器实例使用。如果希望设置Debezium Oracle连接器的多个实例,则每个实例都需要一个特定的XStre开云体育官方注册网址amOutbound服务器。

支持配置

到目前为止,连接器已经使用可插入数据库设置(CDB/PDB模型)进行了测试。开云体育电动老虎机它应该监视该模型中的单个PDB。它也应该与传统的(非cdb)设置一起工作,尽管到目前为止还不能测试这一点。

Oracle连接器如何工作

开云体育电动老虎机数据库架构历史记录

tbd。

快照

大多数Oracle服务器都被配置为不在重做日志中保留数据库的完整历史,因此Debezium Oracle连接器将无法通过简单地读取日志来查看数据库的完整历开云体育电动老虎机史。开云体育官方注册网址因此,默认情况下(快照模式最初的)连接器将在第一次启动时执行初始化一致的快照数据库(意味着开云体育电动老虎机根据连接器的筛选器配置捕获的任何表中的结构和数据)。

每个快照由以下步骤组成:

  1. 确定要捕获的表

  2. 获得一个独占模式锁定每个被监视的表,以确保任何表都不会发生结构更改。

  3. 读取服务器重做日志中的当前SCN(“系统更改号”)位置。

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

  5. 释放在第2步中获得的锁,即锁只被持有一小段时间。

  6. 扫描所有相关的数据库表和模式,使其在步骤3中读取的开云体育电动老虎机SCN位置有效(从scn123开始选择*),并生成一个事件,并将该事件写入相应的特定于表的Kafka主题。

  7. 在连接器偏移中记录快照的成功完成。

如果连接器失败,重新平衡,或者在步骤1开始后但在步骤7完成之前停止,重新启动连接器将开始一个新的快照。一旦Oracle连接器完成了它的初始快照,它将继续从第3步中的位置读取流,以确保它不会错过快照拍摄时发生的任何更新。如果连接器由于任何原因再次停止,在重新启动时,它将从之前停止的地方继续流式传输更改。

第二种快照模式为schema_only.在这种情况下,上面描述的快照例程中的第6步将不会被应用。也就是说,连接器仍然会捕获相关表的结构,但它不会创建任何表表示连接器启动时的完整数据集的事件。如果您只对从现在开始的任何数据更改感兴趣,而不关心所有记录的完整当前状态,那么这可能很有用。

读取重做日志

在第一次启动时,连接器获取捕获的表(DDL)结构的快照,并将此信息保存在其内部数据库历史主题中。开云体育电动老虎机然后,它继续从捕获模式结构的SCN监听更改事件。处理后的scn作为偏移量传递给Kafka Connect,并定期与数据库服务器确认(允许它丢弃旧的日志文件)。开云体育电动老虎机重新启动后,连接器将从之前停止的偏移量(SCN)恢复。

主题名称

架构更改主题

面向用户的模式更改主题还没有实现(请参见dbz - 753).

事件

由Oracle连接器产生的所有数据更改事件都有一个键和一个值,尽管键和值的结构依赖于产生更改事件的表(参见主题名称).

Debe开云体育官方注册网址zium Oracle连接器确保所有Kafka连接模式名有效的Avro模式名.这意味着逻辑服务器名必须以拉丁字母或下划线开头(例如,[a-z, a-z, _]),逻辑服务器名中的其余字符以及模式和表名中的所有字符必须是拉丁字母、数字或下划线(例如,[a-z, a-z, 0-9,\_])。如果不是,则所有无效字符将自动替换为下划线字符。

当逻辑服务器名、模式名和表名包含其他字符时,这可能导致意外的冲突,并且表全名之间唯一的区分字符无效,因此被下划线取代。

开云体育官方注册网址Debezium和Kafka Connect就是围绕这个设计的连续的事件消息流,这些事件的结构可能会随着时间而改变。对于消费者来说,这可能很难处理,所以Kafka Connect让每个事件都是自包含的。每个消息键和值都有两部分模式而且有效载荷.模式描述有效负载的结构,而有效负载包含实际数据。

更改事件键

对于给定的表,更改事件的键将具有一个结构,该结构在创建事件时包含表的主键(或唯一键约束)中的每一列的字段。

考虑一个客户表中定义的库存开云体育电动老虎机数据库模式:

CREATE TABLE customers (id NUMBER(9) GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH 1001) NOT NULL PRIMARY KEY, first_name VARCHAR2(255) NOT NULL, last_name VARCHAR2(255) NOT NULL, email VARCHAR2(255) NOT NULL UNIQUE);

如果开云体育电动老虎机database.server.name属性的值server1,每变事件为客户表,当它有这个定义时,将具有相同的键结构,在JSON中是这样的:

{"schema": {"type": "struct", "fields": [{"type": "int32", "optional": false, "field": "ID"}], "optional": false, "name": "server1.INVENTORY.CUSTOMERS. "Key"}, "payload": {"ID": 1004}}

模式密钥部分包含一个Kafka Connect模式,描述密钥部分中的内容,在我们的例子中,这意味着有效载荷值不是可选的,是由名为server1.开云体育官方注册网址DEBEZIUM.CUSTOMERS.Key,并且有一个名为id类型的int32.如果我们看一下键的值有效载荷字段,我们将看到它确实是一个结构(在JSON中只是一个对象)id字段,值为1004

因此,我们将此键解释为描述对象中的行inventory.customers表(从命名的连接器输出server1),其id主键列的值为1004

更改事件值

与消息键一样,更改事件消息的值具有模式节和有效载荷部分。Oracle连接器产生的每个更改事件值的有效负载部分都有一个信封结构,使用以下字段:

  • 人事处必选字段,包含描述操作类型的字符串值。Oracle连接器的值为c对于创建(或插入),u对于更新,d对于删除,和r用于读取(在快照的情况下)。

  • 之前是否是可选字段,如果存在则包含行状态之前事件发生了。该结构将由server1.INVENTORY.CUSTOMERS.ValueKafka Connect模式,其中server1对象中的所有行使用连接器inventory.customers表格

该字段及其元素是否可用在很大程度上取决于补充日志应用于表的配置。

  • 是否是可选字段,如果存在则包含行状态事件发生了。结构的描述是相同的server1.INVENTORY.CUSTOMERS.Value中使用的Kafka Connect模式之前

  • 是一个必须的字段,它包含一个描述事件源元数据的结构,在Oracle中包含这些字段:Debezium版本,连接器名称,事件是否是正在进行的快照的一部分,事务id(不是在快照时),更改的SCN,以及表示源数据库中记录更改的时间点的时间戳(在快照期间,它将是快照的时间点)。开云体育官方注册网址开云体育电动老虎机

  • ts_ms是可选的,如果存在,则包含连接器处理事件的时间(使用运行Kafka Connect任务的JVM中的系统时钟)。

当然,还有模式事件消息值的一部分包含描述此信封结构及其内嵌套字段的模式。

创建事件

我们来看看a创建事件值可能看起来像客户表:

{"模式":{“类型”:“结构”、“字段”:[{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“ID”},{“类型”:“弦”、“可选”:假的,“场”:“FIRST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“LAST_NAME”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:真的,“名字”:“server1.DEBEZIUM.CUSTOMERS。开云体育官方注册网址值","field": "before"}, {"type": "int32", "optional": false, "field": "ID"}, {"type": "string", "optional": false, "field": "FIRST_NAME"}, {"type": "string", "optional": false, "field": "LAST_NAME"}, {"type": "string", "optional": false, "field": "EMAIL"}], "optional": true, "name": "server1. debezum . customers。开云体育官方注册网址值”、“场”:“后”},{“类型”:“结构”、“字段”:[{“类型”:“弦”、“可选”:真的,“场”:“版本”},{“类型”:“弦”、“可选”:假的,“场”:“name”},{“类型”:“int64”、“可选”:真的,“场”:“ts_ms”},{“类型”:“弦”、“可选”:真的,“场”:“txId”},{“类型”:“int64”、“可选”:真的,“场”:“scn”},{“类型”:“布尔”、“可选”:真的,“场”:“快照”}],“可选”:假的,“名字”:“io.debezium.connector.oracle.Source”、“字段”:开云体育官方注册网址"source"}, {"type": "string", "optional": false, "field": "op"}, {"type": "int64", "optional": true, "field": "ts_ms"}], "optional": false, "name": "server1. debez开云体育官方注册网址um . customers . "信封”},“有效载荷”:{“前”:空,“后”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“源”:{“版本”:“0.9.0。Alpha1", "name": "server1", "ts_ms": 1520085154000, "txId": "6.28.807", "scn": 2122185, "snapshot": false}, "op": "c", "ts_ms": 1532592105975}}

如果我们看模式事件的一部分价值的模式信封的模式结构(特定于Oracle连接器并在所有事件中重用),以及表特定的模式之前而且字段。

的模式名称之前而且字段的格式为logicalNameschemaName的表. value,因此完全独立于所有其他表的所有其他模式。这意味着当使用Avro转换器,得到的Avro方案每个表在每一个逻辑源有自己的演变和历史。

如果我们看有效载荷事件的一部分价值,我们可以看到事件中的信息,即它正在描述创建的行(sinceop = c),以及字段值包含新插入行的'IDFIRST_NAMELAST_NAME,电子邮件列。

事件的JSON表示形式似乎比它们描述的行要大得多。这是正确的,因为JSON表示必须包含模式有效载荷部分信息。这是可能的,甚至建议使用Avro转换器以大幅减少写入Kafka主题的实际消息的大小。

更新事件

的值更新这个表上的Change事件实际上会有完全相同的结果模式,其有效负载的结构相同,但将持有不同的值。这里有一个例子:

{"schema":{…},“有效载荷”:{“前”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”},“后”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“anne@example.com”},“源”:{“版本”:“0.9.0。Alpha1", "name": "server1", "ts_ms": 1520085811000, "txId": "6.9.809", "scn": 2125544, "snapshot": false}, "op": "u", "ts_ms": 1532592713485}}

当我们把这个和插入事件中,我们看到了一些不同有效载荷部分:

  • 人事处字段值现在是u,表示该行因更新而更改

  • 之前字段现在拥有数据库提交前包含值的行状态开云体育电动老虎机

  • 字段现在已经更新了行状态,这里可以看到电子邮件价值就是现在anne@example.com

  • 字段结构具有与以前相同的字段,但值不同,因为此事件来自重做日志中的不同位置。

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

通过观察,我们可以学到很多东西有效载荷部分。我们可以比较之前而且结构来确定由于提交而在该行中实际更改的内容。的结构告诉我们Oracle关于这个变化记录的信息(提供可跟踪性),但更重要的是,我们可以将这个信息与这个和其他主题中的其他事件进行比较,以了解这个事件是在之前发生的,之后发生的,还是作为其他事件的一部分发生在同一个Oracle提交中。

当一行的主键/唯一键的列更新时,行键的值也发生了变化,因此Debezium将输出开云体育官方注册网址三个事件:删除事件和墓碑上的事件使用旧的行键,后面跟着插入事件,使用该行的新键。

删除事件

到目前为止,我们已经看到了样本创建而且更新事件。现在,我们来看看a的值删除事件。再一次,模式的部分值将与创建而且更新事件:

{"schema":{…},“有效载荷”:{“前”:{" ID ": 1004年,“FIRST_NAME”:“安妮”,“LAST_NAME”:“Kretchmar”、“电子邮件”:“anne@example.com”},“后”:空,“源”:{“版本”:“0.9.0。Alpha1", "name": "server1", "ts_ms": 1520085153000, "txId": "6.28.807", "scn": 2122184, "snapshot": false}, "op": "d", "ts_ms": 1532592105960}}

如果我们看有效载荷部分,我们看到了一些不同的比较创建更新事件的有效载荷:

  • 人事处字段值现在是d,表示该行已被删除

  • 之前字段现在拥有在数据库提交时删除的行状态。开云体育电动老虎机

  • 字段为空,表示该行不再存在

  • 字段结构具有许多与以前相同的值,除了ts_ms视交叉上核而且txId领域发生了变化

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

此事件向使用者提供了用于处理删除该行的各种信息。

Oracle连接器的事件设计用于处理Kafka对数压缩,只要每个键至少保留最近的消息,就可以删除一些旧消息。这允许Kafka回收存储空间,同时确保主题包含一个完整的数据集,并可用于重新加载基于键的状态。

删除一行时,删除上面列出的event值仍然适用于日志压缩,因为Kafka仍然可以删除所有使用相同键的早期消息。但仅当消息值为时卡夫卡会知道它可以移除吗所有消息用同样的钥匙。为了实现这一点,Debezium的Oracle开云体育官方注册网址连接器总是遵循删除特别活动墓碑上具有相同but键的事件价值。

数据类型

如上所述,Debezium Oracle连接器用开云体育官方注册网址事件表示行更改,事件的结构类似于行所在的表。事件包含每个列值的字段,该值在事件中如何表示取决于列的Oracle数据类型。本节描述从Oracle数据类型到a的映射文字类型而且语义类型在事件字段中。

在这里,文字类型描述了如何使用Kafka Connect模式类型逐字表示值,即INT8INT16INT32INT64FLOAT32FLOAT64布尔字符串字节数组地图,结构体

语义类型描述了Kafka Connect模式如何捕获意义该字段使用Kafka Connect模式的名称。

对更多数据类型的支持将在后续版本中添加。请提交JIRA问题对于你遗漏的任何特定类型。

字符值

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

CHAR ((M))

字符串

N/A

NCHAR ((M))

字符串

N/A

VARCHAR ((M))

字符串

N/A

VARCHAR2 ((M))

字符串

N/A

NVARCHAR2 ((M))

字符串

N/A

数值

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

数量((P [*]))

结构体

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

包含两个字段的结构:规模类型的INT32其中包含传输值的刻度和价值类型的字节以未缩放的形式包含原始值。

Number (p, s > 0)

字节

org.apache.kafka.connect.data.Decimal

数字(p, s⇐0)

INT8/INT16/INT32/INT64

N/A

数量以0为刻度的列表示整数;在Oracle中,负刻度表示舍入,例如-2的刻度将导致舍入到数百。
根据精度和比例,将选择匹配的Kafka Connect整数类型:INT8如果P - S < 3,INT16如果P - S < 5,INT32如果P - S < 10且INT64如果P - S < 19。
如果P - S >= 19,则将列映射到字节org.apache.kafka.connect.data.Decimal).

短整型

字节

org.apache.kafka.connect.data.Decimal

短整型在Oracle中映射到NUMBER(38,0),因此可以保存比任何INT类型可以存储

整数INT

字节

org.apache.kafka.connect.data.Decimal

整数在Oracle中映射到NUMBER(38,0),因此可以保存比任何INT类型可以存储

数字[(P, S)]

字节/INT8/INT16/INT32/INT64

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

处理等效于数量(注意S默认为0数字).

小数((P, S))

字节/INT8/INT16/INT32/INT64

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

处理等效于数量(注意S默认为0小数).

BINARY_FLOAT

FLOAT32

N/A

BINARY_DOUBLE

FLOAT64

N/A

浮动((P))

结构体

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

包含两个字段的结构:规模类型的INT32其中包含传输值的刻度和价值类型的字节以未缩放的形式包含原始值。

双精度

结构体

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

包含两个字段的结构:规模类型的INT32其中包含传输值的刻度和价值类型的字节以未缩放的形式包含原始值。

真正的

结构体

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

包含两个字段的结构:规模类型的INT32其中包含传输值的刻度和价值类型的字节以未缩放的形式包含原始值。

时间值

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

日期

INT64

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

表示过去纪元的毫秒数,不包括时区信息。

时间戳(0 - 3)

INT64

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

表示过去纪元的毫秒数,不包括时区信息。

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

INT64

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

表示经过epoch的微秒数,不包括时区信息。

时间戳(7 ~ 9)

INT64

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

表示过去纪元的纳秒数,不包括时区信息。

带时区的时间戳

字符串

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

带有时区信息的时间戳的字符串表示形式

时间间隔

FLOAT64

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

属性的时间间隔的微秒数365.25 / 12.0每月平均天数公式

部署连接器

由于许可要求,Debezium Oracle连接器不附带Oracle 开云体育官方注册网址JDBC驱动程序和XStream API JAR。你可以下载Oracle即时客户端

将存档提取到一个目录中,例如/ / instant_client / /路径。复制文件_ojdbc8.jar而且xstreams.jar从即时客户端到卡夫卡的填词目录中。创建环境变量LD_LIBRARY_PATH,指向即时客户端目录:

LD_LIBRARY_PATH = /道路/ / instant_client /

示例配置

下面是一个注册Debezium Oracle连接器实例的JSON请求示例:开云体育官方注册网址

{"name": "inventory-connector", "config": {"connector.class": "io.deb开云体育官方注册网址ezium.connector.oracle.OracleConnector", "tasks. debezium.connector.oracle. oracleconnector ", "Max ": "1", "开云体育电动老虎机database.server.name": "server1", "database. name"。Hostname ": "", "开云体育电动老虎机数据库。端口":"1521","数据库。开云体育电动老虎机user" : "c##xstrm", "database.password" : "xs", "database.dbname" : "ORCLCDB", "database.pdb.name" : "ORCLPDB1", "database.out.server.name" : "dbzxout", "database.history.kafka.bootstrap.servers" : "kafka:9092", "database.history.kafka.topic": "schema-changes.inventory" } }

监控

Kafka, Zookeeper和Kafka Connect都有内置支持用于JMX度量。Oracle连接器还发布了许多关于连接器活动的度量,这些活动可以通过JMX进行监视。连接器有两种类型的指标。快照度量可以帮助您监视快照活动,并且在连接器执行快照时可用。流度量帮助您在连接器读取XStream事件时监视进度和活动。

快照指标

MBean: 开云体育官方注册网址debezium.oracle: type = connector-metrics上下文=快照,server =<开云体育电动老虎机 database.server.name >
属性名称 类型 描述

LastEvent

字符串

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

MilliSecondsSinceLastEvent

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

TotalNumberOfEventsSeen

自上次启动或重置以来,此连接器已看到的事件总数。

NumberOfEventsFiltered

连接器上已配置白名单或黑名单过滤规则过滤的事件个数。

MonitoredTables

string []

连接器监视的表的列表。

QueueTotalCapcity

int

用于在快照和主Kafka Connect循环之间传递事件的队列长度。

QueueRemainingCapcity

int

用于在快照和主Kafka Connect循环之间传递事件的队列的空闲容量。

TotalTableCount

int

快照中包含的表的总数。

RemainingTableCount

int

快照尚未复制的表数。

SnapshotRunning

布尔

快照是否启动。

SnapshotAborted

布尔

快照是否中止。

SnapshotCompleted

布尔

快照是否完成。

SnapshotDurationInSeconds

快照到目前为止所花费的总秒数,即使没有完成。

RowsScanned

Map < String,长>

映射,其中包含为快照中的每个表扫描的行数。在处理期间将表增量地添加到Map中。每扫描10,000行并在完成一个表时更新一次。

流指标

MBean: 开云体育官方注册网址debezium.oracle: type = connector-metrics、上下文=流媒体服务器=<开云体育电动老虎机 database.server.name >
属性名称 类型 描述

LastEvent

字符串

连接器读取的最后一个流事件。

MilliSecondsSinceLastEvent

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

TotalNumberOfEventsSeen

自上次启动或重置以来,此连接器已看到的事件总数。

NumberOfEventsFiltered

连接器上已配置白名单或黑名单过滤规则过滤的事件个数。

MonitoredTables

string []

连接器监视的表的列表。

QueueTotalCapcity

int

用于在streamer和主Kafka Connect循环之间传递事件的队列长度。

QueueRemainingCapcity

int

用于在streamer和主Kafka Connect循环之间传递事件的队列的空闲容量。

连接

布尔

标志,该标志表示连接器当前是否连接到数据库服务器。开云体育电动老虎机

MilliSecondsBehindSource

从最后一个更改事件的时间戳到连接器处理它之间的毫秒数。这些值将包含运行数据库服务器和Debezium连接器的机器上的时钟之间的任何差异。开云体育官方注册网址开云体育电动老虎机

NumberOfCommittedTransactions

提交的已处理事务的数量。

SourceEventPosition

map < string, string >

上次接收事件的坐标。

LastTransactionId

字符串

最后处理的事务的事务标识符。

架构历史指标

MBean: 开云体育官方注册网址debezium.mysql: type = connector-metrics、上下文= schema-history, server =<开云体育电动老虎机 database.server.name >
属性名称 类型 描述

状态

字符串

之一停止恢复(从存储中恢复历史),运行描述数据库历史记录的状态。开云体育电动老虎机

RecoveryStartTime

恢复开始的时间(以epoch秒为单位)。

ChangesRecovered

在恢复阶段读取的更改数。

ChangesApplied

在恢复和运行时期间应用的模式更改总数。

MilliSecondsSinceLastRecoveredChange

自上次更改从历史存储区恢复以来所经过的毫秒数。

MilliSecondsSinceLastAppliedChange

自应用最后一次更改以来所经过的毫秒数。

LastRecoveredChange

字符串

从历史存储中恢复的最后一次更改的字符串表示形式。

LastAppliedChange

字符串

最后应用的更改的字符串表示形式。

连接器属性

以下配置属性为要求除非有默认值可用。

财产 默认的 描述

的名字

连接器的唯一名称。尝试使用相同的名称再次注册将失败。(所有Kafka Connect连接器都需要这个属性。)

connector.class

连接器的Java类的名称。始终使用值io.开云体育官方注册网址debezium.connector.oracle.OracleConnector用于Oracle连接器。

tasks.max

1

应该为此连接器创建的最大任务数。Oracle连接器总是使用单个任务,因此不使用这个值,所以默认值总是可以接受的。

开云体育电动老虎机database.hostname

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

开云体育电动老虎机database.port

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

开云体育电动老虎机database.user

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

开云体育电动老虎机database.password

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

开云体育电动老虎机database.dbname

要连接的数据库的名称。开云体育电动老虎机当使用CDB + PDB模型时,必须是CDB名称。

开云体育电动老虎机database.pdb.name

使用CDB + PDB模型时要连接的PDB的名称。

开云体育电动老虎机database.out.server.name

数据库中配置的XStream出站服务器的名称。开云体育电动老虎机

开云体育电动老虎机database.server.name

逻辑名称,用于标识并提供被监视的特定Oracle数据库服务器的名称空间。开云体育电动老虎机逻辑名在所有其他连接器中应该是唯一的,因为它被用作从该连接器发出的所有Kafka主题名的前缀。只能使用字母数字字符和下划线。

开云体育电动老虎机database.history.kafka.topic

Kafka主题的全称,连接器将在其中存储数据库模式历史。开云体育电动老虎机

开云体育电动老虎机database.history.kafka.bootstrap.servers

一个主机/端口对列表,连接器将使用它建立到Kafka集群的初始连接。此连接将用于检索以前由连接器存储的数据库模式历史,并用于写入从源数据库读取的每个DDL语开云体育电动老虎机句。这应该指向Kafka Connect进程使用的相同的Kafka集群。

snapshot.mode

最初的

一种对所捕获表的结构和可选数据进行初始快照的模式。支持的值为最初的(将捕获表的结构和数据的快照;如果主题应该用捕获表中的数据的完整表示来填充,则很有用)和schema_only(只对捕获的表的结构进行快照;有用的是,从现在开始发生的变化应该传播到主题)。快照完成后,连接器将继续从数据库的重做日志中读取更改事件。开云体育电动老虎机

table.whitelist

空字符串

一个可选的逗号分隔的正则表达式列表,它匹配要监控的表的完全限定表标识符;任何不在白名单中的表都将被排除在监控之外。每个标识符都是这样的开云体育电动老虎机数据库名的表.默认情况下,连接器将监视每个被监视数据库中的每个非系统表。开云体育电动老虎机不得与table.blacklist

table.blacklist

空字符串

一个可选的逗号分隔的正则表达式列表,它与要排除在监视之外的表的完全限定表标识符匹配;任何不在黑名单中的表都将被监控。每个标识符都是这样的开云体育电动老虎机数据库名的表.不得与table.whitelist

event.processing.failure.handling.mode

失败

指定连接器在事件处理期间应如何对异常作出反应。失败将传播异常(指示有问题事件的偏移量),导致连接器停止。
警告将导致跳过有问题的事件并记录有问题事件的偏移量。
跳过将导致跳过有问题的事件。

max.queue.size

8192

正整数值,指定阻塞队列的最大大小,从数据库日志中读取的更改事件在写入Kafka之前被放置在其中。开云体育电动老虎机例如,当写入Kafka较慢或Kafka不可用时,该队列可以为binlog阅读器提供反压力。出现在队列中的事件不包括在此连接器定期记录的偏移量中。属性中指定的最大批处理大小,默认值为8192max.batch.size财产。

max.batch.size

2048

正整数值,指定在此连接器的每次迭代期间应处理的每批事件的最大大小。默认为2048年。

poll.interval.ms

1000

正整数值,指定连接器在每次迭代期间等待新更改事件出现的毫秒数。缺省值为1000毫秒,即1秒。

tombstones.on.delete

真正的

控制是否在删除事件之后生成墓碑事件。
真正的删除操作由删除事件和后续的墓碑事件表示。当只发送一个删除事件。
触发墓碑事件(默认行为)允许Kafka在源记录被删除后完全删除与给定键相关的所有事件。

message.key.columns

空字符串

与完全限定的表和列匹配以映射主键的正则表达式的分号列表。
每个项(正则表达式)必须匹配<完全限定表>:<逗号分隔的列列表>表示自定义键。
完全限定表可以定义为DB_NAME。TABLE_NAMESCHEMA_NAME。TABLE_NAME,取决于具体的连接器。

column.truncate.to。长度.chars

N/A

一个以逗号分隔的可选正则表达式列表,它与基于字符的列的完全限定名匹配,如果字段值长于指定的字符数,则这些列的值应在更改事件消息值中被截断。可以在单个配置中使用具有不同长度的多个属性,尽管每个属性的长度必须为正整数。列的完全限定名的格式为开云体育电动老虎机数据库名的表columnName,或开云体育电动老虎机数据库名schemaName的表columnName

column.mask.with。长度.chars

N/A

一个以逗号分隔的可选正则表达式列表,该列表与基于字符的列的完全限定名称匹配,这些列的值应在更改事件消息值中被替换为由指定数量的星号()字符。可以在单个配置中使用具有不同长度的多个属性,尽管每个属性的长度必须为正整数或零。列的完全限定名的格式为开云体育电动老虎机数据库名的表columnName,或开云体育电动老虎机数据库名schemaName的表columnName

column.propagate.source.type

N/A

一个以逗号分隔的可选正则表达式列表,它与列的完全限定名称相匹配,这些列的原始类型和长度应该作为参数添加到发出的更改消息中的相应字段模式中。模式参数__开云体育官方注册网址debezium.source.column.type__开云体育官方注册网址debezium.source.column.length而且__开云体育官方注册网址debezium.source.column.scale将分别用于传播原始类型名称和长度(对于变宽类型)。对于接收器数据库中相应列的适当大小很有用。开云体育电动老虎机列的完全限定名的格式为开云体育电动老虎机数据库名的表columnName,或开云体育电动老虎机数据库名schemaName的表columnName

heartbeat.interval.ms

0

控制心跳消息的发送频率。
此属性包含以毫秒为单位的间隔,该间隔定义连接器向心跳主题发送消息的频率。这可用于监视连接器是否仍在接收来自数据库的更改事件。开云体育电动老虎机在较长一段时间内只更改非捕获表中的记录的情况下,还应该利用心跳消息。在这种情况下,连接器会继续从数据库中读取日志,但不会向Kafka发出任何更改消息,这反过来意味着不会向Kafka提交偏移量更新。开云体育电动老虎机这将导致重做日志文件被数据库保留的时间超过所需的时间(因为连接器实际上已经处理了它们,但从未有机会将最新检索到的S开云体育电动老虎机CN刷新到数据库中),并且还可能导致在连接器重新启动后重新发送更多的更改事件。将此参数设置为0完全不发送心跳消息。
默认禁用。

heartbeat.topics.prefix

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

控制要向其发送心跳消息的主题的命名。
主题根据模式命名< heartbeat.topics.prefix >。< server.name >

snapshot.delay.ms

连接器启动后在快照之前应该等待的间隔(以毫秒为单位);
可用于在启动集群中的多个连接器时避免快照中断,这可能导致连接器的重新平衡。

snapshot.fetch.size

2000

指定在进行快照时应一次性从每个表读取的最大行数。连接器将以这个大小的多个批次读取表内容。默认为2000。

sanitize.field.names

真正的连接器配置显式指定key.convertervalue.converter参数使用Avro,否则默认为

是否对字段名进行消毒以符合Avro命名要求。看到Avro命名欲知详情。