oracle数据落地到gp,使用ora2pg迁移oracle数据到greenplum

安装ora2pg条件

1、perl版本5.10以上

2、安装DBD::Oracle

3、安装DBI

4、安装DBD::Pg

一、安装相关软件支持

1、安装DBI

#下载

https://metacpan.org/release/DBI

上传到服务器并解压出来DBI-1.637.tar.gz

[ root@bigdata01 ~]$ ll

total 592

-rw-r--r-- 1 gpadmin gpadmin 596423 Dec 4 15:05 DBI-1.637.tar.gz

drwxr-xr-x 2 gpadmin gpadmin 4096 Dec 1 16:12 gpAdminLogs

drwxr-xr-x 2 gpadmin gpadmin 4096 Dec 1 16:11 gpconfigs

[gpadmin@bigdata01 ~]$ tar -zxvf DBI-1.637.tar.gz

DBI-1.637/

DBI-1.637/Changes

DBI-1.637/dbd_xsh.h

DBI-1.637/DBI.pm

DBI-1.637/DBI.xs

DBI-1.637/dbi_sql.h

DBI-1.637/dbilogstrip.PL

[root@bigdata01 ~]$

[root@bigdata01 ~]$ ll

total 596

drwxr-x--- 5 gpadmin gpadmin 4096 Aug 16 16:45 DBI-1.637

-rw-r--r-- 1 gpadmin gpadmin 596423 Dec 4 15:05 DBI-1.637.tar.gz

drwxr-xr-x 2 gpadmin gpadmin 4096 Dec 1 16:12 gpAdminLogs

drwxr-xr-x 2 gpadmin gpadmin 4096 Dec 1 16:11 gpconfigs

[root@bigdata01 ~]$ cd DBI-1.637

[root@bigdata01 DBI-1.637]$ perl Makefile.PL

*** Your LANG environment variable is set to 'en_US.UTF-8'

*** This may cause problems for some perl installations.

*** If you get test failures, please try again with LANG unset.

*** If that then works, please email [email protected] with details

*** including the output of 'perl -V'

…………

[root@bigdata01 DBI-1.637]$

[root@bigdata01 DBI-1.637]$ make

/usr/bin/perl -MExtUtils::Command -e 'mkpath' -- blib/lib/DBI

rm -f blib/lib/DBI/Changes.pm

cp Changes blib/lib/DBI/Changes.pm

cp Driver_xst.h blib/arch/auto/DBI/Driver_xst.h

cp lib/DBD/Proxy.pm blib/lib/DBD/Proxy.pm

cp lib/DBI/Gofer/Response.pm blib/lib/DBI/Gofer/Response.pm

cp lib/DBI/Util/_accessor.pm blib/lib/DBI/Util/_accessor.pm

cp lib/DBI/Gofer/Transport/Base.pm blib/lib/DBI/Gofer/Transport/Base.pm

cp lib/DBD/DBM.pm blib/lib/DBD/DBM.pm

cp DBIXS.h blib/arch/auto/DBI/DBIXS.h

cp dbixs_rev.pl blib/lib/dbixs_rev.pl

cp lib/DBI/Gofer/Serializer/DataDumper.pm blib/lib/DBI/Gofer/Serializer/DataDumper.pm

cp lib/DBI/Const/GetInfoType.pm blib/lib/DBI/Const/GetInfoType.pm

cp lib/DBI/DBD/Metadata.pm blib/lib/DBI/DBD/Metadata.pm

…………

[root@bigdata01 DBI-1.637]$

[root@bigdata01 DBI-1.637]$ make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/01basics.t .................... # --- Perl 5.010001 on x86_64-linux-thread-multi

t/01basics.t .................... ok

t/02dbidrv.t .................... ok

t/03handle.t .................... ok

t/04mods.t ...................... ok

t/05concathash.t ................ ok

t/06attrs.t ..................... ok

…………

[root@bigdata01 DBI-1.637]#

[root@bigdata01 DBI-1.637]# make install

Manifying blib/man1/dbiproxy.1

Manifying blib/man1/dbilogstrip.1

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib64/perl5/auto/DBI/DBIXS.h

Installing /usr/local/lib64/perl5/auto/DBI/dbixs_rev.h

…………

2、安装DBD::Oracle

#下载

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

上传到服务器并安装

oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm

oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

[root@bigdata01 ~]# ll

