linux 安装org2pg_Ora2Pg安装配置

说明

该文档为简单的Ora2Pg安装配置使用说明文档,主要涵盖安装前其它组件的安装、Ora2Pg安装、配置以及利用Ora2Pg从Oracle生成sql脚本,利用sql脚本导入PostgreSQL数据库中。

Ora2Pg是以perl开发的perl模块工具,为使安装能够顺利通过,在安装Ora2Pg之前必须先确保系统已经安装了perl模块以及DBI、DBD::Oracle模块。若需要直接导入到PostgreSQL则还需要安装DBD::Pg模块。并且在Ora2Pg的使用过程中要求数据库为正常运行状态。

本次实验是将Oracle、PostgreSQL和Ora2Pg安装在不同的PC上,最终搭建一个用于迁移数据的Ora2Pg终端,通过远程一端连接Oracle,另一端连接PostgreSQL。

Ora2Pg简介

Ora2Pg是一个免费的工具,用于将Oracle数据库迁移到PostgreSQL兼容的模式里。它连接Oracle数据库,扫描并自动抽取其结构或数据,然后生成用于实现迁移的SQL脚本,利用该脚本你可以将数据库结构或数据加载到PostgreSQL数据库中。
我们可以使用Ora2Pg实现逆向工程Oracle数据库到大型企业级数据库的迁移或者简单地复制一些Oracle数据库到PostgreSQL数据库中。你只需要提供连接Oracle数据库时所需的连接参数,无需了解任何Oracle数据库的知识。

工作过程

Ora2Pg中包括一个Perl脚本(Ora2Pg)和一个Perl模块(Ora2Pg.pm),你只需要修改配置文件Ora2Pg.conf中连接Oracle数据库的DSN设置和任意的一个模式名称。做完了这些然后你只需要设置一下你想要输出的对象类型,它提供的类型有:约束表、视图、表空间、序列、索引、触发器、授权、函数、存储过程、包封装、分区和数据。
默认情况下Ora2Pg会导出一个文件,你可以通过psql客户端将其导入到PostgreSQL数据库中,不过你也可以通过设置PostgreSQL数据库的DSN直接导入。你可以通过配置ora2pg.conf的配置选项来完全控制导出什么以及如何去导出。

特性

导出整个数据库模式(表、视图、序列、索引),以及唯一性,主键、外键和检查约束。

导出用户和组的授权/权限。

导出筛选的表(通过制定表明)。

导出Oracle模式到一个PostgreSQL(7.3以后)模式中。

导出预定义函数、触发器、程序、包和包体。

导出范围和列表分区。

导出所有的数据或跟随一个WHERE子句。

充分支持Oracle BLOB对象作为PG的BYTEA。

导出Oracle视图作为PG表。

导出定义的Oracle用户格式。

提供关于转换PLSQL码为PLPGSQL的基本帮助(仍然需要手工完成)。

可在任何平台上工作。

Ora2Pg尽力将Oracle数据库转换到PostgreSQL中,但是仍需一部分的手动工作。Oracle特定的PL/SQL代码生成函数、过程和触发器时必须进行审查,以便匹配PostgreSQL的语法。你会发现一些有用的不利因素在将Oracle PL/SQL移植到PostgreSQL的PL/PGSQL。

支持的导出对象

这是允许导出的不同的格式,默认是TABLE:

TABLE:提取所有包括索引、主键、唯一键、外键和检查约束的表。

VIEW:提取视图。

GRANT:提取在所有对象中转换为Pg组、用户和权限的用户。

SEQUENCE:提取所有的序列以及上一个位置。

TABLESPACE:提取表空间。

TRIGGER:提取通过动作触发的被指定的触发器。

FUNCTION:提取函数。

PROCEDUERS:提取存储过程。

PACKAGE:提取包和包主体。

DATA:提取数据,生成INSERT语句。

COPY:提取数据,生成COPY语句。

PARTITION:提取范围和列表分区。

TYPE:提取Oracle用户自定义的格式。

(以下两条是10.0新加的)

FDW:提取外部数据封装表

PARTITION:提取作为快照刷新视图所建立的视图

数据类型转换对照

DATE timestamp

LONG text

LONG RAW bytea

CLOB text

NCLOB text

BLOB bytea

BFILE bytea

RAW bytea

ROWID oid

FLOAT double precision

DEC decimal

DECIMAL decimal

DOUBLE PRECISION double precision

INT integer

INTEGER integer

REAL real

SMALLINT smallint

BINARY_FLOAT double precision

BINARY_DOUBLE double precision

TINESTAMP timestamp

XMLTYPE xml

BINARY_INTEGER integer

PLS_INTEGER integer

(以下两条是10.0新加的)

TIMESTAMP WITH TIME ZONE timestamp with time zone

TIMESTAMP WITH LOCAL TIME ZONE timestamp with time zone

这些数据类型的转换可根据实际情况用户自己指定,通过ora2pg.conf中的DATA_TYPE指定。如果未指定,默认转换类型如上表。

10.0 changelog

整体上有了更多的改进以及bug的修复,出现了一个新的输出类型:SHOW_REPORT,它将输出一份关于您Oracle数据库中含有的所有对象的汇总报告及其导出建议。 通过该报告你可以使用一个新的指令ESTIMATE_COST使Ora2Pg来评估数据库的迁移成本(按人天计算)。 还有另一个新的配置指令EXTERNAL_TO_FDW,它允许所有Oracle外部表作为file_fdw外部表输出,默认是关闭的。
下面是具体的说明:

- Fix quote escaping on table comments.

- Fix some other issues with 8i databases, added database version auto-detection to avoid printinf warning.

- Allow null value in BFILE to the oar2pg_get_bfilename().

- Update documentation about BFILE export.

- Add drop function ora2pg_get_bfilename() when necessary.

- Add support to BFILE external path export by creating a function ora2pg_get_bfilename( p_bfile IN BFILE ) to retrieve path from BFILE. BFILE will be

exported as text field with the full path to the file as value. Note that this is the first time that Ora2Pg need write access to the Oracle database,

if you do not have BFILE or you have set the corresponding PostgreSQL type asd bytea (the default) the function will not be created.

- Fix a performance issue when extracting BLOB with a LongReadLen upper than 1MB.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值