背景
在使用oracle做实时同步时,使用flink-cdc 2.2版本正常。
但是升级到2.3以及之后的版本,启动作业时碰到了以下报错:
flink | cdc |
1.13 | 2.4+ |
报错
file is not a valid name
这是由于debezium在获取oracle的database时,会将database转为大写导致。
检查一下我们填写的database-name,确实为小写
解决方案
-- demo CREATE TABLE products ( db_name STRING METADATA FROM 'database_name' VIRTUAL, schema_name STRING METADATA FROM 'schema_name' VIRTUAL, table_name STRING METADATA FROM 'table_name' VIRTUAL, operation_ts TIMESTAMP_LTZ(3) METADATA FROM 'op_ts' VIRTUAL, ID INT NOT NULL, NAME STRING, DESCRIPTION STRING, WEIGHT DECIMAL(10, 3), PRIMARY KEY(id) NOT ENFORCED ) WITH ( 'connector' = 'oracle-cdc', 'hostname' = 'localhost', 'port' = '1521', 'username' = 'flinkuser', 'password' = 'flinkpw', 'database-name' = 'ORCLCDB', 'schema-name' = 'inventory', 'table-name' = 'products', 'debezium.log.mining.strategy' = 'online_catalog', 'debezium.log.mining.continuous.mine' = 'true' );
将flink SQL中的database-name改为大写即可。
注意:
schema-name和table-name也需要和oracle中的元数据大小写保持一致。