一、前言

因为国产化的需要,将Oracle数据迁移至MySQL数据库(OceanBase等)中。所以,找到一款迁移数据的工具:OracleSync2MySQL(不能迁移存储过程 自增主键,需要自己改造)。

二、工具特性

OracleSync2MySQL 是一款在线迁移工具,支持将Oracle数据库迁移到多种MySQL内核目标数据库,包括 MySQLPolarDBPercona Server MySQLMariaDBOceanBaseTiDBGaussDB for MySQL

开源地址:OracleSync2MySQL
主要功能:

  • 迁移全库表结构和表行数据到目标数据库。
  • 目标数据库的表结构只需为源库的超集即可迁移行数据。
  • 支持多线程批量迁移表行数据。
  • 提供源库和目标库数据比对功能。

下载地址: OracleSync2MySQL下载
OracleSync2MySQL下载

三、使用方法

以下以Windows平台为例,其它操作系统的命令行参数相同。

注意: 在Windows系统中,请在CMD中运行本工具;在MacOS或Linux系统中,请在有读写权限的目录下运行。

如果在Linux环境下运行,请先设置环境变量LD_LIBRARY_PATH,指向当前工具目录下的instantclient,如下:

[root@uatenv OracleSync2MySQL]# export LD_LIBRARY_PATH=./instantclient

3.1 编辑配置文件

首先,编辑example.yml配置文件,填写源库和目标数据库的信息:

src:
  host: 192.168.1.200
  port: 1521
  database: orcl
  username: admin
  password: oracle
dest:
  host: 192.168.1.37
  port: 3306
  database: test_polar
  username: root
  password: 11111
pageSize: 100000
maxParallel: 100
batchRowSize: 1000
tables:
  test:
    - select * from test
exclude:
  operationlog

配置说明:

  • database: src为Oracle服务名,dest为MySQL数据库名称。
  • pageSize: 分页查询的每页记录数。
  • maxParallel: 最大并发数。
  • tables: 自定义迁移的表及其查询语句。
  • exclude: 排除不需要迁移的表。
  • batchRowSize: 批量插入行数。

3.2 全库迁移

使用以下命令迁移全库的表结构、行数据、索引、约束和自增列等对象:

OracleSync2MySQL.exe --config example.yml

如果是Linux或macOS系统,请使用以下命令:

export LD_LIBRARY_PATH=./instantclient
./OracleSync2MySQL --config example.yml

3.3 查看迁移摘要

全库迁移完成后,将生成迁移摘要,可查看是否有失败的对象。通过查询迁移日志可以分析失败的原因。

3.4 比对数据库

迁移完成后,可以使用以下命令比对源库和目标库,检查是否有迁移数据失败的表:

OracleSync2MySQL.exe --config example.yml compareDb

在Linux和MacOS系统中,使用以下命令:

./OracleSync2MySQL --config example.yml compareDb

四、其他迁移模式

4.1 全库迁移

迁移全库表结构、行数据、视图、索引约束、自增列等对象:

OracleSync2MySQL.exe --config example.yml

4.2 自定义SQL查询迁移

仅迁移配置文件中自定义查询语句的表结构和表行数据:

OracleSync2MySQL.exe --config example.yml -s

4.3 迁移全库表结构

仅迁移表结构,不包括行数据:

OracleSync2MySQL.exe --config example.yml createTable -t

4.4 迁移自定义表的表结构

仅迁移配置文件中自定义的表结构:

OracleSync2MySQL.exe --config example.yml createTable -s -t

4.5 迁移全库行数据

仅迁移行数据,不包括表结构:

OracleSync2MySQL.exe --config example.yml onlyData

4.6 迁移自定义表的行数据

仅迁移配置文件中自定义查询的行数据:

OracleSync2MySQL.exe --config example.yml onlyData -s

4.7 输出建库脚本

不迁移数据,仅输出DDL语句到日志文件createSql.log:

OracleSync2MySQL.exe --config example.yml -m

通过这款强大的工具,您可以轻松地将Oracle数据库迁移到MySQL平台,满足多种数据库迁移需求。