接上一篇文档《Flink connector Oracle CDC 实时同步数据到MySQL(Oracle19c)》上次说的是Oracle19c版的配置方式。在数据同步的过程中遇到了读取数据延迟的情况,需要进行如下配置:
'debezium.log.mining.strategy'='online_catalog',
'debezium.log.mining.continuous.mine'='true'
可是Oracle19c取消了该组件的配置。后面换了Oracle12c版,CDC的配置稍有不同。 不同点在创建用户和授权的地方,需要做一些调整不然在Flink中调用 DBMS_LOGMNR.START_LOGMNR 时出现“用户不存在”的问题。
Error report - ORA-01435: user does not exist ORA-06512: at “SYS.DBMS_LOGMNR”, line 72 ORA-06512: at line 3 01435. 00000 - “user does not exist” *Cause: *Action:
12c的配置如下:
--create C
CREATE USER C
-- allow access to all PDBs to the C
ALTER USER C
-- grant needed permissions
GRANT DBA to C
GRANT CREATE SESSION TO C
GRANT CREATE TABLE TO C
GRANT EXECUTE_CATALOG_ROLE TO C
GRANT EXECUTE ON DBMS_LOGMNR TO C
GRANT SELECT ON V_$DATABASE TO C
GRANT SELECT ON V_$LOGMNR_CONTENTS TO C
GRANT SELECT ON V_$ARCHIVED_LOG TO C
GRANT SELECT ON V_$LOG TO C
GRANT SELECT ON V_$LOGFILE TO C
GRANT RESOURCE, CONNECT TO C
12c的坑还挺多,有以下问题:
- 创建用户的时候会提示”空间不存在“,12c和19c不一样,12c的CDB和PDB要分别创建表空间;
在PDB中创建表空间: 查看当前容器:show con_name --查看当前容器; 切换容器到PDB:alter session set container=ORCLSPDB; --转换容器到PDB 切换PDB到容器:alter session set container=CDB$ROOT; --转换容器到CDB 注意:文件名不能和CDB中的一样,如果在不同目录的话没有关系。 - Oracle重启之后连不上了,由于从12开始引入了CDB和PDB,在重启的时候只会默认打开CDB,PDB还处于mount,需要手动开启:
show pdbs; //查询数据库的所有PDB alter pluggable database orclpdb open; //修改可插拔库orclpdb打开状态 有个一步到位的命令:alter pluggable database all open;–直接打开所有的PDB
贴点命令吧: 删除用户和表空间:
SQL> drop user jack cascade;
SQL> drop tablespace school including contents and datafiles;
|