前言:

有的时候有需求需要迁移Oracle数据库的数据到postgresql,那么,其实可供选择的工具是比较多的,但从迁移效率,准确度这些角度来选择的话,无疑还是GitHub上的开源免费工具ora2pg比较合适的。

ora2pg的优点是免费,迁移速度快,迁移数据准确,部署简单,快速

下面将介绍如何在A服务器 centos7下面部署安装ora2pg,在另一台服务器B上通过docker安装部署一个Oracle,并简单的写一些数据

环境简介:

A服务器的IP是192.168.123.11,操作系统是centos,安装有postgresql数据库

B服务器的IP是192.168.123.12,操作系统是centos,安装有docker启动的Oracle数据库

一,

postgresql的概况

pg数据库所在服务器的IP地址是 192.168.123.11postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用-LMLPHP

计划在此服务器上安装ora2pg

二,

ora2pg的安装部署

相关文件在百度网盘上,地址如下:

链接:https://pan.baidu.com/s/1ixb6Vi7aCvNXfzWOqM13rw?pwd=ora2 
提取码:ora2 
--来自百度网盘超级会员V5的分享

版本说明:

ora2pg的版本选用的比较高,考虑到pg数据库版本是12,Oracle数据库的版本是11g,还算比较新,并且ora2pg版本高一点,功能会稍微多一点。

架构说明:

ora2pg的工作原理是利用Oracle的客户端,通过dbd插件和dbi插件连接Oracle数据库,读取预设的自定义规则(自定义规则定义在ora2pg的配置文件内),按照设定规则扫描Oracle数据库内的目标表,逆向生成可供postgresql数据库直接使用的SQL存储语句

1,

dbi的安装

yum install -y perl-DBI

该插件基本不需要考虑太多版本问题,直接本地仓库yum安装即可。

2,

dbd的安装

cd DBD-Oracle-1.83/
perl Makefile.PL -l
make
make install

基本没什么好说的,基础的编译环境具备就可以了

3,

oracle的客户端安装

unzip instantclient-basic-linux.x64-19.20.0.0.0dbru.zip
unzip instantclient-sdk-linux.x64-19.20.0.0.0dbru.zip
unzip instantclient-sqlplus-linux.x64-19.20.0.0.0dbru.zip
mkdir -p  /opt/user/lib 
mv instantclient_19_20 /opt/user/lib
cd /opt/user/lib
chmod 755 /opt/user/lib/instantclient_19_20/
chmod 755 -Rf /opt/user/lib/instantclient_19_20/
echo "export PATH=/opt/user/lib/instantclient_19_20/:$PATH">>/etc/profile
echo "export LD_LIBRARY_PATH=/opt/user/lib/instantclient_19_20/:$LD_LIBRARY_PATH">>/etc/profile
source /etc/profile



4,

ora2pg的安装

该安装类似DBD的安装,没什么好说的

 cd ora2pg-23.1/
 perl Makefile.PL -l
 echo $?
 make
 echo $?
 make install
 echo $?

三,

Oracle数据库的部署

Oracle数据库部署非常简单,因为是测试性质,因此,使用docker结合docker-compose拉起Oracle数据库即可

 使用sqldeveloper连接该数据库:

postgresql|数据库|数据迁移神器ora2pg的安装部署和初步使用-LMLPHP

sys用户的密码是oracle

创建emp测试表:

CREATE TABLE emp (  
  emp_id   NUMBER(10) PRIMARY KEY,  
  emp_name VARCHAR2(50),  
  emp_age  NUMBER(3),  
  emp_sal  NUMBER(10, 2)  
);

创建测试用户:

CREATE USER gzmpc
IDENTIFIED BY PASSWORD
DEFAULT TABLESPACE gzmoc_wk
TEMPORARY TABLESPACE gzmoc_wk_tablespace_temp;
grant create session to gzmpc;
grant create table to gzmpc;
grant unlimited tablespace to gzmpc;
ALTER USER gzmpc IDENTIFIED BY gzmpc;

未完待续!!!!

09-09 09:42