当前位置:   article > 正文

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_postgresql连接oracle

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;
  • 1
  • 2
  • 3

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

4.2、开始安装 oracle_fdw 插件

-- 创建oracle_fdw
create extension oracle_fdw;
  • 1
  • 2

在这里插入图片描述
报错: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;
  • 1
  • 2

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

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

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

在这里插入图片描述
可以发现,在已安装插件中可以看到 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');
  • 1

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

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

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

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

在这里插入图片描述

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

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

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

5.1.4、查询外部服务器

select * from pg_foreign_server;
  • 1

在这里插入图片描述

5.1.5、删除外部服务器

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

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

  • 1
  • 2

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');
  • 1

在这里插入图片描述

5.2.2、查询用户映射

select * from pg_user_mappings;
  • 1

在这里插入图片描述

5.2.3、修改用户映射

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

5.2.4、删除用户映射

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

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
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

5.3.3、PostgreSQL删除外部表

DROP FOREIGN TABLE IF EXISTS tzq.fdw_info_type CASCADE;
  • 1

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/872955
推荐阅读
相关标签
  

闽ICP备14008679号