一、前言
因为国产化的需要,将Oracle数据迁移至MySQL数据库(OceanBase等)中。所以,找到一款迁移数据的工具:OracleSync2MySQL(不能迁移存储过程 自增主键,需要自己改造)。
原文地址: 国产化数据迁移:从Oracle到MySQL平台的数据无缝迁移工具
二、工具特性
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,如下:
export LD_LIBRARY_PATH=./instantclient
1
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
配置说明:
database: src为Oracle服务名,dest为MySQL数据库名称。
pageSize: 分页查询的每页记录数。
maxParallel: 最大并发数。
tables: 自定义迁移的表及其查询语句。
exclude: 排除不需要迁移的表。
batchRowSize: 批量插入行数。
3.2 全库迁移
使用以下命令迁移全库的表结构、行数据、索引、约束和自增列等对象:
OracleSync2MySQL.exe --config example.yml
1
如果是Linux或macOS系统,请使用以下命令:
export LD_LIBRARY_PATH=./instantclient
./OracleSync2MySQL --config example.yml
1
2
3.3 查看迁移摘要
全库迁移完成后,将生成迁移摘要,可查看是否有失败的对象。通过查询迁移日志可以分析失败的原因。
3.4 比对数据库
迁移完成后,可以使用以下命令比对源库和目标库,检查是否有迁移数据失败的表:
OracleSync2MySQL.exe --config example.yml compareDb
1
在Linux和MacOS系统中,使用以下命令:
./OracleSync2MySQL --config example.yml compareDb
1
四、其他迁移模式
4.1 全库迁移
迁移全库表结构、行数据、视图、索引约束、自增列等对象:
OracleSync2MySQL.exe --config example.yml
1
4.2 自定义SQL查询迁移
仅迁移配置文件中自定义查询语句的表结构和表行数据:
OracleSync2MySQL.exe --config example.yml -s
1
4.3 迁移全库表结构
仅迁移表结构,不包括行数据:
OracleSync2MySQL.exe --config example.yml createTable -t
1
4.4 迁移自定义表的表结构
仅迁移配置文件中自定义的表结构:
OracleSync2MySQL.exe --config example.yml createTable -s -t
1
4.5 迁移全库行数据
仅迁移行数据,不包括表结构:
OracleSync2MySQL.exe --config example.yml onlyData
1
4.6 迁移自定义表的行数据
仅迁移配置文件中自定义查询的行数据:
OracleSync2MySQL.exe --config example.yml onlyData -s
1
4.7 输出建库脚本
不迁移数据,仅输出DDL语句到日志文件createSql.log:
OracleSync2MySQL.exe --config example.yml -m