首页 > 数据库 >CloudCanal实战-Oracle数据迁移同步到PostgreSQL

CloudCanal实战-Oracle数据迁移同步到PostgreSQL

时间:2023-01-13 17:00:19浏览次数:75  
标签:PostgreSQL CloudCanal 数据源 ORACLE Oracle 源端

简述

本篇文章主要介绍如何使用 CloudCanal 构建一条 OraclePostgreSQL 的数据同步链路

技术要点

缩小的数据库权限要求

CloudCanalOracle 数据库的高权限要求,主要来自两个面向 DBA 的操作,自动构建字典自动切换归档日志,这两个操作主要是让用户使用更加自动化和便利,但是问题也比较明显,对数据库运维标准严苛的客户来说,这些权限对于我们的客户是没有的,所以新版本 CloudCanal ,通过参数配置,支持了关闭自动字典构建能力(默认打开)关闭自动切换归档日志能力(默认关闭)

多版本 schema 以支持位点回拉

对于关系型数据库同步工具而言,增量数据本身往往和元数据分离,也就是消费到的增量数据和即时从数据库里面获取的元数据不一定匹配(两个时间点之间有DDL),所以维持一个多版本的元数据以应对增量数据解析是必要的, CloudCanal 以每天的 schema dump 为基准,辅以到当前位点的 DDL 语句列表,可构建出任何时间点的元数据(实际上是更加精确的 scn 位点),单个 DDL 前后的数据变更事件,能够精确匹配到相对应的元数据进行解析, CloudCanal 才有可能在此版本产品上提供了回拉位点重复消费一段时间增量数据的能力

支持的版本

源端 Oracle 支持的版本:10.X11.X12.X18.X19.X

对端 PostgreSQL 支持的版本:8.49.09.19.29.39.49.59.610.X11.X12.X13.X14.X15.X16.X17.X

支持的DDL&数据类型映射

  • Oracle -> PostgreSQL 链路支持的DDL暂时只有 ALTER TABLE ,后续我们将不断进行完善
  • CloudCanal 结构迁移和数据迁移同步时会自动进行数据类型映射

类型映射见下表:

Oracle 字段类型 PostgreSQL 字段类型
CHAR、NCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、ROWID、HTTPURITYPE CHARACTER_VARYING
LONG、CLOB、NCLOB TEXT
NUMBER_BIGINT BIGINT
NUMBER_DECIMAL、BINARY_FLOAT、BINARY_DOUBLE NUMERIC
FLOAT REAL
DATE、TIMESTAMP TIMESTAMP_WITHOUT_TIME_ZONE、TIMESTAMP_WITHOUT_TIME_ZONE
TIMESTAMP_WITH_TIME_ZONE、TIMESTAMP_WITH_LOCAL_TIME_ZONE TIMESTAMP_WITH_TIME_ZONE
XMLTYPE XML

Tips : 针对于 Oracle -> PostgreSQL 链路,源端 Oracle 不在上表的字段类型暂时不支持

操作示例

准备工作

  • 安装最新版的 CloudCanal
  • 准备好源端数据源和对端数据源以及源端数据
  • CloudCanalOracle 作为源端进行数据迁移时,需要做一些额外的准备,具体参考ORACLE LogMiner同步准备

添加数据源

  • 登录 CloudCanal 平台
  • 数据源管理 -> 新增数据源

image.png

  • 选择自建数据库 -> 选择对应数据库 -> 输入相关信息 -> 测试连接-> 新增数据源

image.png

Tips :Oracle 相较于其他数据源有一些额外的参数可以调整

  • logminerUser:ORACLE源端增量任务使用redo解析(logminer)方式时使用的账号,需要CDB类型用户
  • logminerPasswd:ORACLE源端增量任务使用redo解析(logminer)方式时使用的账号密码
  • logminerConnectType:ORACLE源端增量任务使用redo解析(logminer)方式时使用的连接方式,目前支持ORACLE_SID或ORACLE_SERVICE模式
  • logminerSidOrService:ORACLE源端增量任务使用redo解析(logminer)方式时使用的连接标识符,和logminerConnectType参数配合使用,ORACLE_SID连接方式,则填写sid,ORACLE_SERVICE连接方式,则填写service name
  • 添加 OraclePostgreSQL 之后可以在数据源列表中看到新增的数据源

