"Flink CDC中flink 1.17.0、 oracle cdc 2.3.0下,读取Oracle中数据只能获取最后一行,大概会是哪里的问题呢?建表如下:
CREATE TABLE test (
ID STRING,
NAME STRING,
PRIMARY KEY (ID) NOT ENFORCED
) WITH (
'connector' = 'oracle-cdc',
'hostname' = 'localhost',
'port' = '1521',
'username' = 'flinkuser',
'password' = 'flinkpw',
'database-name' = 'helowin',
'schema-name' = 'flinkuser',
'debezium.log.mining.strategy'='online_catalog',
'debezium.log.mining.continuous.mine'='true',
'debezium.database.tablename.case.insensitive'='false',
'table-name' = 'test'
);"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你提供的建表语句和配置信息,Flink CDC 读取 Oracle 数据库只能获取到最后一行数据的问题可能有以下几个可能的原因:
缺少主键或唯一索引:在你的表定义中,没有明确指定主键或唯一索引。由于 Flink CDC 使用增量日志挖掘技术来捕获数据库变更,如果表没有主键或唯一索引,它将无法准确地识别每行数据的唯一性。
解决方法:请确保在表定义中指定一个主键或唯一索引。例如,在 CREATE TABLE
语句中使用 CONSTRAINT
关键字定义主键或唯一索引。
Oracle CDC 版本兼容性问题:你在 Flink CDC 配置中使用的 Oracle CDC 版本与 Flink 版本之间可能存在兼容性问题。请确保使用的 Oracle CDC 版本与 Flink 版本兼容,并且可以正确地解析和处理 Oracle 的增量日志。
解决方法:检查并确认所使用的 Oracle CDC 版本与 Flink 版本兼容,并根据兼容版本的要求进行相应的配置和操作。
表的数据更新频率较低:如果表的数据更新频率较低,可能会导致只能获取到最后一行数据。这是因为 CDC 默认情况下会按照事务提交的顺序逐个发送数据变更事件,如果表的数据更新频率较低,那么可能只有最后一行数据会被捕获和传输。
解决方法:可以尝试增加表的数据更新频率,或者使用其他机制来触发更频繁的数据变更,例如批量插入测试数据、模拟实时数据更新等。
需要注意的是,确保在 Flink 中正确配置 Oracle CDC 的连接信息、日志挖掘策略和表名称等参数。还建议查看 Flink 和 Oracle CDC 的文档,以确保你的环境和版本配置是符合要求的。
在 Flink CDC 中读取 Oracle 数据库中的数据只能获取最后一行,可能是由于 Flink CDC 的配置参数或 Oracle 数据库的数据存储方式等方面存在问题导致的。以下是一些可能导致该问题的原因和解决方法:
配置参数错误:Flink CDC 的 Oracle CDC Connector 需要正确设置数据源的配置参数,包括数据库地址、端口、用户名、密码、表名等等。如果其中有任何一个参数设置错误,可能会导致 Flink CDC 只能读取最后一行数据。您可以检查配置文件中的参数设置是否准确,并根据需要进行修改。
数据库事务未提交:在 Oracle 数据库中,事务是指一组数据库操作,必须全部成功或全部失败。如果您在 Flink CDC 中读取 Oracle 数据库中的数据,但是事务未提交,可能会导致读取到的数据不完整或不准确。您可以检查 Oracle 数据库事务是否已经提交,如果未提交,可以手动提交事务或者等待事务自动提交。
评论
全部评论 (0)
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。
评论
全部评论 (0)