由于Oracle高昂的许可证成本和维护费用以及各种外界环境因素导致的自主可控需求,很多客户都打算将自己的Oracle数据库迁移转换到开源的PostgreSQL或者MariaDB等数据库。那么工欲善其事必先利其器,随之而来的就是如何设计迁移方案和选择哪些迁移工具呢?无论你用搜索引擎还是ChatGPT, 你会发现市场上的迁移工具五花八门,让人有点头痛,比如ora2pg,AWS SCT,Toad, Navicat,OpenDBConverter,EDB Migration Toolkit等等。
根据我们的迁移经验和多方对比,比较推荐ora2pg和AWS SCT(Schema Conversion Tool),并且将2种或者多种迁移工具结合起来使用。由于Oracle独特的PL/SQL方言语法和复杂的自定义函数,这些迁移工具实际上都不能完成100%的schema(数据库架构或者叫模式)自动转换和迁移,很多时候还需要开发一些补充的脚本和工具协助DDL的转换和开发。
- ora2pg
首先谈一下ora2pg这个工具,顾名思义这个就是oracle to PostgreSQL(PG)的开源工具市场利用率最高,是很多云平台迁移的推荐工具。其实它还支持MySQL到PG的转换。
Ora2Pg是一个用于将Oracle数据库迁移到PostgreSQL的开源工具。它是一个命令行工具,没有UI界面,可以在Linux、Unix和Windows系统上运行。
Ora2Pg能够将Oracle数据库中的表、视图、索引、约束、序列、存储过程、触发器等对象转换为PostgreSQL中的相应对象。此外,它还支持数据类型和函数的转换,并可以将PL/SQL转换为PL/pgSQL。下面是我本地Windows的一个模式转换目录。
- AWS Schema Conversion Tool (AWS SCT)
这个工具比较有意思,本来是用来将各种数据库迁移到Amazon云目标数据库的,比如AWS Aurora PostgreSQL 或者各种RDS数据库,但是目前我们可以用来做一些数据库模式DDL的转换,最新版本支持虚拟目标数据库,可以进行源端source到目标target的转换。由于我们通常目标不是AWS数据库,所以我们可以导出转换出来的DDL 脚本在目标数据库手动创建。另外此工具提供比较专业的评估报告。表结构通常比较容易转换,基本可以90%以上的自动换conversion.比较麻烦的是Oracle用户自定义的复杂试图,函数和存储过程。这个地方就是专业数据迁移公司存在的意义,通常问题比较多,需要专业咨询人士指导和干预。
在项目实践中你会发现,这些工具各有千秋,有的时候ora2pg表现好一些,有时候AWS SCT表现好一些。Ora2pg通常SQL转换更清爽和简洁,SCT会自动创建很多自定义函数,有时候会有些困扰。总之,大家要结合起来,根据实际情况,开发定制自己独特的转换脚本,可以用Shell或者PowerShell,Python等等。
关于如何实现数据复制,数据切换,零停机等方法和技术,且看下回分解~