使用ora2pg完成从oracle到postgresql的迁移工作

使用Ora2Pg实现从oracle平台往postgres平台的迁移
ora2pg这个软件是通过perl语言来实现数据库的连接与同步的
PERL语言一直是90年代开发CGI程序的首选语言。因为那个时代Python/Ruby/PHP这类相对“高级”的脚本语言尚属幼年或着根本没有出生;而用C/C++来开发CGI,灵活性则又太差。PERL以其快速的开发周期,灵活的语法定义和能充分扩展模块机制,在那个Web应用才刚刚开始的火热年代,领尽了风骚。
Web开发,不外乎两点,一为版面,一为内容。
论版面,PERL的CGI模块功能强大,又简单易用,短短数行,便能动态生成HTML网页。
而论内容,那么必然会用到数据库,用数据库来管理内容。PERL对数据库的支持广而且全,几乎所有的主流数据库都有与之相应的PERL模块支持。为了开发可在不同数据库上移植的PERL应用,DBI(DataBase Interface)模块应运而生,使用这个模块,应用只需使用统一的接口便能操作不同的数据库,真正实现了可移植;当然,这个DBI也配备有相应的开关来支持不同数据库的各种特性,每一个数据库都能单独成文,本篇暂不涉及这此点。
DBI只是个抽象层,要实现支持不同的数据库,则需要在DBI之下,编写针对不同数据库的驱动。对MySql来说,有DBD::Mysql, 而对Oracle来说,则是DBD::Oracle。其中的DBD这是DataBase Driver之简写。

查看perl的版本
perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
Copyright 1987-2009, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


安装DBI
tar xvf DBI-1.627.tar 
cd DBI-1.627
perl Makefile.PL 
make
make test
make install

安装DBD:oracle
cd /tmp
tar zxf DBD-Oracle-1.64.tar 
cd DBD-Oracle-1.64
export  ORACLE_HOME=/u01/app/oracle/product/11.2.0/db; 
export PATH=$ORACLE_HOME/bin:$PATH; 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
perl Makefile.PL 
make
make test
make install


安装DBD:pg
export POSTGRES_HOME=/usr/local/pgsql
export POSTGRES_INCLUDE=/usr/local/pgsql/include
export POSTGRES_LIB=/usr/local/pgsql/lib



检查验证系统中安装了哪些Perl modules

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);
}

[03:05:49 root(db)@enmorep ~]# perl perl.pl 
DBD::Oracle  -- 1.74
DBI          -- 1.627
Perl         -- 5.10.1

安装Ora2Pg软件
tar -zxvf ora2pg-12.1.tar.gz 
make
make install
cd /etc/ora2pg/
cat ora2pg.conf.dist

ORACLE_HOME	/u01/app/oracle/product/11.2.0/db
ORACLE_DSN	dbi:Oracle:host=10.211.55.4;sid=enmo
ORACLE_USER	system
ORACLE_PWD	oracle
SCHEMA	SCOTT
TYPE TABLE DATA
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC float
SKIP    fkeys pkeys ukeys indexes checks
NLS_LANG    AMERICAN_AMERICA.UTF8
PG_DSN        dbi:Pg:dbname=test;host=127.0.0.1;port=5432
PG_USER    kiwi
PG_PWD    kiwi
OUTPUT        output.sql

这儿我们需要注意的是,他只同步的是表的数据,所以我们要先创建好表的定义才行

[20:04:22 root(db)@enmorep ora2pg]# ora2pg -c table.conf
[========================>] 5/5 tables (100.0%) end of scanning.      
[>                        ] 0/5 tables (0.0%) end of scanning.        
[========================>] 5/5 tables (100.0%) end of table export.
[========================>] 0/0 rows (100.0%) Table BONUS (0.0 recs/sec)
[>                        ]  0/24 rows (0.0%) on total data (avg: 0.0 recs/sec)
[========================>] 4/4 rows (100.0%) Table DEPT (4.0 recs/sec)        
[====>                    ]  4/24 rows (16.7%) on total data (avg: 4.0 recs/sec)
[========================>] 14/14 rows (100.0%) Table EMP (14.0 recs/sec)       
[==================>      ] 18/24 rows (75.0%) on total data (avg: 18.0 recs/sec)
[========================>] 5/5 rows (100.0%) Table SALGRADE (5.0 recs/sec)      
[=======================> ] 23/24 rows (95.8%) on total data (avg: 23.0 recs/sec)
[========================>] 1391776/1 rows (139177600.0%) Table TEST (4256.2 recs/sec)
[========================>] 24/24 rows (100.0%) on total data (avg: 0.1 recs/sec)     


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值