热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

使用Ora2Pg实现从oracle平台往postgres平台的迁移ora2pg这个软件是通过perl语言来实现数据库的连接与同步的PERL语言一直是90年代开发CGI程序的首选语言。因为那个时代Pyt

使用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_DSNdbi:Oracle:host=10.211.55.4;sid=enmo
ORACLE_USERsystem
ORACLE_PWDoracle
SCHEMASCOTT
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)



推荐阅读
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
author-avatar
Melody-Zhu1988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有