1.下载instant oracle client

下载网址:https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

下载如下两个压缩包:

instantclient-basic-linux.x64-11.2.0.4.0.zip

instantclient-sdk-linux.x64-11.2.0.4.0.zip

oracle_fdw依赖上述两个包,包里面的内容可以在oracle下载页查看,如下

Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications

Instant Client Package - SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client

oracle_fdw官方(https://github.com/laurenz/oracle_fdw#5-installation-requirements)介绍里面有以下对依赖包的描述:

You need to install Oracle's C header files as well (SDK package for Instant Client). If you use the Instant Client ZIP files provided by Oracle, you will have to create a symbolic link from libclntsh.so to the actual shared library file yourself.

2.安装instant oracle client

# mkdir /usr/local/oracle
# unzip -d /usr/local/oracle instantclient-basic-linux.x64-11.2.0.4.0.zip
# unzip -d /usr/local/oracle instantclient-sdk-linux.x64-11.2.0.4.0.zip

3.下载并上传oracle_fdw

下载网址:https://github.com/laurenz/oracle_fdw/releases

4.配置环境变量(主要是动态链接库)

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib:/usr/local/oracle/instantclient_11_2
# export PATH=$PATH:/usr/local/pgsql/bin
# export ORACLE_HOME=/usr/local/oracle/instantclient_11_2
# cd /usr/local/oracle/instantclient_11_2
# oracle_fdw找的是libclntsh.so,因此要加一个软连接去掉版本号
# ln -s libclntsh.so.11.1 libclntsh.so
# unzip oracle_fdw-ORACLE_FDW_2_1_0.zip
# cd oracle_fdw-ORACLE_FDW_2_1_0
# make
# make install

注意:这些环境变量是临时的,安装oracle_fdw使用

在后面pg中创建插件的时候,还是会报找不到动态连接库(虽然我配置了postgres用户的LD_LIBRARY_PATH环境变量),后面通过修改ld.conf解决(详见第五步),因此这里的LD_LIBRARY_PATH环境变量配置可以直接使用后面的ld.conf解决,但为显示整个过程,这里暂时使用临时变量

5.进入数据库安装插件

# su - postgres
# psql
postgres=# create extension oracle_fdw;

执行会报错:ERROR:  could not load library "/usr/local/pgsql-10.6/lib/oracle_fdw.so": libclntsh.so.11.1: cannot open shared object file: No such file or directory

通过以下步骤解决:

# cd /etc/ld.so.conf.d/
# vi oracle-x86_64.conf
-------------------------------------
/usr/local/oracle/instantclient_11_2
-------------------------------------
# ldconfig

将oracle的库加入动态链接库,再次添加擴展即可

6.創建tnsnames.ora

# cd /usr/local/oracle/instantclient_11_2/
# mkdir -p network/admin/

创建一个或者复制一个tnsnames.ora过来,配置TNS

7.外部表使用

创建外部服务器

create server oracle_test foreign data wrapper oracle_fdw options(dbserver 'db');

oracle_test为外部服务器的名称,db为上一步tnsnames.ora中配置的tns

授权

grant usage on foreign server oracle_test to postgres;

本步不是必须的,如果要给非外部服务器的创建者使用,可以赋权

创建mapping

create user mapping for postgres server oracle_test options (user 'oracle', password 'oracle');

进入oracle数据库的凭证

创建外部表

create foreign table
test_fdw( id int,
name varchar(10) ) server oracle_test options (schema 'USER01',table 'TEST01');

schema和table必须为大写,否则无法使用

查看外部服务的信息

select oracle_diag();
select * from test_fdw;

oracle_fdw的安装和使用的更多相关文章

  1. postgres外部表之-oracle_fdw

    1. 安装Oracle客户端工具 编译安装oracle_fdw之前,需要安装Oracle的客户端程序:步骤略 下载地址:http://www.oracle.com/technetwork/databa ...

  2. Oracle_FDW 使用介绍

    本文以例子的形式介绍 KingbaseES(Postgresql)数据库如何通过 oracle_fdw 扩展访问Oracle数据库.以下例子在PG12.3 与 KingbaseES V8R6进行过实际 ...

  3. PostgreSQL之oracle_fdw安装与使用

    目的介绍 现在项目开发遇到一个问题,就是需要从PostgreSQL中访问Oracle数据库 身为渣渣猿一脸懵逼.于是乎请教了公司的数据库方面的大牛韩工.告诉我用oracle_fdw 可以实现,但是在实 ...

  4. oracle_fdw安装及使用(无法访问oracle存储过程等对象)

    通过oracle_fdw可以访问oracle中的一些表和视图,也可以进行修改,尤其是给比较复杂的系统使用非常方便. (但不能使用oracle_fdw来访问oracle的存储过程.包.函数.序列等对象) ...

  5. oracle迁移postgres之-oracle_fdw

    1. 安装oracle_fdw 在编译安装前,需要设置postgres的环境变量,如在.bash_profile中增加: export ORACLE_HOME=/u01/app/oracle expo ...

  6. 在PostgreSQL中使用oracle_fdw访问Oracle

    本文讲述如何在PostgreSQL中使用oracle_fdw访问Oracle上的数据. 1. 安装oracle_fdw 可以参照:oracle_fdw in github 编译安装oracle_fdw ...

  7. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  8. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  9. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

随机推荐

  1. AWT01-体系概述

    1.概述 AWT(Abstract Window Toolkit),中文译为抽象窗口工具包,该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具. ...

  2. 【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案

    DockPanelSuite 是 Winform 中优秀的布局控件,但是这次使用过程中却出了个问题. 我遇到的问题是这样的,主窗体是通过 ShowDialog 显示的,子窗体的停靠状态为 DockSt ...

  3. Docker(三):Docker安装MySQL

    查找MySQL镜像 镜像仓库 https://hub.docker.com/ 下拉镜像 docker pull mysql:5.7 查看镜像 docker images 创建MySQL容器 命令式启动 ...

  4. Spring(一)--简介

    一.概述(什么是spring): Spring是分层的Java SE/EE应用full-stack(一站式)轻量级开源框架.他解决的是业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统 ...

  5. Yii2 给表添加字段后报错 Getting unknown property

    手动在数据库中添加了image字段 然后再模型类Image中的 rule方法也将image的验证规则放进去了 但是在 $model = new Image 后,使用$model->iamge 还 ...

  6. Spring Cloud OpenFeign的原理(六)

    通过上篇我们了解OpenFeign他也可以完成远程通信,但是它并不是真正义意上的RPC通信,因为他是通过封装代理来实现的,下面和以前一样,知道了怎么用就来看下他是怎么实现的. 一.思考Feign要做的 ...

  7. java基础模拟考试三套试卷

    卷1: 一.单选题(15道,共30分) //1.下列关于JDK.JRE.JVM关系描述正确的是 (A) A:JDK是开发工具,包含了JRE.JRE是运行环境,包含了JVM.JVM是虚拟机,可以保证跨平 ...

  8. 【终极版】利用阿里云云解析API实现动态域名解析(ddns),搭建私有服务器【含可执行文件和源码】

    前言:懒人可以直接往下看,有代码和全部资源可以下载.此文章是先前文章的定时版,主要是添加了定时执行的功能,并且将代码中的配置项放置到了app.config文件中,方便不懂开发的朋友修改使用.未经许可请 ...

  9. 6.mysql存储过程

    存储过程 1.命令 创建及调用 定义分隔符 DELIMITER $ 创建存储过程 delimiter $$ create procedure 名称() begin 语句 end$$ delimiter ...

  10. 小团队产品研发管理V0.0.1

    序言 之前做研发的时候非常鄙视管理,觉得管理的那些人就知道搞政治,后来做了开发主管,以及到部门经理之后,管的人多了发现管理真是门大学问,真的应该每个人都要学习一些基本管理知识,特别是刚入社会的打工人. ...