ora2pg是一款免费迁移工具,能将oracle迁移到pg,简单使用并记录过程如下



环境:

虚拟机 oracle linux 7.7

oracle 11GR2  11.2.0.4

pg 13.1

Ora2Pg v21.0

安装ora2pg

安装perl依赖

ora2pg是Perl语言编写的,所以需要先安装相关环境依赖

[root@localhost ~]$ yum install -y perl perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package perl.x86_64 4:5.16.3-294.el7_6 will be updated
---> Package perl.x86_64 4:5.16.3-297.el7 will be an update

(省略中间...)                                                

Dependency Installed:
  gdbm-devel.x86_64 0:1.10-8.el7                     libdb-devel.x86_64 0:5.3.21-25.el7         perl-ExtUtils-Install.noarch 0:1.58-297.el7           perl-ExtUtils-Manifest.noarch 0:1.61-244.el7          
  perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7          perl-IPC-Cmd.noarch 1:0.80-4.el7           perl-Locale-Maketext.noarch 0:1.23-3.el7              perl-Locale-Maketext-Simple.noarch 1:0.21-297.el7     
  perl-Module-CoreList.noarch 1:2.76.02-297.el7      perl-Module-Load.noarch 1:0.24-3.el7       perl-Module-Load-Conditional.noarch 0:0.54-3.el7      perl-Module-Metadata.noarch 0:1.000018-2.el7          
  perl-Params-Check.noarch 1:0.38-2.el7              perl-Perl-OSType.noarch 0:1.003-3.el7      perl-Test-Harness.noarch 0:3.28-3.el7                 perl-devel.x86_64 4:5.16.3-297.el7                    
  perl-version.x86_64 3:0.99.07-6.el7                pyparsing.noarch 0:1.5.6-9.el7             systemtap-sdt-devel.x86_64 0:4.0-13.0.1.el7          

Updated:
  perl.x86_64 4:5.16.3-297.el7                                                                                                                                                                               

Dependency Updated:
  perl-libs.x86_64 4:5.16.3-297.el7                                                                                                                                                                          

Complete!
[root@localhost ~]$

安装DBI

DBI,Database Independent Interface,是Perl语言连接数据库的接口

下载地址https://metacpan.org/release/DBI  下载出DBI-1.643.tar.gz

然后解压安装

[root@localhost /usr/local]$ tar -xzvf DBI-1.643.tar.gz
[root@localhost /usr/local/DBI-1.643]$ cd DBI-1.643/
[root@localhost /usr/local/DBI-1.643]$ perl Makefile.PL
[root@localhost /usr/local/DBI-1.643]$ make
[root@localhost /usr/local/DBI-1.643]$ make install

安装DBD::Oracle模块

安装DBD-Oracle驱动,下载地址https://metacpan.org/pod/release/PYTHIAN/DBD-Oracle-1.74/lib/DBD/Oracle.pm,下载出DBD-Oracle-1.74.tar.gz

[root@localhost /usr/local/DBD-Oracle-1.74]$ tar -zxvf DBD-Oracle-1.74.tar.gz 
[root@localhost /usr/local/DBD-Oracle-1.74]$ cd DBD-Oracle-1.74/
[root@localhost /usr/local/DBD-Oracle-1.74]$ perl Makefile.PL 
[root@localhost /usr/local/DBD-Oracle-1.74]$ make
[root@localhost /usr/local/DBD-Oracle-1.74]$ make install

安装DBD-Pg

安装DBD-Pg驱动,下载地址https://metacpan.org/release/DBD-Pg,下载出DBD-Pg-3.14.2.tar.gz

[root@localhost /usr/local]$ cd DBD-Pg-3.14.2/
[root@localhost /usr/local]$ perl Makefile.PL 
[root@localhost /usr/local]$ make
[root@localhost /usr/local]$ make install

安装ORA2PG

下载地址https://sourceforge.net/projects/ora2pg/


[root@localhost /usr/local]$ cd ora2pg-21.0/
[root@localhost /usr/local/ora2pg-21.0]$ ls
changelog  doc  INSTALL  lib  LICENSE  Makefile.PL  MANIFEST  packaging  README  scripts
[root@localhost /usr/local/ora2pg-21.0]$ perl Makefile.PL 
Checking if your kit is complete...
Looks good
Writing Makefile for Ora2Pg

Done...
------------------------------------------------------------------------------
Please read documentation at http://ora2pg.darold.net/ before asking for help
------------------------------------------------------------------------------
Now type: make && make install
[root@localhost /usr/local/ora2pg-21.0]$ make
cp lib/Ora2Pg.pm blib/lib/Ora2Pg.pm
cp lib/Ora2Pg/GEOM.pm blib/lib/Ora2Pg/GEOM.pm
cp lib/Ora2Pg/PLSQL.pm blib/lib/Ora2Pg/PLSQL.pm
cp lib/Ora2Pg/MySQL.pm blib/lib/Ora2Pg/MySQL.pm
cp scripts/ora2pg blib/script/ora2pg
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pg
cp scripts/ora2pg_scanner blib/script/ora2pg_scanner
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pg_scanner
Manifying blib/man3/ora2pg.3
[root@localhost /usr/local/ora2pg-21.0]$ make install
Installing /usr/local/share/perl5/Ora2Pg.pm
Installing /usr/local/share/perl5/Ora2Pg/GEOM.pm
Installing /usr/local/share/perl5/Ora2Pg/PLSQL.pm
Installing /usr/local/share/perl5/Ora2Pg/MySQL.pm
Installing /usr/local/share/man/man3/ora2pg.3
Installing /usr/local/bin/ora2pg
Installing /usr/local/bin/ora2pg_scanner
Installing default configuration file (ora2pg.conf.dist) to /etc/ora2pg
Appending installation info to /usr/lib64/perl5/perllocal.pod
[root@localhost /usr/local/ora2pg-21.0]$

查看安装了哪些perl模块

[root@localhost ~]$ cat check.pl 
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst=ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach(@modules){
       my $ver = $inst->version($_) || "???";
       printf("%-12s -- %s\n",$_,$ver);
       }
exit;
[root@localhost ~]$ perl check.pl 
DBD::Oracle  -- 1.74
DBI          -- 1.643
Ora2Pg       -- 21.0
Perl         -- 5.16.3
[root@localhost ~]$

...