• Flink connector Oracle CDC 实时同步数据到MySQL(Oracle12c)


    接上一篇文档《Flink connector Oracle CDC 实时同步数据到MySQL(Oracle19c)》上次说的是Oracle19c版的配置方式。在数据同步的过程中遇到了读取数据延迟的情况,需要进行如下配置:

    'debezium.log.mining.strategy'='online_catalog',
    'debezium.log.mining.continuous.mine'='true'
    
    • 1
    • 2

    可是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##family user on CDB
    CREATE USER C##family IDENTIFIED BY family DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS ACCOUNT UNLOCK;
    
    -- allow access to all PDBs to the C##family user
    ALTER USER C##family SET CONTAINER_DATA=ALL CONTAINER=CURRENT
    
    -- grant needed permissions
    GRANT DBA to C##family                             ;
    GRANT CREATE SESSION TO C##family                  ;
    GRANT CREATE TABLE TO C##family                    ;
    GRANT EXECUTE_CATALOG_ROLE TO C##family            ;
    GRANT EXECUTE ON DBMS_LOGMNR TO C##family          ;
    GRANT SELECT ON V_$DATABASE TO C##family           ;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO C##family    ;
    GRANT SELECT ON V_$ARCHIVED_LOG TO C##family       ;
    GRANT SELECT ON V_$LOG TO C##family                ;
    GRANT SELECT ON V_$LOGFILE TO C##family            ;
    GRANT RESOURCE, CONNECT TO C##family               ;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    12c的坑还挺多,有以下问题:

    1. 创建用户的时候会提示”空间不存在“,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中的一样,如果在不同目录的话没有关系。
    2. 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;
    
    • 1
    • 2
  • 相关阅读:
    “智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取
    YOLOv4【未完待续】
    简述CompletableFuture异步任务编排
    RIP 路由 3 个定时器的工作流程和 4 种防环方法
    Redis之主从复制(一主两从)&薪火相传&反客为主&哨兵模式
    【JavaEE进阶系列 | 从小白到工程师】JavaEE中的迭代器,并发修改异常与增强for循环,一文上手使用
    什么是探索性测试?探索性测试有哪些方法?
    RockyLinux安装MariaDB
    基于MxNet实现目标检测-FasterRCNN【附部分源码及模型】
    【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】卷积
  • 原文地址:https://blog.csdn.net/qq_23502409/article/details/126040480