前言:
有的时候有需求需要迁移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.11
计划在此服务器上安装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数据库即可
[root@oula2 ~]# cat oracle.yaml
version: '3'
services:
oracle:
restart: always
image: hub.c.163.com/springwen/oracle12c
container_name: oracle
volumes:
- /usr/local/oracle/data:/u01/app/oracle
- /usr/local/oracle/source:/docker-entrypoint-initdb.d
environment:
- "TZ=Asia/Shanghai"
- "DBCA_TOTAL_MEMORY=16192"
- "IMPORT_FROM_VOLUME=true"
ports:
- 53432:1521
- 36888:8080
logging:
driver: "json-file"
options:
max-size: "1g"
使用sqldeveloper连接该数据库:
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;
未完待续!!!!