1、安装oracle_fdw
可以去pgxn上下载对应的安装包。
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
设置环境变量
export ORACLE_HOME=/opt/oracle/instantclient
export OCI_LIB_DIR=
O
R
A
C
L
E
H
O
M
E
e
x
p
o
r
t
O
C
I
I
N
C
D
I
R
=
ORACLE_HOME export OCI_INC_DIR=
ORACLEHOMEexportOCIINCDIR=ORACLE_HOME/sdk/include
#保存退出,试环境变量生效
source /etc/profile
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 EXTENSION
这一步可能会出现类似这样的错误:
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.so
然后再次创建,如果还是提示缺少so文件,重复上述操作,基本就不会有问题了。
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中对应表的数据了
bill=# select * from fdw_test1 ;
id | info
----+------
1 | bill
(1 row)
同样也支持增删改查操作:
–pg中插入数据
bill=# insert into fdw_test1 values(2,'aaa');
INSERT 0 1
–oracle中查看
SQL> select * from test1;
ID INFO
---------- ----------
1 bill
2 aaa