官方文档:http://www.ora2pg.com/documentation.html
Ora2Pg 是一个免费工具,用于将 Oracle 或者 MySQL 数据库迁移到 PostgreSQL。本文介绍如何安装 Ora2Pg 工具。
Ora2Pg 需要使用 Perl,所有的 Perl 模块都可以从 CPAN 下载。在该页面的搜索框中输入相应模块的完整名称(例如 DBD::Oracle)即可找到下载链接。
Ora2Pg 可以从 SF.net 或者 GitHub 下载。
对于 Windows 平台,需要安装 Strawberry Perl 以及 Oracle 客户端。 从 CPAN 上编译 Windows 版本的 DBD::Oracle 比较麻烦,文档也很少(大多数已经过期无效)。安装 ActiveState Perl 的免费版更加容易一些,因为它们已经打包好了 DBD::Oracle 。
首先,需要安装 Oracle Instant Client 或者完整版的 Oracle 数据库软件。可以从 Oracle 下载中心下载相应的 RPM 包:
rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
或者直接下载相应的 ZIP 文件,解压到某个目录中,例如:/opt/oracle/instantclient_12_2/
其次,还需要安装一个 Perl 环境(perl 5.10 或者更高版本)。
yum install -y perl perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes
perl -version
为了连接数据库,需要安装 Perl::DBI 模块(版本 > 1.614)。
tar -zxvf DBI-1.642.tar.gz
cd DBI-1.642
perl Makefile.PL
make
make install
如果是迁移 Oracle 数据库,需要安装 DBD::Oracle 模块;如果是迁移 MySQL 数据库,需要安装 DBD::MySQL 模块。这些模块都是为了连接数据库,但如果你是将一个 DDL 文件迁移到 PostgreSQL 中,不需要安装这些模块。
安装和使用 DBD::Oracle 之前需要安装 Oracle 客户端并且设置 ORACLE_HOME 环境变量。
如果想要导出 MySQL 数据库,需要安装 DBD::mysql 模块,在此之前需要安装 mysql 客户端。
默认情况下,Ora2Pg 将导出的内容写入文本文件。为了将其加载到 PostgreSQL 数据库中,需要使用 PostgreSQL 客户端(psql)。如果在运行 Ora2Pg 工具的主机上没有安装客户端,可以将文件传输到安装了 psql 客户端的数据上执行。如果想要同时导出并导入,需要安装 DBD::Pg 模块。
tar -zxvf DBD-Pg-x.y.z.tar.gz
# cd DBD-Pg-x.y.z
# perl Makefile.PL
# make
# make install
Ora2Pg 支持将所有导出的内容压缩成一个 gzip 文件,不过需要安装 Compress::Zlib 模块;也可以选择使用 bzip2 压缩,需要安装 bzip2 工具并且将其加入 PATH 环境变量。
与安装其他 Perl 模块相同, 可以使用以下命令安装 Ora2Pg :
tar xjf ora2pg-x.x.tar.bz2
cd ora2pg-x.x/
perl Makefile.PL
make && make install
以上命令会将 Ora2Pg.pm 安装到本地的 Perl 程序库,同时将 ora2pg 安装到 /usr/local/bin/ 目录,并且在 /etc/ora2pg/ 目录中创建 ora2pg.conf 配置文件。
对于 Windows™ 操作系统,需要执行以下命令:
perl Makefile.PL
dmake && dmake install
该命令将脚本和类库安装到 Perl 的本地安装目录,并且将 ora2pg.conf 文件和所有文档安装到 C:\ora2pg\ 。
以下命令将 ora2pg 安装到自定义的目录中:
perl Makefile.PL PREFIX=
make && make install
然后在运行 Ora2Pg 之前将 PERL5LIB 环境变量设置为自定义的安装目录:
export PERL5LIB=
ora2pg -c config/ora2pg.conf -t TABLE -b outdir/
如果想要构建特定 Linux 发布版的二进制安装包,可以查询源代码中的 packaging/ 目录。其中包含了构建 RPM、Slackware 以及 Debian 安装包的所有信息。同时可以参考该目录中的 README 。
Ora2Pg 使用 Perl 中的 DBI 模块连接 Oracle 数据库,该模块需要使用 DBD::Oracle 模块。DBD::Oracle 可以从 CPAN 上下载。
使用 root 登录,设置环境变量 ORACLE_HOME 和 LD_LIBRARY_PATH,然后安装 DBD::Oracle:
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/12.2/client64/lib
perl -MCPAN -e 'install DBD::Oracle'
第一次运行时需要回答几个问题;可以直接输入回车,但是需要选择一个合适的 CPAN 镜像以下载各种模块。如果以上方法行不通,可以通过 CPAN 手动进行安装:
#perl -MCPAN -e shell
cpan> get DBD::Oracle
cpan> quit
cd ~/.cpan/build/DBD-Oracle*
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/lib
perl Makefile.PL
make
make install
还可以手动下载 DBD::Oracle 安装文件后安装:
tar -zxvf DBD-Oracle-1.76.tar.gz
export ORACLE_HOME="/u01/app/oracle/product/11.2"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
cd DBD-Oracle-1.76
perl Makefile.PL
make
make install
安装 DBD::Oracle 需要先安装 3 个 Oracle 包: instant-client、SDK 以及 SQLplus ,同时还需要 libaio1 库。
如果使用 ZIP 压缩版的 Instant Client,环境变量 LD_LIBRARY_PATH 和 ORACLE_HOME 需要设置为相同的值,也就是安装文件的所在目录。例如: /opt/oracle/instantclient_12_2/ 。
人生本来短暂,你又何必匆匆!点个赞再走吧!