查看原文
其他

Centos7 被停用!如何利用 Ora2Pg 将 Oracle 迁移至 IvorySQL?

梁翔宇 IvorySQL开源数据库社区
2024-11-17



在过去的社区讨论中,想要使用或正在使用IvorySQL的社区用户,经常问到Oracle 如何迁移到 IvorySQL 中,而且近期随着 Centos7 官方已经停止维护,这一变动促使了很多将 Oracle 部署在 Centos7 上的 Oracle 用户,开始准备 Oracle 数据库的迁移工作。本文将通过介绍 Ora2Pg 工具的安装步骤及使用方法,为 Oracle 数据库迁移到IvorySQL提供一套清晰、可行的操作指南。


1

Ora2Pg 简介

Ora2Pg 是一款专门用于将 Oracle 数据库迁移到 PostgreSQL上的开源工具。而IvorySQL基于PostgreSQL开发,也同样适配Ora2Pg。


Ora2Pg由一个Perl 脚本(ora2pg)以及一个Perl 模块组成。https://github.com/darold/ora2pg/blob/master/lib/Ora2Pg.pm[Ora2Pg.pm]


使用Ora2Pg时唯一需要做的事情就是修改它的配置文件 ora2pg.conf,设置连接 Oracle 数据库的 DSN 和一个可选的 SCHEMA 名称


完成之后,只需要设置导出的类型:TABLE(包括约束和索引)、VIEW、MVIEW、TABLESPACE、SEQUENCE、INDEXES、TRIGGER、GRANT、FUNCTION、PROCEDURE、PACKAGE、PARTITION、TYPE、INSERT 或 COPY、FDW、QUERY、KETTLE 以及 SYNONYM。


默认情况下,Ora2Pg 会导出一个 SQL语句的 文件,可以通过 IvorySQL 客户端工具 psql 执行导出SQL文件。当进行数据迁移时,可以在配置文件中设置一个目标数据库的 DSN,直接将数据从Oracle导入到 IvorySQL 数据库中。


2

Ora2Pg 安装

数据库部署环境:


Linux环境

Oracle版本

IvorySQL版本

Centos 7.9

19.0.0.0

\

Ubuntu 24.04(Docker25.0.4)

\

3.2


2.1 yum安装perl、perl相关模块及其他工具

yum install -y perl perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker bzip2


2.2 下载编译安装DBI

wget 

https://mirrors.sjtug.sjtu.edu.cn/cpan/modules/by-module/Plack/TIMB/DBI-1.643.tar.gz

tar zxvf DBI-1.643.tar.gz

cd DBI-1.643/

perl Makefile.PL

make && make install


2.3 下载编译安装 DBD-Oracle

wget --no-check-certificate 

https://www.cpan.org/modules/by-module/DBD/DBD-Oracle-1.76.tar.gz

export LD_LIBRARY_PATH=/opt/oracle/product/19c/dbhome_1/lib:$LD_LIBRARY_PATH

export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1

tar -zxvf DBD-Oracle-1.76.tar.gz

cd DBD-Oracle-1.76

perl Makefile.PL

make && make install


2.4 下载编译安装 Ora2Pg

进入 

https://sourceforge.net/projects/ora2pg/ 

下载ora2pg-24.0.tar.bz2


tar -xjf ora2pg-24.0.tar.bz2

cd ora2pg-24.0

perl Makefile.PL

make && make install


3

Ora2Pg 工具使用

3.1 修改ora2pg.conf

cat /etc/ora2pg/ora2pg.conf.dist | grep -v ^# |grep -v ^$ >ora2pg.conf

vim ora2pg.conf


根据自己Oracle数据库信息,在ora2pg.conf修改信息,包括host,sid,port,用户名、密码,SCHEMA等,如下图所示。


3.2 确认信息填写正确

信息修改完成后,通过查看oracle数据库版本号,确认ora2pg.conf可以使用

ora2pg -t SHOW_VERSION -c ora2pg.conf


3.3 评估迁移成本

在数据库迁移过程中,评估迁移成本非常重要,而Ora2Pg拥有评估迁移成本的功能。


在评估过程中,Ora2Pg会检查所有数据库对象,所有函数和存储过程,以检测是否仍有一些对象和PL / SQL代码无法由Ora2Pg自动转换,最终,通过内容分析模式,生成有关Oracle数据库包含的内容和无法导出的内容的文本报告。


导出数据评估报告命令如下:

ora2pg -t SHOW_REPORT --estimate_cost -c ora2pg.conf


3.4 查询源端对象类型,修改ora2pg.conf

select distinct OBJECT_TYPE from dba_objects where OWNER = 'BALINOR';


通过Ora2Pg导出类型文档 

