广告
返回顶部
首页 > 资讯 > 精选 >PostgreSQL通过oracle_fdw访问Oracle数据的示例分析
  • 458
分享到

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

2023-06-15 04:06:18 458人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关postgresql通过oracle_fdw访问Oracle数据的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景:同一个项目两个系统分别使用了PG库和Oracle库,Orac

这篇文章给大家分享的是有关postgresql通过oracle_fdw访问Oracle数据的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

背景:

同一个项目两个系统分别使用了PG库和Oracle库,Oracle是生产库,数据动态更新,现在在PG库中需要实时的获取到更新的数据进行统计,基于此种方式,可以通过ETL的工具实现,但是需要定期进行维护等,于是想着是否可以通过类似于Oracle数据库DBLINK的方式去实现,经过网上查找相关资料,发现可以通过oracle_fdw实现。

测试环境:

本地搭建测试环境,基础配置如下:

Oracle数据库测试服务器(IP:192.168.1.110):WIN10操作系统,Oracle数据库版本为11.2.0.4,实例名为orcl,安装有32位客户端;

PG库测试服务器虚拟机,IP:192.168.30.128,NAT模式):WIN10操作系统,PG数据库版本为11.11.1;

实现步骤:

首先确定网络通常,在PG库服务器可以访问到Oracle库服务器。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

安装PG库(步骤略)。这里需要注意,安装完成的PG库没有开启远程访问,如果需要远程访问,需要先修改pg_hba.conf文件,添加以下内容即可。

host all all 0.0.0.0/0 md5

下载oracle_fdw,注意下载时候需要匹配PG库的版本。

下载地址:Releases · laurenz/oracle_fdw · GitHub

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

我这里下载的是匹配PG11,选择windows64位置操作系统的。

注意:fdw版本必须和PG库版本以及操作系统版本相对应,否则后面会出问题。

解压oracle_fdw,将【lib】和【share/extension】文件夹中文件拷贝到PG库安装路径下对应的【lib】和【share/extension】文件夹中。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

拷贝之后,通过sql语句可以查询到oracle_fdw,说明文件拷贝放置成功,但是尚未安装(isstalled_version为空)。

select * from pg_available_extensions;

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

安装Oracle客户端(步骤略)

先不用急着安装oracle_fdw(安装也不会成功),因为还需要Oracle客户端支持。如果不安装Oracle客户端,会有下面的错误提示。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

Oracle客户端建议和连接的Oracle服务端采用相同版本(测试有小版本差别也不影响,大版本未测试),另外看网上资料也可以按照轻量级的oracle instant client替代,这里我没有试过,有兴趣的可以尝试一下。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

安装完成后注意先进行连接测试,确保连接正常。

注意:客户端的版本必须和PG库的一致,例如我安装的是64位的PG库,那么一定要安装64位的oracle客户端,之前习惯安装了32位的客户端,在创建外部表后没法打开,提示下面错误。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

如果还是有问题,可以检查安装路径是否已经写入Path变量中,将其移动至最上面。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

创建安装oracle_fdw

-- 创建oracle_fdwcreate extension oracle_fdw;

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

安装成功后通过下面之前的语句进行验证。

select * from pg_available_extensions;

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

可以看到installed_version已经显示安装版本了,验证表示安装成功。

注意:如果多次安装失败,建议可以重启一下PG服务或者服务器后重试。

Oracle库中制作测试数据

数据库连接信息如下:192.168.1.110/orcl 用户名/密码:GIS/GIS

-- Create test tablecreate table ORACLEDATA_TEST (   ID   NUMBER(10) not null,   XZQMC        NVARCHAR2(50),   XZQDM        NVARCHAR2(30) )
-- insert test datainsert into oracledata_test values(1,'市南区','370202');insert into oracledata_test values(2,'市北区','370203');

增加测试数据后注意进行提交操作。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

PG库创建Oracle连接

--创建Oracle外部连接,其中oradb_110为连接名称create server oradb_110 foreign data wrapper oracle_fdw options(dbserver '192.168.1.110/orcl');

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

创建后可以通过连接获取Oracle数据库数据。

PG库进行用户授权

--授权grant usage on foreign server oradb_110 to postgres;

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

授权根据实际需要进行。

创建到Oracle的映射

--创建到oracle的映射create user mapping for postgres server oradb_110 options(user 'GIS',passWord 'GIS');

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

其中oradb_110是之前创建的数据库连接名称,GIS为连接Oracle的用户名和密码。

创建需要访问Oracle的对应表

注意这里创建的时候要注意字段类型的转换,Oracle和PG库在字段类型上还是有所差别的。其中oradb_110是我们上面创建的数据库连接名称,GIS是连接。

--创建需要访问的oracle中对应表的结构create foreign  table ORACLEDATA_TEST_PG (   ID   numeric(10) not null,   XZQMC        VARCHAR(50),   XZQDM        VARCHAR(30) ) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

注意:这里建立的表并不像是视图那样获取oracle指定表中的字段,而是通过顺序映射的方式,后面会进行测试说明。

现在通过外部表即可查看Oracle过来的数据。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

如果需要对创建的内容进行删除,可以使用下面语句:

DROP FOREIGN TABLE table_name;DROP USER MAPPING FOR user_name SERVER server_name;DROP SERVER server_name;

数据同步测试。

在oracle数据库中实时插入一条记录

-- insert test datainsert into oracledata_test values(3,'李沧区','370203');

插入数据后注意提交,然后查询确认。

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

在PG库中进行查询确认:

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

