1. 前言

1.1. 简介

LightDB-ETL 是一款异构数据库迁移工具,通过支持将 Oracle、MySQL等数据库中的结构和数据迁移到LightDB、GaussDB、OceanBase、TDSQL等信创数据库,可极大的提高迁移效率和准确性。

1.2. 功能和支持的数据库

目前支持如下功能:

源库

目标库

支持迁移对象

Oracle

LightDB(PG,Oracle模式)

表、数据、视图、序列、函数、存储过程、触发器、类型、包、同义词,支持比对

MySQL5.7

GaussDB500_oracle

表、视图、主键、外键、索引,支持比对

MySQL5.7

GaussDB505_oracle

表、视图、主键、外键、索引,支持比对

MySQL8.0

GaussDB500_oracle

表、视图、主键、外键、索引,支持比对

MySQL8.0

GaussDB505_oracle

表、视图、主键、外键、索引,支持比对

MySQL8.0

GoldenDB_mysql

表、视图、主键、外键、索引,支持比对

MySQL8.0

Oracle19c

表、视图、主键、外键、索引,支持比对

MySQL8.0

Oceanbase_mysql

表、视图、主键、外键、索引,支持比对

Oracle

ocean_base_oracle

表、视图、表数据,支持比对,中间结果比对

Oracle

DM

表、视图、主键、外键、索引、约束、表数据,支持比对

Oracle

GaussDB-oracle

表数据迁移,支持表数据比对

备注:当源库为MySQL时,表结构迁移支持如下数据类型:bigint、bit、blob、char、datetime、date、decimal、double、float、int、mediumint、real、smallint、text、timestamp、tinyint、varbinary、varchar,而json、year、enum、binary、point、linestring、polygon、geometry、multipoint、multilinestring、multipolygon、set等类型暂不支持

25年计划支持功能如下:

源库

目标库

支持迁移对象

Oracle

达梦 8

表、视图、主键、外键、索引,支持比对

Oracle

ocean_base_oracle 3.2/4.2

表、视图、主键、外键、索引,支持比对

Oracle

GaussDB-oracle 505

表、视图、主键、外键、索引,支持比对

Oracle

TDSQL-oracle

表、视图、主键、外键、索引,支持比对

1.3. 支持限制

1.3.1. Oracle2DM

  1. 迁移表支持的数据类型

  • BINARY_FLOAT

  • BINARY_DOUBLE

  • DECIMAL

  • DOUBLE PRECISION

  • FLOAT

  • INTEGER

  • NUMBER

  • SMALLINT

  • CHAR

  • VARCHAR2

  • NCHAR

  • NVARCHAR2

  • NCHAR VARYING

  • LONG

  • BLOB

  • CLOB

  • NCLOB

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH TIME ZONE

  • TIMESTAMP WITH LOCAL TIME ZONE

  • INTERVAL YEAR TO MONTH

  • INTERVAL DAY TO SECOND

  • RAW

  • ROWID

  1. 表数据迁移

  • Oracle 的 rowid 和 DM 的 DmdbRowId 不兼容,无法直接迁移。

  • 因此,DM 的每个表对于 rowid 采用数字类型从 1 递增的方法插入值,不与 Oracle 的值保持一致。

  1. 视图迁移

  • 存在其他依赖(如函数、存储过程),需要先确保依赖对象已经存在。

  • 由于数据库对保留和非保留关键字的支持不一致,关键字在作为别名、表名等情况下可能会导致迁移失败。

  1. 表数据对比和中间结果对比

  • 不支持比较的数据类型TIMESTAMP WITH TIME ZONE、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND、ROWID,

  • 对空值和null值的比较暂时不支持

1.3.2. Oracle2OceanBaseOracle

  1. 迁移表支持的数据类型

  • BINARY_FLOAT

  • BINARY_DOUBLE

  • DECIMAL

  • FLOAT

  • INTEGER

  • NUMBER

  • REAL

  • SMALLINT

  • CHAR

  • VARCHAR

  • VARCHAR2

  • NCHAR

  • NVARCHAR2

  • NCHAR VARYING

  • BLOB

  • CLOB

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH TIME ZONE

  • TIMESTAMP WITH LOCAL TIME ZONE

  • INTERVAL YEAR TO MONTH

  • INTERVAL DAY TO SECOND

  • RAW

  1. 不支持迁移的表选项

  • 不支持表选项:[NO] INMEMORY。

  1. 视图迁移

  • 存在其他依赖(如函数、存储过程),需要先确保依赖对象已经存在。

  • 由于数据库对保留和非保留关键字的支持不一致,关键字在作为别名、表名等情况下可能会导致迁移失败。

  1. 表数据对比和中间结果对比

  • 对空值和null值的比较暂时不支持

1.3.3. Oracle2GaussDBOracle

  1. 迁移表支持的数据类型

  • BINARY_FLOAT

  • BINARY_DOUBLE

  • DECIMAL

  • DOUBLE PRECISION

  • FLOAT

  • INTEGER

  • NUMBER

  • REAL

  • SMALLINT

  • CHAR

  • VARCHAR

  • VARCHAR2

  • NCHAR

  • NVARCHAR2

  • NCHAR VARYING

  • BLOB

  • CLOB

  • NCLOB

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH TIME ZONE

  • INTERVAL YEAR TO MONTH

  • INTERVAL DAY TO SECOND

  1. 支持表数据比对的数据类型

  • BINARY_FLOAT

  • BINARY_DOUBLE

  • DECIMAL

  • DOUBLE PRECISION

  • FLOAT

  • INTEGER

  • NUMBER

  • REAL

  • SMALLINT

  • CHAR

  • VARCHAR

  • VARCHAR2

  • NCHAR

  • NVARCHAR2

  • NCHAR VARYING

  • BLOB

  • CLOB

  • NCLOB

  • DATE

  • TIMESTAMP

  • TIMESTAMP WITH TIME ZONE

  • INTERVAL YEAR TO MONTH

  • INTERVAL DAY TO SECOND