pg同步数据至oracle,oracle同步数据到PostgreSQL——oracle_fdw
1.1、安装oracle客户端我这里使用的是pg的操作系统用户安装,也可以使用root用户安装(但是要设置pg用户的环境变量)pg12@oracle-> tar -zxvf instantclient_11_2.tar.gzpg12@oracle-> mv instantclient_11_2/ instantclient/pg12@oracle-> cd instantclie
1.1、安装oracle客户端
我这里使用的是pg的操作系统用户安装,也可以使用root用户安装(但是要设置pg用户的环境变量)
pg12@oracle-> tar -zxvf instantclient_11_2.tar.gz
pg12@oracle-> mv instantclient_11_2/ instantclient/
pg12@oracle-> cd instantclient
https://www.cndba.cn/foucus/article/3736
—设置环境变量
export ORACLE_HOME=/opt/oracle/instantclient
export OCI_LIB_DIR=$ORACLE_HOME
export OCI_INC_DIR=$ORACLE_HOME/sdk/include
https://www.cndba.cn/foucus/article/3736
—保存退出,试环境变量生效
source /etc/profilehttps://www.cndba.cn/foucus/article/3736
1.2、解压oracle_fdw
pg12@oracle-> unzip oracle_fdw-2.2.0.zip
pg12@oracle-> cd oracle_fdw-2.2.0
—编译
pg12@oracle->make
—安装
pg12@oracle-> make install
2、创建oracle_fdw扩展
bill=# create extension oracle_fdw;
CREATE EXTENSIONhttps://www.cndba.cn/foucus/article/3736
这一步可能会出现类似这样的错误:
bill=# create extension oracle_fdw;
ERROR: could not load library “/home/pg12/pgsql12.4/lib/oracle_fdw.so”: libclntsh.so: cannot open shared object file: No such file or directory
在ORACLE_HOME下找到对应的so文件,然后建立软连接(注意:这里要使用绝对路径)
pg12@oracle-> ln -s /home/pg12/instantclient/lib/libclntsh.so /home/pg12/pgsql12.4/lib/libclntsh.sohttps://www.cndba.cn/foucus/article/3736
然后再次创建,如果还是提示缺少so文件,重复上述操作,基本就不会有问题了。https://www.cndba.cn/foucus/article/3736
3、使用oracle_fdw
bill=# CREATE SERVER oradb_bill FOREIGN DATA WRAPPER oracle_fdw
OPTIONS (dbserver 'oradb');
bill=# create user mapping for bill server oradb_bill options(user 'orauser',password 'orapwd');
bill=# GRANT USAGE ON FOREIGN SERVER oradb_bill TO bill;
bill=# create foreign table fdw_test1(
id int,
info varchar(10)
) server oradb_bill options(schema 'orauser',table 'TEST1');
注意create server里面使用的’oradb’需要先在oracle客户端的tnsnames文件里面先配置好。
然后就可以查看oracle中对应表的数据了
https://www.cndba.cn/foucus/article/3736
https://www.cndba.cn/foucus/article/3736
bill=# select * from fdw_test1 ;
id | info
----+------
1 | bill
(1 row)
同样也支持增删改查操作:
—pg中插入数据https://www.cndba.cn/foucus/article/3736
bill=# insert into fdw_test1 values(2,'aaa');
INSERT 0 1
—oracle中查看
SQL> select * from test1;
ID INFO
---------- ----------
1 bill
2 aaa
版权声明:本文为博主原创文章,未经博主允许不得转载。
PostgreSQL oracle
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)