https://ora2pg.darold.net/documentation.html#Oracle-schema-to-export


修改ora2pg.conf



3.5 开始数据库导出

使用导出命令,对数据库进行导出操作,命令如下:

ora2pg -c ora2pg.conf


导出成功后,将产生如下文件。


之后,我们还需要对表中数据进行导出

vim ora2pg.conf


按下图标记处内容进行修改即可


执行导出命令

ora2pg -c ora2pg.conf


至此,所有数据均已导出,导出文件为:DATA_output.sql,FUNCTION_output.sql, PROCEDURE_output.sql,TABLE_output.sql,VIEW_output.sql


4

完成数据库迁移

在已经安装IvorySQL数据库的服务器上,对导出文件进行解压。


4.1 迁移前准备

连接IvorySQL数据库,创建一个orcl数据库,并创建一个balinor的用户。


4.2 导入表结构

psql orcl -U ivorysql -h 127.0.0.1 -p 1524

-f ./TABLE_output.sql


4.3 导入数据

psql orcl -U ivorysql -h 127.0.0.1 -p 1524 -f ./DATA_output.sql


4.4 导入存储过程

psql orcl -U ivorysql -h 127.0.0.1 -p 1524 -f ./PROCEDURE_output.sql


4.5 导入函数

psql orcl -U ivorysql -h 127.0.0.1 -p 1524 -f ./FUNCTION_output.sql


4.6 导入视图

psql orcl -U ivorysql -h 127.0.0.1 -p 1524 -f ./VIEW_output.sql


4.7 检查迁移结果

在IvorySQL中,查看迁移的Table,View并测试Procedure,Function,均获得到正确结果。


至此,利用Ora2Pg工具将Oracle迁移到IvorySQL工作已经完成。


关注公众号,了解更多社区动态


- 我们是谁 -

lvorySQL是由浪潮软件集团瀚高股份主导研发的,一款深度兼容Oracle的PostgreSQL开源数据库系统。IvorySQL从底层代码层面深入把握开源技术的发展趋势,基于PostgreSQL 16.2的最新内核进行构建,同时提供了更加全面灵活的Oracle兼容功能,具备高度的SQL和PL/SQL兼容性,能够满足企业对于数据库系统多样化和高兼容性的需求。

- 推荐阅读 -

【IvorySQL技术指南

聚焦 PGConf.dev 2024 聊聊 IvorySQL 最新应用实践

WAL-G完美支持IvorySQL的备份恢复

IvorySQL在Neon平台上的迅速部署和灵活应用

IvorySQL Operator | 一键部署IvorySQL集群,高效管理与个性化配置尽在掌

pgvector扩展在IvorySQL Oracle兼容模式下的应用实践

IvorySQL 3.2 贡献独门秘籍,可以平滑迁移Oracle???

IvorySQL 3.2 :基于PG16.2,新增Oracle XML函数兼容功能

基于IvorySQL+Patroni+vip-manager构建高可用集群

备份恢复新体验!pgBackRest与IvorySQL的完美融合

最新版本!PG16.0最新内核,实现兼容Oracle数据库再升级

IvorySQL的IVY_GUC框架介绍与使用指南

IvorySQL新增命令及有关配置参数介绍

IvorySQL在「兼容oracle」方面做了哪些工作?

IvorySQL内核的Serverless数据库--HGNeon

迁移Oracle数据库至IvorySQL(PG兼容模式)

IvorySQL新增命令及有关配置参数介绍


【PG技术指南】
了解 PostgerSQL 的门户 – Executor vs Process Utility
2024 PGConf.dev 技术大盘点(下)
必看!!! 2024 最新 PG 硬核干货大盘点(上)
初学者指南 | PostgreSQL中的加密机制如何运作?
DBOS革命:迈克尔·斯通布雷克和无服务器计算的未来
7个维度!PostgreSQL生态展望:2024路向何方?
PostgreSQL16中的新增功能:双向逻辑复制
Kubernetes上PostgreSQL的存储策略
7个工具!让Oracle 迁移至 PostgreSQL成为可能!
4步上手Meson:让PostgreSQL 16 构建更现代化!
PostgreSQL 中的 JSON:彻底改变数据库中的数据灵活性



IvorySQL


  一款开源的兼容Oracle的PostgreSQL


官方网址:
https://www.ivorysql.org
社区仓库:
https://github.com/IvorySQL/IvorySQL
IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!
记得在GitHub给我们一个 ⭐奥~


点击文末的 “阅读原文”,开启您的IvorySQL3.0 Release Notes探索之旅,深入了解更多独家特性。

>>>最新版本体验链接:
https://github.com/IvorySQL/IvorySQL/releases
继续滑动看下一个
IvorySQL开源数据库社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存