image.png

创建同步任务

  • 任务管理 -> 创建任务
  • 源端选择 Oracle 数据源,对端选择 PostgreSQL数据源
  • 分别点击测试连接,选择源端和对端需要订阅的数据库,选择下一步

image.png

  • 选择 全量迁移 -> 勾选 增量同步 -> 根据自身机器配置选择 任务规格
  • 选择 下一步

image.png

  • 选择源端需要同步的表,如果目标表显示橙色表示对端不存在该表,任务创建之后,会自动生成该表
  • 点击 下一步

image.png

  • 可以在左侧选择添加 数据过滤条件
  • 点击 下一步

image.png

  • 点击 创建任务

image.png

任务执行

任务创建并且启动后,会自动进行如下的三个阶段:

  • 结构迁移:任务创建之后,如果对端没有表结构,那么 CloudCanal 会去自动在对端创建表结构
  • 全量迁移:将源端存量数据整体迁移到对端
  • 增量同步:全量迁移期间以及全量完成以后的源端增量数据变更会实时同步到对端

image.png image.png

总结

本文简单介绍了如何使用 CloudCanal 进行 Oracle -> PostgreSQL 数据迁移同步。各位读者朋友,如果你觉得还不错,请点赞、评论加转发吧

标签:PostgreSQL,CloudCanal,数据源,ORACLE,Oracle,源端
From: https://blog.51cto.com/u_6814198/6006348

相关文章

  • docker安装oracle
    我参考了 https://blog.csdn.net/u010148813/article/details/1261527341、我用的虚拟机(宿主机)是Ubunturoot@jin-virtual-machine:/etc/docker#lsb_release-aNoLSB......
  • datax的使用 把oracle数据库的数据同步到Mysql库
    一、liunx环境 1、系统版本:RedHat4.8.5-362、下载datax,直接安装,解压可以二、数据库及表的准备1、oracle表,目前有3条数据; 2、mysql库建相对应的表及字段 ......
  • Oracle数据库软件包MD5校验HASH值汇总
    ################################Linux_x64_11gR211.2.0.4################################p13390677_112040_Linux-x86-64_1of7.zip大小:1395582860字节 MD5:......
  • Tapdata Cloud 场景通关系列: Oracle → MySQL 异构实时同步
    【前言】作为中国的“Fivetran/Airbyte”,TapdataCloud自去年发布云版公测以来,吸引了近万名用户的注册使用。应社区用户上生产系统的要求,TapdataCloud3.0将正式推......
  • Oracle SQL 两个日期类型毫秒值求差,日期转毫秒,时间差(ms)自定义函数解决毫秒差
    前言实际业务经常遇到求平均响应时间等操作,理论上应该可以直接求日期格式毫秒值,便可以计算时间差,But,Oracle没有对应函数,同时网上的方法求得是日期格式化的double类型数据,相......
  • ORACLE 触发器
    触发器触发器组成1、触发事件DML或DDL语句。2、触发时间是在触发事件发生之前(before)还是之后(after)触发3、触发操作使用PL/SQL块进行相应的数据库操......
  • Oracle DBLINK 简单使用
     oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入、修改、删除等操作     首先了解下环境:在tnsnames.o......
  • Oracle修改实例名
    只需要修改环境变量ORACLE_ID,口令文件及参数文件的名称即可关闭数据库、停止实例SQL>shutdownimmediateDatabaseclosed.Databasedismounted.ORACLEinstanc......
  • ORACLE ORA-12638:身份证明检索失败
    使用PLSQL连接远程数据库时,有时候会遇到提示ORA-12638:身份证明检索失败的问题,怎么办呢?有两种方法,选择一种更改就行了,网络上大多是第一种方法,如果已经找过不是你想要的答案,......
  • Oracle impdp使用content=data_only会阻塞其他会话DML操作
     Oracleimpdp使用content=data_only会阻塞其他会话DML操作 上篇提到了insert/*+append*/into会对表持有LOCKED_MODE=6的TM锁,导致其他对该表的DML都会被阻塞。实......