一、前言
因为国产化的需要,将Oracle数据迁移至MySQL数据库(OceanBase等)中。所以,找到一款迁移数据的工具:OracleSync2MySQL
(不能迁移存储过程
自增主键
,需要自己改造)。
二、工具特性
OracleSync2MySQL 是一款在线迁移工具,支持将Oracle数据库迁移到多种MySQL内核目标数据库,包括 MySQL
、PolarDB
、Percona Server MySQL
、MariaDB
、OceanBase
、TiDB
、GaussDB for MySQL
。
开源地址: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平台,满足多种数据库迁移需求。