如何使用Ora2Pg迁移Oracle数据库到openGauss


如何使用Ora2Pg迁移Oracle数据库到openGauss

文章插图
 
Ora2Pg介绍
Ora2Pg是一个将Oracle迁移至PostgreSQL的开源工具 , 通过连接Oracle数据库 , 自动扫描并提取其中的对象结构及数据 , 产生SQL脚本 , 通过手动或自动的方式将其应用到PostgreSQL 。
官方网站:https://ora2pg.darold.NET/
Ora2Pg优秀特性
 
  • 支持导出数据库绝大多数对象类型 , 包括表、视图、序列、索引、外键、约束、函数、存储过程等 。
  • 提供PL/SQL到PL/PGSQL语法的自动转换 , 一定程度避免了人工修正 。
  • 可生成迁移报告 , 包括迁移难度评估、人天估算 。
  • 可选对导出数据进行压缩 , 节约磁盘开销 。
  • 配置选项丰富 , 可自定义迁移行为 。
 
Ora2Pg在openGauss的应用
Ora2Pg主要语言是perl , 使用Perl DBI模块 , 通过DBD:Pg连接PostgreSQL目标数据库 , openGauss兼容PostgreSQL的通信协议以及绝大部分语法 , 因此只需作部分命名上的修改 , Ora2Pg同样可应用于openGauss 。
Ora2Pg使用示例
对于对象结构 , Ora2Pg将其DDL语句导出到SQL文件中 , 对于表数据 , 则既可以以INSERT或COPY命令导出到文件 , 也支持直接导入到目标数据库 , 不需要产生中间SQL文件 。
为了完成上述过程 , Ora2Pg工具同时支持命令行和一键式脚本的方式完成迁移 。命令行方式通过Ora2Pg二进制分布执行各条命令 , 来完成对应的步骤;一键式脚本通过创建迁移项目 , 分别得到导出导入脚本以及迁移目录模板 , 脚本集成了若干Ora2Pg命令以及导入SQL文件所需的psql命令(openGauss为gsql) , 用户只需要执行两个脚本即可完成迁移 。本次主要演示脚本的方式 。
1. 依赖安装
Ora2Pg语言为perl , 故需安装所需perl模块 。
# root用户下操作下
yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum install perl-CPAN
安装DBI、DBD:Pg、DBD:Oracle , Ora2Pg依赖这些软件去连接数据库 。
perl -MCPAN -e 'install DBI'
perl -MCPAN -e 'install DBD::Pg'
安装DBD:Oracle , 需要先安装Oracle Instant Client或者本地已安装Oracle数据库 。
# 从Oracle官方下载并安装Oracle Instant Client
rpm -ivh oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.11-devel-19.11.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.11-jdbc-19.11.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.11-sqlplus-19.11.0.0.0-1.x86_64.rpm
# 设置环境变量ORACLE_HOME
export ORACLE_HOME=/usr/lib/oracle/19.11/client64/
# 或者本地已安装有Oracle数据库
ORACLE_HOME如下设置
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# 安装DBD:Oracle
perl -MCPAN -e 'install DBD::Oracle'
2. Ora2Pg安装并创建迁移项目
源码路径:https://github.com/darold/ora2pg
# 进到代码目录下 , 
为目标安装路径
perl Makefile.PL PREFIX=
make && make install
# 设置环境变量 , 查看是否安装成功.
为下载的代码路径
export PERL5LIB=
/lib
export PATH=$PATH:
/usr/local/bin
ora2pg --help
# 创建迁移项目
ora2pg --init_project oramig
创建迁移项目后会在当前目录下生成oramig目录模板 , 如下所示 。其中主要包含两个脚本export_schema.sh和import_all.sh , 后续导出和导入即使用这两个脚本 。schema和sources目录存放各对象的DDL语句 , 区别在于schema存放PL/SQL语法转化为PL/PGSQL后的语句 ,  sources目录存放转化前PL/SQL的语句 , data目录存放表数据文件 , config目录包含配置文件ora2pg.conf , reports目录存放迁移报告 。
如何使用Ora2Pg迁移Oracle数据库到openGauss

文章插图
 
至此您已可以使用Ora2Pg命令 , 以下是使用该命令时允许指定的部分命令行参数 , 这些参数都可以在ora2pg.conf设置 , 指定配置文件时 , 命令行选项指定的值会覆盖配置文件中的对应值 。


推荐阅读