flinkcdc 对接oracle 12c, url 直连的pdb容器?官方的文档 操作不起来
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 Flink CDC 对接 Oracle 12c 的 PDB 容器时,可能会遇到一些权限或配置上的问题。以下是基于知识库资料的详细操作步骤和注意事项,帮助您解决直连 PDB 容器的问题。
为了确保 Flink CDC 能够正确连接到 Oracle 12c 的 PDB 容器,需要为迁移用户授予必要的权限。以下是具体步骤:
执行以下 SQL 语句,切换到根容器 CDB$ROOT
:
ALTER SESSION SET CONTAINER=CDB$ROOT;
CDB$ROOT
)以及任何有权限的 PDB。DBA
权限,并确保其对 SYS.USER$
表具有读取权限。执行以下 SQL 语句:
-- 授予 DBA 权限
GRANT DBA TO C##XXX CONTAINER=ALL;
-- 授予对 SYS.USER$ 表的读权限
GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;
注意:
C##XXX
是您创建的 Common 用户名,请根据实际情况替换。
在 Flink CDC 中,连接 Oracle 数据库时需要提供正确的 JDBC URL 和相关参数。以下是关键配置说明:
Flink CDC 使用 JDBC 协议连接 Oracle 数据库,JDBC URL 的格式如下:
jdbc:oracle:thin:@//<hostname>:<port>/<service_name>
<hostname>
:Oracle 数据库的主机地址。<port>
:Oracle 数据库的监听端口(默认为 1521)。<service_name>
:PDB 容器的服务名。例如:
jdbc:oracle:thin:@//192.168.1.100:1521/ORCLPDB1
在 Flink SQL 或配置文件中,设置以下参数以连接 Oracle 数据库:
CREATE TABLE source_table (
...
) WITH (
'connector' = 'oracle-cdc',
'hostname' = '<hostname>',
'port' = '<port>',
'username' = 'C##XXX', -- Common 用户名
'password' = '<password>',
'database-name' = '<service_name>', -- PDB 容器的服务名
'schema-name' = '<schema_name>', -- 源表所在的 Schema
'table-name' = '<table_name>' -- 源表名
);
如果按照上述步骤仍无法成功连接 Oracle 12c 的 PDB 容器,请检查以下内容:
DBA
权限和对 SYS.USER$
表的读权限。OPEN
状态。可以通过以下 SQL 查询 PDB 状态:SELECT NAME, OPEN_MODE FROM V$PDBS;
ALTER PLUGGABLE DATABASE <pdb_name> OPEN;
tnsping
或 telnet
)测试网络连通性。DATE
类型字段,建议在 Flink SQL 中将其映射为 TIMESTAMP
类型,以避免数据类型不兼容问题。通过以上步骤,您可以正确配置 Flink CDC 以对接 Oracle 12c 的 PDB 容器。如果仍有问题,请提供更多错误信息以便进一步分析。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。