Flink CDC同步Oracle无主键表

Flink CDC同步Oracle无主键表

  • 问题背景
    • 问题解决

问题背景

Flink CDC是一种很强大且实用的实时数据同步工具,官网如下。
链接: link
但是在实际使用过程中还是会有些不足之处,比如说同步Oracle数据库中无主键以及唯一键的表时,关于目标端的幂等性时无法保证的。

问题解决

在Oracle数据库中,表中有一个伪列ROWID,而在CDC同步过来的数据中是不包含此列的。
修改源码如下,使之携带ROWID信息传入flink程序中,并且在目标端建表时将ROWID设置为主键。
下面展示一些 内联代码片

 类 debezium-1.9.7.Final\debezium-connector-oracle\src\main\java\io\debezium\connector\oracle\SourceInfo.java
 // 增加以下内容
 public static final String ROW_ID = "px_rowid";
 private String rowid;

    public String getRowId() {
        return rowid;
    }

    public void setRowid(String rowId) {
        this.rowid = rowId;
    }
```java
类 debezium-1.9.7.Final\debezium-connector-oracle\src\main\java\io\debezium\connector\oracle\OracleSourceInfoStructMaker.java
public Oracl

你可能感兴趣的:(java,flink,oracle)