Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库

一、下载 oracle_fdw 插件包

1.1、oracle_fdw 插件包 官网下载

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

1.2、oracle_fdw 插件包 网盘下载

网盘下载地址:https://pan.baidu.com/s/1iGV8cA-HqHNRKf75zkuXUA?pwd=yyds

1.3、oracle_fdw 插件包 Gitee下载

Gitee下载地址:https://gitee.com/tttzzzqqq/tzq-learn/blob/master/Oracle/oracle_fdw-2.5.0-pg12-win64.zip

二、解压 oracle_fdw 插件包

把下载好的 oracle_fdw-2.5.0-pg12-win64.zip 解压到本地文件夹。
在这里插入图片描述

三、把 oracle_fdw 解压后的文件和目录拷贝到对应的PostgreSQL安装目录

3.1、把【lib】文件夹的 oracle_fdw.dll 文件复制到PostgreSQL安装目录下的【lib】文件夹

在这里插入图片描述

3.2、把【share/extension】目录下的四个文件复制到PostgreSQL安装目录下的【share/extension】文件夹

在这里插入图片描述

四、安装 oracle_fdw 插件(create extension)

4.1、查询PostgreSQL已安装的插件

-- 查询安装的插件
select * from pg_available_extensions 
 where installed_version is not null;

在这里插入图片描述
可以发现,oracle_fdw 插件还没有安装。

4.2、开始安装 oracle_fdw 插件

-- 创建oracle_fdw
create extension oracle_fdw;

在这里插入图片描述
报错:ERROR: permission denied to create extension “oracle_fdw”
HINT: Must be superuser to create this extension.
没有权限来创建扩展"oracle_fdw"。必须是超级用户来创建这个扩展。

4.3、用超级用户(postgre)登录解决报错

用超级用户(postgre)登录解决报错,如下图配置连接:
在这里插入图片描述

4.4、再次执行安装 oracle_fdw 插件

-- 创建oracle_fdw
create extension oracle_fdw;

在这里插入图片描述
oracle_fdw 插件创建成功!

4.5、再次查询PostgreSQL已安装的插件

-- 查询安装的插件
select * from pg_available_extensions 
 where installed_version is not null;

在这里插入图片描述
可以发现,在已安装插件中可以看到 oracle_fdw 插件已经被安装了,版本是1.2。

五、PostgreSQL中通过oracle_fdw插件访问Oracle数据库

还是切换回普通用户(tzq)

5.1、PostgreSQL创建外部服务器(create server)

5.1.1、用普通用户(tzq)创建外部服务器,发现报错

create server to_ora42 foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/TZQ');

在这里插入图片描述
提示没有权限创建外部服务器。

5.1.2、超级用户(postgres)给普通用户(tzq)授予“创建外部服务器”的权限

用超级用户(postgres)创建会话,执行下面命令,给普通用户(tzq)授予“创建外部服务器”的权限:

-- 给普通用户(tzq)授予“创建外部服务器”的权限
grant all PRIVILEGES ON FOREIGN DATA WRAPPER oracle_fdw to tzq;

在这里插入图片描述

5.1.3、再次用普通用户(tzq)创建外部服务器

-- 创建外部服务器
create server to_ora_tzq foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/TZQ');

在这里插入图片描述
创建成功!

5.1.4、查询外部服务器

select * from pg_foreign_server;

在这里插入图片描述

5.1.5、删除外部服务器

移除一个外部服务器描述符:

DROP SERVER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

5.2、PostgreSQL创建用户映射(create user mapping)

5.2.1、创建用户映射

定义一个用户到一个外部服务器的新映射。
给PostgreSQL数据库中tzq用户,授予外部服务器(to_ora_tzq)、用户log的用户映射:

create user mapping for tzq server to_ora_tzq options(user 'log',password '1');

在这里插入图片描述

5.2.2、查询用户映射

select * from pg_user_mappings;

在这里插入图片描述

5.2.3、修改用户映射

ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER | PUBLIC }
    SERVER server_name
    OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )

5.2.4、删除用户映射

DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name

5.3、PostgreSQL创建外部表

5.3.1、Oracle的表结构

create table INFO_TYPE
(
  info_type_id     NUMBER not null,
  info_type_name   VARCHAR2(200) not null,
  parent_id        NUMBER,
  created_by       NUMBER not null,
  creation_date    DATE default sysdate not null,
  last_updated_by  NUMBER not null,
  last_update_date DATE default sysdate not null,
  delete_flag      CHAR(1) default 'N' not null,
  deleted_by       NUMBER,
  delete_date      DATE
);

5.3.2、PostgreSQL外部表的表结构

CREATE FOREIGN TABLE tzq.fdw_info_type
(
  info_type_id     INT8 not null,
  info_type_name   VARCHAR(200) not null,
  parent_id        INT8,
  created_by       INT8 not null,
  creation_date    TIMESTAMP default CURRENT_TIMESTAMP not null,
  last_updated_by  INT8 not null,
  last_update_date TIMESTAMP default CURRENT_TIMESTAMP not null,
  delete_flag      VARCHAR(1) default 'N' not null,
  deleted_by       INT8,
  delete_date      TIMESTAMP
)SERVER to_ora_tzq
OPTIONS (schema 'LOG',table 'INFO_TYPE');

SELECT * FROM tzq.fdw_info_type;

在这里插入图片描述
可以发现,Oracle数据可以从PostgreSQL读出来了!

5.3.3、PostgreSQL删除外部表

DROP FOREIGN TABLE IF EXISTS tzq.fdw_info_type CASCADE;

至此,Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库 ,全部讲完了!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值