total 54480

drwxr-xr-x 5 sa_cluster sa_group 4096 Dec 6 15:46 DBD-Pg-1.32

-rw-r--r-- 1 root root 96233 Dec 4 15:21 DBD-Pg-1.32.tar.gz

drwxr-x--- 6 ogg games 4096 Dec 6 15:40 DBI-1.637

drwxr-xr-x 2 root root 4096 Dec 1 15:47 gpAdminLogs

-rw-r--r-- 1 root root 52826628 Dec 4 16:16 oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

-rw-r--r-- 1 root root 606864 Dec 4 16:14 oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

-rw-r--r-- 1 root root 1524160 Dec 4 16:28 oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm

-rw-r--r-- 1 root root 708104 Dec 4 16:28 oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

[root@bigdata01 ~]#

[root@bigdata01 ~]# rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

Preparing... ########################################### [100%]

1:oracle-instantclient12.########################################### [100%]

[root@bigdata01 ~]# rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

Preparing... ########################################### [100%]

1:oracle-instantclient12.########################################### [100%]

[root@bigdata01 ~]# rpm -ivh oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm

Preparing... ########################################### [100%]

1:oracle-instantclient12.########################################### [100%]

[root@bigdata01 ~]# rpm -ivh oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

Preparing... ########################################### [100%]

1:oracle-instantclient12.########################################### [100%]

[root@bigdata01 ~]#

#下载

http://search.cpan.org/~pythian/DBD-Oracle-1.74/lib/DBD/Oracle.pm

上传到服务器并解压出来DBD-Oracle-1.74.tar.gz

[root@bigdata01 ~]# tar -zxvf DBD-Oracle-1.74.tar.gz

DBD-Oracle-1.74/

DBD-Oracle-1.74/lib/

DBD-Oracle-1.74/lib/DBD/

DBD-Oracle-1.74/lib/DBD/Oracle.pm

DBD-Oracle-1.74/lib/DBD/Oracle/

…………

[root@bigdata01 DBD-Oracle-1.74]#

[root@bigdata01 ~]# cd DBD-Oracle-1.74

[root@bigdata01 DBD-Oracle-1.74]# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib

[root@bigdata01 DBD-Oracle-1.74]# export ORACLE_HOME=/usr/lib/oracle/12.2/client64/lib

[root@bigdata01 DBD-Oracle-1.74]# perl Makefile.PL -V 12.2

Using DBI 1.637 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/

Configuring DBD::Oracle for perl 5.010001 on linux (x86_64-linux-thread-multi)

Remember to actually *READ* the README file! Especially if you have any problems.

…………

[root@bigdata01 DBD-Oracle-1.74]# make

cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod

cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm

cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h

cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod

cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod

…………

[root@bigdata01 DBD-Oracle-1.74]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/000-report-versions-tiny.t .. #

#

# Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.10

# perl: 5.010001 (wanted 5.006) on linux from /usr/bin/perl

#

# B => 1.22 (want any version)

# Carp => 1.11 (want any version)

# DBI => 1.637 (want 1.51)

# Data::Dumper => 2.124 (want any version)

# Devel::Peek => 1.04 (want any version)

…………

[root@bigdata01 DBD-Oracle-1.74]# make install

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/mk.pm

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.h

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.bs

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/ocitrace.h

Installing /usr/local/lib64/perl5/auto/DBD/Oracle/dbdimp.h

Installing /usr/local/lib64/perl5/DBD/Oracle.pm

…………

3、安装DBD::Pg

#下载

http://search.cpan.org/~rudy/DBD-Pg/Pg.pm

上传到服务器并解压出来DBD-Pg-1.32.tar.gz

[root@bigdata01 ~]# ll

total 104

-rw-r--r-- 1 root root 96233 Dec 4 15:21 DBD-Pg-1.32.tar.gz

drwxr-x--- 6 ogg games 4096 Dec 6 15:40 DBI-1.637

drwxr-xr-x 2 root root 4096 Dec 1 15:47 gpAdminLogs

[root@bigdata01 ~]# tar -zxvf DBD-Pg-1.32.tar.gz

DBD-Pg-1.32/

DBD-Pg-1.32/t/

DBD-Pg-1.32/t/02attribs.t

DBD-Pg-1.32/t/99_pod.t

DBD-Pg-1.32/t/01setup.t

DBD-Pg-1.32/t/01constants.t

