postgresql-9.5.6 安装 oracle_fdw 插件
一、 环境
Linuex:CentOS6.2
PG:postgresql-9.5.6
Oracle:oracle11.2client
Oracle_fdw: oracle_fdw_1_5
https://pgxn.org/dist/oracle_fdw/
要注意看官方文档的 readme 文件,需要安装 oracle 客户端的 sdk 包
二、 下载
进入 pg 源码目录 git 下载或者下载 zip 文件上传到服务器
[root@localhost network-scripts]# cd /home/wsxcde/soft/pg/postgresql-9.5.6/contrib
[root@localhost contrib]# git clone git://github.com/laurenz/oracle_fdw.git
三、 安装
检查 pg 的 pg_config 目录以及 pg_config 变量
[root@localhost oracle_fdw]# find / -name pg_config
[root@localhost oracle_fdw]# which pg_config
检查 pg_config
[root@localhost contrib]# cd oracle_fdw
[root@localhost oracle_fdw]# make install
确认是否安装成功
[root@localhost oracle_fdw]# find / -name oracle_fdw.so
四、 测试
提示 libclntsh.so.11.1 无法打开共享对象文件
locate libclntsh.so 没有发现,但进入 oralce 的 lib 目录有这个文件
怀疑/etc/profile 文件未实际生效
重启服务器,create extension oracle_fdw 成功
4.1 创建扩展
create extension oracle_fdw;
4.2 创建服务器
create server ora_client_dw1 foreign data wrapper oracle_fdw options(dbserver '//134.132.9.7:1521/dw');
CREATE USER MAPPING FOR postgres SERVER ora_client_dw1 OPTIONS (user 'dw', password 'xxxx');
4.3 创建用户密码
create server ora_client_dw2 foreign data wrapper oracle_fdw options(dbserver '//134.132.9.8:1521/dw');
CREATE USER MAPPING FOR postgres SERVER ora_client_dw2 OPTIONS (user 'dw', password 'xxxx');
4.4 创建外部表
CREATE FOREIGN TABLE oratab (
字段
) SERVER oracle_server OPTIONS (schema '用户名', table '表名');
用户名、表名要大写
4.5 DML(insert,updqate,delete)操作
在 postgres9.3 版本以后 oracle_fdw 支持对外部表的 Insert ,delete ,update ;
增加表操作项 options(key 'true') (当值设置为 true|on|yes 表示可以做增删改操
作) 默认值 false
CREATE FOREIGN TABLE ora.a (
prod_id int8 options(key 'true'),
offer_spec_name varchar(1600) COLLATE default,
stat_offer_name_2 varchar(1643) COLLATE default,
stat_offer_name_1 varchar(1600) COLLATE default
) SERVER ora_client_dw1
OPTIONS (schema 'DW', table 'A');