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

2024年 7月 10日 53.5k 0

在过去的社区讨论中,想要使用或正在使用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等,如下图所示。

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

3.2 确认信息填写正确

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

ora2pg -t SHOW_VERSION -c ora2pg.conf

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

3.3 评估迁移成本

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

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

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

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

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

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

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

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

通过Ora2Pg导出类型文档 

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

修改ora2pg.conf

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

3.5 开始数据库导出

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

ora2pg -c ora2pg.conf

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

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

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

vim ora2pg.conf

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

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

执行导出命令

ora2pg -c ora2pg.conf

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

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

4

完成数据库迁移

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

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

4.1 迁移前准备

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

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

4.2 导入表结构

psql orcl -U ivorysql -h 127.0.0.1 -p 1524

-f ./TABLE_output.sql

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

4.3 导入数据

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

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

4.4 导入存储过程

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

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

4.5 导入函数

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

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

4.6 导入视图

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

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

4.7 检查迁移结果

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

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

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

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

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论