DBD-Pg-1.32/t/12placeholders.t

…………

[root@bigdata01 ~]#

[root@bigdata01 ~]# cd DBD-Pg-1.32

[root@bigdata01 DBD-Pg-1.32]# perl Makefile.PL

Configuring Pg

Remember to actually read the README file!

Path to pg_config?

OS: linux

PostgreSQL version: ..

****************

WARNING! DBD::Pg no longer supports versions less than 7.2.

It is highly recommended that you upgrade PostgreSQL to a newer version.

****************

Using DBI 1.637 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/

Checking if your kit is complete...

Looks good

Using DBI 1.637 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/

Writing Makefile for DBD::Pg

[root@bigdata01 DBD-Pg-1.32]#

[root@bigdata01 DBD-Pg-1.32]# make

Skip blib/lib/DBD/Pg.pm (unchanged)

gcc -c -I/opt/greenplum-db-4.3.17.1/include -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_PQescapeString -DHAVE_PQescapeBytea -DHAVE_PQunescapeBytea -DHAVE_PQfreemem -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc -DVERSION=\"1.32\" -DXS_VERSION=\"1.32\" -fPIC "-I/usr/lib64/perl5/CORE" Pg.c

[root@bigdata01 DBD-Pg-1.32]# make test

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

t/00basic.t ......... ok

t/01connect.t ....... Use of uninitialized value $DBD::Pg::VERSION in concatenation (.) or string at t/01connect.t line 64.

Use of uninitialized value $pgversion in concatenation (.) or string at t/01connect.t line 64.

[root@bigdata01 DBD-Pg-1.32]# make install

Files found in blib/arch: installing files in blib/lib into architecture dependent library tree

Installing /usr/local/lib64/perl5/auto/DBD/Pg/Pg.bs

Installing /usr/local/lib64/perl5/auto/DBD/Pg/Pg.so

Installing /usr/local/lib64/perl5/DBD/Pg.pm

Installing /usr/local/share/man/man3/DBD::Pg.3pm

Appending installation info to /usr/lib64/perl5/perllocal.pod

[root@bigdata01 DBD-Pg-1.32]#

二、安装ora2pg

#下载

https://github.com/darold/ora2pg/releases

ora2pg-18.2.tar.gz

[root@bigdata01 ~]# tar -zxvf ora2pg-18.2.tar.gz

ora2pg-18.2/

ora2pg-18.2/INSTALL

ora2pg-18.2/LICENSE

ora2pg-18.2/MANIFEST

ora2pg-18.2/Makefile.PL

…………

[root@bigdata01 ~]# cd ora2pg-18.2/

[root@bigdata01 ora2pg-18.2]# 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@bigdata01 ora2pg-18.2]#

[root@bigdata01 ora2pg-18.2]# make && make install

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

Installing /usr/local/share/perl5/Ora2Pg.pm

Installing /usr/local/share/perl5/Ora2Pg/GEOM.pm

Installing /usr/local/share/perl5/Ora2Pg/MySQL.pm

Installing /usr/local/share/perl5/Ora2Pg/PLSQL.pm

Installing /usr/local/share/man/man3/ora2pg.3

Installing /usr/local/bin/ora2pg_scanner

Installing /usr/local/bin/ora2pg

Installing default configuration file (ora2pg.conf.dist) to /etc/ora2pg

Appending installation info to /usr/lib64/perl5/perllocal.pod

[root@bigdata01 ora2pg-18.2]#

#检查所有软件是否安装成功

[root@bigdata01 ora2pg-18.2]# vi list.pl

[root@bigdata01 ora2pg-18.2]# cat list.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@bigdata01 ora2pg-18.2]#

[root@bigdata01 ora2pg-18.2]# perl list.pl

DBD::Oracle -- 1.74

DBD::Pg -- 1.32

DBI -- 1.637

Ora2Pg -- 18.2

Perl -- 5.10.1

[root@bigdata01 ora2pg-18.2]#

三、配置

[root@bigdata01 ora2pg]# vi /etc/ora2pg/ora2pg.conf.dist

ORACLE_HOME /usr/lib/oracle/12.2/client64/lib

ORACLE_DSN dbi:Oracle:host=xxx.xxx.xxx.xxx;sid=orcl;port=1521

ORACLE_USER xxx

ORACLE_PWD xxx

SCHEMA 数据库名

