暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Ora2Pg的使用

IT那活儿 2021-10-24
3776
Ora2Pg简介

Ora2Pg 是一个免费工具,用于将 Oracle 或者 MySQL 数据库迁移到 PostgreSQL。它通过连接 Oracle 数据库,执行自动扫描并且提取数据库的结构和数据,然后生成相应的 SQL 脚本。这些脚本可以用于将数据库结构和数据导入 PostgreSQL 之中。

Ora2Pg 可以用于各种场景,小到 Oracle 数据库的反向工程,大到大型企业数据库迁移,或者简单地将一些 Oracle 数据复制到 PostgreSQL 数据库。它非常简单易用,甚至不需要任何 Oracle 数据库的相关知识,只需要提供连接到 Oracle 数据库的配置参数。

Ora2Pg 由一个 Perl 脚本(ora2pg)以及一个 Perl 模块(Ora2Pg.pm)组成,唯一需要做的事情就是修改它的配置文件 ora2pg.conf,设置连接 Oracle 数据库的 DSN 和一个可选的模式名称。完成之后,只需要设置导出的类型:TABLE(包括约束)、VIEW、MVIEW、TABLESPACE、SEQUENCE、INDEXES、TRIGGER、GRANT、FUNCTION、PROCEDURE、PACKAGE、PARTITION、TYPE、INSERT 或 COPY、FDW、QUERY、KETTLE 以及 SYNONYM。

默认情况下,Ora2Pg 导出一个文件,可以通过 psql 客户端将文件加载到 PostgreSQL 数据库;但是也可以在配置文件中设置一个数据库的 DSN,直接导入 PostgreSQL 数据库。通过 ora2pg.conf 中的配置选项,可以控制导出的内容和方式。

下面介绍ora2pg是如何迁移表数据的:

1. 安装依赖包

要求:perl版本5.8以上

# yum install perl-DBI perl-DBD-Pg perl-ExtUtils-MakeMaker gcc

# wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.74.tar.gz

# tar -zxvf DBD-Oracle-1.74.tar.gz

# cd DBD-Oracle-1.74

# source /home/oracle/.bash_profile

# perl Makefile.PL -l

# make

# make install

2. 安装 ora2pg包

下载地址:https://sourceforge.net/projects/ora2pg/files/?source=navbar

解压文件

# tar -jxvf ora2pg-22.1.tar.bz2

# cd ora2pg-22.1

# perl Makefile.PL

# make

# make install

默认安装在/usr/local/bin/目录下

3. 编辑配置文件

# vi ora2pg_tab_1.conf

ORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1

ORACLE_DSN dbi:Oracle:host=x.x.x.x;sid=PROD;port=xxx

ORACLE_USER xxxxxxx

ORACLE_PWD xxxx

LOGFILE /tmp/test.log

USER_GRANTS 0

SCHEMA xxxx

EXPORT_SCHEMA 0

#TYPE  TABLE

PARALLEL_TABLES 4

JOBS 4

PG_NUMERIC_TYPE 0

PG_INTEGER_TYPE 1

DEFAULT_NUMERIC   float

SKIP     fkeys pkeys ukeys indexes checks

NLS_LANG AMERICAN_AMERICA.UTF8

OUTPUT output.sql

LIMIT 100000

PG_DSN    dbi:Pg:dbname=xxxx;host=x.x.x.x;port=xxx

PG_USER    xxx

PG_PWD    xxxxxx

PG_SCHEMA  xxx

LOG_ON_ERROR 0

BLOB_LIMIT  100

TRUNCATE_TABLE 1

DISABLE_SEQUENCE 1

PG_VERSION 12

EMPTY_LOB_NULL

ORA_INITIAL_COMMAND

IMPORT  imp_tab_1.conf

CREATE_SCHEMA 1

COMPILE_SCHEMA 0

debug 1

# vi imp_tab_1.conf

allow tablename

4. 执行导入

# nohup ora2pg -t COPY -c /data/ora2pg/huang/ora2pg_tab_1.conf -T /tmp/huang &

5. 查看导入日志

# tail -111f tmp/test.log

可以看到当前导入速度

导入完成,可以看到平均速度

注意事项:

  • 迁移数据之前一定要确保源端和目标端的表名、表结构都完全一致,否则导入会失败。

  • 开并行需谨慎,需要根据机器CPU的当前使用情况来确定。如果只导入单表,可以将PARALLEL_TABLES参数为调整为1。

  • 配置文件中的用户需要对表有相关使用权限,建议导数时使用高权限用户。

  • TRUNCATE_TABLE参数会清空目标端表中现有数据,需要根据实际情况谨慎使用。

END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论