Mac上使用Ora2Pg迁移Oracle到PostgreSQL

一、安装Ora2Pg

下载Ora2Pg

Terminal:
tar xzf ora2pg-17.6.tar.gz
cd ora2pg-17.6/
perl Makefile.PL
make && make install

这个过程会把Ora2Pg.pm装到Perl库, 把ora2pg放到/usr/local/bin/,ora2pg.conf.dist放到/etc/ora2pg/

二、安装DBD::Oracle

Terminal:
perl -MCPAN -e shell
cpan> get DBD::Oracle
cpan> quit
cd ~/.cpan/build/DBD-Oracle*
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
perl Makefile.PL
make
make install
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
perl -MCPAN -e 'install DBD::Oracle'

三、安装DBD::Pg

Terminal
perl -MCPAN -e shell
cpan> get DBD::Pg
cpan> quit
cd ~/.cpan/build/DBD-Pg*
export POSTGRES_HOME=/usr/local/Cellar/postgresql/9.5.3
export POSTGRES_INCLUDE=/usr/local/Cellar/postgresql/9.5.3/include
export POSTGRES_LIB=/usr/local/Cellar/postgresql/9.5.3/lib
perl Makefile.PL
make
make install

四、配置conf文件

#ora2pg.conf:
#连接Oracle
ORACLE_HOME /opt/instantclient_12_1/
ORACLE_DSN dbi:Oracle:host=xxxx;sid=orcl
ORACLE_USER xxxxx
ORACLE_PWD xxxx
#调试打开
DEBUG 1
#重要的参数,要迁移的对象名,数据类型,比如我的是xxxx
SCHEMA xxxx
TYPE TABLE
#连接Postgre
PG_DSN dbi:Pg:dbname=xxxx;host=localhost;port=5432
PG_USER xxxx
PG_PWD xxxx
#输出sql文件
OUTPUT output.sql

五、从Oracle导出output.sql

Terminal:
ora2pg -c ora2pg.conf.dist

六、导入output.sql到PostgreSQL

Terminal:
psql 数据库名 < output.sql

七、开始同步所有数据

把ora2pg.conf里的数据类型改成DATA,再次执行ora2pg
TYPE DATA

ora2pg -c ora2pg.conf.dist
数据迁移成功。

八、一些相关的Pg指令

  • 创建数据库 createdb 数据库名称 -O 用户名 -E UTF8 -e;
  • 删除数据库 dropdb -U 用户名 数据库名称;
  • 赋予所有权限 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO 用户名;
  • 设为管理员 GRANT 管理员名 TO 用户名;

你可能感兴趣的:(database,postgresql,oracle,终端,perl,迁移)