NLS_LANG AMERICAN_AMERICA.AL32UTF8

TYPE TABLE DATA

OUTPUT output.sql

[root@bigdata01 ora2pg]# ora2pg -c ora2pg.conf.dist

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Ora2Pg.pm line 33.

BEGIN failed--compilation aborted at /usr/local/share/perl5/Ora2Pg.pm line 33.

Compilation failed in require at /usr/local/bin/ora2pg line 30.

BEGIN failed--compilation aborted at /usr/local/bin/ora2pg line 30.

[root@bigdata01 ora2pg]#

报这个错是perl没有完全安装导致

下载相应版本并上传到服务器http://www.cpan.org/src/5.0/

perl-5.10.1.tar.gz

[root@bigdata01 ~]#tar -zxvf perl-5.10.1.tar.gz

[root@bigdata01 ~]#cd perl-5.10.1

[root@bigdata01 perl-5.10.1]#

[root@bigdata01 perl-5.10.1]# ./Configure -d -Dusethreads

[root@bigdata01 perl-5.10.1]# make

[root@bigdata01 perl-5.10.1]# make test

[root@bigdata01 perl-5.10.1]# make install

四、导出oracle数据

#进入/etc/ora2pg目录下

[ogg@bigdata01 ora2pg]$ pwd

/etc/ora2pg

#编辑配置文件

ORACLE_HOME /usr/lib/oracle/12.2/client64/lib

# Set Oracle database connection (datasource, user, password)

ORACLE_DSN dbi:Oracle:host=xx.xx.xx.xx;sid=xxxx;port=1521

ORACLE_USER xxxxxx

ORACLE_PWD xxxxxx

SCHEMA xxxxxxx #导出xxxxxxx用户下的表

TYPE COPY #导出的对象比如VIEW、TABLE 等,具体请参考readme

ALLOW xxxxxx #允许导出xxxxxx用户下的xxxxxx表

OUTPUT outputcopy.sql #导出的数据文件名称

[root@bigdata01 ora2pg]# ora2pg -c ora2pg.mizu.conf.dist

[========================>] 167/167 tables (100.0%) end of scanning.

[========================>] 78/78 rows (100.0%) Table advertmanagement (78 recs/sec)

[> ] 78/48491814 total rows (0.0%) - (0 sec., avg: 78 recs/sec).

[========================>] 126/126 rows (100.0%) Table auth_back_member (126 recs/sec)

[> ] 204/48491814 total rows (0.0%) - (0 sec., avg: 204 recs/sec).

[> ] 204/48491814 rows (0.0%) on total estimated data (1 sec., avg: 204 recs/sec)

[> ] 204/48491814 total rows (0.0%) - (0 sec., avg: 204 recs/sec).

[========================>] 142/142 rows (100.0%) Table auth_back_member_role (142 recs/sec)

[> ] 346/48491814 total rows (0.0%) - (0 sec., avg: 346 recs/sec).

[> ] 346/48491814 rows (0.0%) on total estimated data (1 sec., avg: 346 recs/sec)

[> ] 346/48491814 total rows (0.0%) - (0 sec., avg: 346 recs/sec).

[========================>] 1/1 rows (100.0%) Table auth_button_resource (1 recs/sec)

[> ] 347/48491814 total rows (0.0%) - (0 sec., avg: 347 recs/sec).

[> ] 347/48491814 rows (0.0%) on total estimated data (1 sec., avg: 347 recs/sec)

[> ] 347/48491814 total rows (0.0%) - (0 sec., avg: 347 recs/sec).

[========================>] 79/79 rows (100.0%) Table auth_menu_resource (79 recs/sec)

[> ] 426/48491814 total rows (0.0%) - (0 sec., avg: 426 recs/sec).

[> ] 426/48491814 rows (0.0%) on total estimated data (1 sec., avg: 426 recs/sec)

[> ] 426/48491814 total rows (0.0%) - (0 sec., avg: 426 recs/sec).

[========================>] 16/16 rows (100.0%) Table auth_role (16 recs/sec)

[> ] 442/48491814 total rows (0.0%) - (0 sec., avg: 442 recs/sec).

五、导入到greenplum

[gpadmin@bigdata01 ~]$ psql -d test

psql (8.2.15)

Type "help" for help.

test=# \i /etc/ora2pg/outputcopy.sql

你可能感兴趣的:(oracle数据落地到gp)