可以看到,数据可以实时的同步过去。

表映射测试。

例如现在的测试表中有三个字段,我在PG库中如果只用到第一个和第三个字段,那我的外部表这样去构建:

--创建需要访问的oracle中对应表的结构create foreign  table ORACLEDATA_TEST_PG_2 (   ID   numeric(10) not null,   XZQDM        VARCHAR(30) ) server oradb_110 options(schema 'GIS',table 'ORACLEDATA_TEST');

然后查询数据:

PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

从结果中可以看出,我们选择的xzqdm获取到的并非是xzqdm的值,而是xzqmc的值,其为根据顺序映射的,并非是通过字段名称映射。

性能方面

初步测试了一下,对于大数据量性能还是比较低的,这块没有进行严格的测试,后面有机会可以再补充。

感谢各位的阅读!关于“PostgreSQL通过oracle_fdw访问Oracle数据的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: PostgreSQL通过oracle_fdw访问Oracle数据的示例分析

本文链接: https://www.lsjlt.com/news/277665.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL通过oracle_fdw访问Oracle数据的示例分析
    这篇文章给大家分享的是有关PostgreSQL通过oracle_fdw访问Oracle数据的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景:同一个项目两个系统分别使用了PG库和Oracle库,Orac...
    99+
    2023-06-15
  • PostgreSQL通过oracle_fdw访问Oracle数据
    背景: 同一个项目两个系统分别使用了PG库和Oracle库,Oracle是生产库,数据动态更新,现在在PG库中需要实时的获取到更新的数据进行统计,基于此种方式,可以通过ETL的工具实现,但是需要定期进行维护等,于是想着是否可以通过类似于O...
    99+
    2016-10-07
    PostgreSQL通过oracle_fdw访问Oracle数据
  • PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
    背景: 同一个项目两个系统分别使用了PG库和Oracle库,Oracle是生产库,数据动态更新,现在在PG库中需要实时的获取到更新的数据进行统计,基于此种方式,可以通过ETL的工具实...
    99+
    2022-11-12
  • Spring数据库访问之ORM的示例分析
    这篇文章主要介绍Spring数据库访问之ORM的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring数据库访问中另外一大模块就是ORM,ORM即对象/关系映射。Spring支持大多数ORM框架,比如Hi...
    99+
    2023-06-17
  • 通过DWR来取数据给EXT的示例分析
    今天给大家介绍一下通过DWR来取数据给EXT的示例分析。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。最近在做通过DWR来取数据给EXT,但是发现PagingT...
    99+
    2023-06-03
  • oracle数据库CPU过高问题举例分析
    本篇内容介绍了“oracle数据库CPU过高问题举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2022-10-19
  • Vue源码之数据代理访问的示例分析
    小编给大家分享一下Vue源码之数据代理访问的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概念解析:1) 数据代理: 通...
    99+
    2022-10-19
  • js中return返回多个值,通过对象的属性访问的示例分析
    小编给大家分享一下js中return返回多个值,通过对象的属性访问的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ret...
    99+
    2022-10-19
  • 数据库中出现chmod 6751 oracle问题的示例分析
    这篇文章给大家分享的是有关数据库中出现chmod 6751 oracle问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体忘了怎么产生这个问题了,好像是迁移x3的库...
    99+
    2022-10-19
  • 通过报错问题了解Point事件的示例分析
    这篇文章主要介绍了通过报错问题了解Point事件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。起因从某个月黑风高的晚上开始,有人发...
    99+
    2022-10-19
  • Oracle数据行拆分多行的示例分析
    小编给大家分享一下Oracle数据行拆分多行的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单行拆分如果表数据只有一行,...
    99+
    2022-10-18
  • 数据库存储过程的示例分析
    这篇文章给大家分享的是有关数据库存储过程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 select * from&nb...
    99+
    2022-10-18
  • oracle中数据完整性的示例分析
    小编给大家分享一下oracle中数据完整性的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.  数据的完整性简介    ...
    99+
    2022-10-19
  • 微信用户访问小程序登录过程的示例分析
    这篇文章主要为大家展示了“微信用户访问小程序登录过程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信用户访问小程序登录过程的示例分析”这篇文章吧。概...
    99+
    2022-10-19
  • JS设计模式之数据访问对象模式的示例分析
    这篇文章主要为大家展示了“JS设计模式之数据访问对象模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS设计模式之数据访问对象模式的示例分析”这篇文...
    99+
    2022-10-19
  • Flex与.NET互操作中基于WebService数据访问的示例分析
    这篇文章将为大家详细讲解有关Flex与.NET互操作中基于WebService数据访问的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex与.NET互操作:基于WebService的数据访问F...
    99+
    2023-06-17
  • oracle数据库中表的操作示例分析
    这篇文章主要为大家展示了“oracle数据库中表的操作示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle数据库中表的操作示例分析”这篇文章吧。1...
    99+
    2022-10-18
  • ORACLE数据库性能优化的示例分析
    这篇文章给大家分享的是有关ORACLE数据库性能优化的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ORACLE数据库的优化方式和MYSQL等很大的区别,今天通过一个OR...
    99+
    2022-10-18
  • oracle虚拟专用数据库的示例分析
    这篇文章给大家分享的是有关oracle虚拟专用数据库的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同...
    99+
    2022-10-18
  • oracle数据库迁移到MySQL的示例分析
    这篇文章给大家分享的是有关oracle数据库迁移到MySQL的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方式一: 手动方式导入导出手动的方式导入, 就是操作步骤会比较...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作