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

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

  • 一、下载 oracle_fdw 插件包
    • 1.1、oracle_fdw 插件包 官网下载
    • 1.2、oracle_fdw 插件包 网盘下载
    • 1.3、oracle_fdw 插件包 Gitee下载
  • 二、解压 oracle_fdw 插件包
  • 三、把 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已安装的插件
    • 4.2、开始安装 oracle_fdw 插件
    • 4.3、用超级用户(postgre)登录解决报错
    • 4.4、再次执行安装 oracle_fdw 插件
    • 4.5、再次查询PostgreSQL已安装的插件
  • 五、PostgreSQL中通过oracle_fdw插件访问Oracle数据库
    • 5.1、PostgreSQL创建外部服务器(create server)
      • 5.1.1、用普通用户(tzq)创建外部服务器,发现报错
      • 5.1.2、超级用户(postgres)给普通用户(tzq)授予“创建外部服务器”的权限
      • 5.1.3、再次用普通用户(tzq)创建外部服务器
      • 5.1.4、查询外部服务器
      • 5.1.5、删除外部服务器
    • 5.2、PostgreSQL创建用户映射(create user mapping)
      • 5.2.1、创建用户映射
      • 5.2.2、查询用户映射
      • 5.2.3、修改用户映射
      • 5.2.4、删除用户映射
    • 5.3、PostgreSQL创建外部表
      • 5.3.1、Oracle的表结构
      • 5.3.2、PostgreSQL外部表的表结构
      • 5.3.3、PostgreSQL删除外部表

一、下载 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 解压到本地文件夹。
Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第1张图片

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

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第2张图片

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第3张图片

四、安装 oracle_fdw 插件(create extension)

4.1、查询PostgreSQL已安装的插件

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第4张图片
可以发现,oracle_fdw 插件还没有安装。

4.2、开始安装 oracle_fdw 插件

-- 创建oracle_fdw
create extension oracle_fdw;

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第5张图片
报错:ERROR: permission denied to create extension “oracle_fdw”
HINT: Must be superuser to create this extension.
没有权限来创建扩展"oracle_fdw"。必须是超级用户来创建这个扩展。

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

用超级用户(postgre)登录解决报错,如下图配置连接:
Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第6张图片

4.4、再次执行安装 oracle_fdw 插件

-- 创建oracle_fdw
create extension oracle_fdw;

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第7张图片
oracle_fdw 插件创建成功!

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

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第8张图片
可以发现,在已安装插件中可以看到 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');

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第9张图片
提示没有权限创建外部服务器。

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

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

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第10张图片

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

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第11张图片
创建成功!

5.1.4、查询外部服务器

select * from pg_foreign_server;

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第12张图片

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

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第13张图片

5.2.2、查询用户映射

select * from pg_user_mappings;

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第14张图片

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;

Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库_第15张图片
可以发现,Oracle数据可以从PostgreSQL读出来了!

5.3.3、PostgreSQL删除外部表

DROP FOREIGN TABLE IF EXISTS tzq.fdw_info_type CASCADE;

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

你可能感兴趣的:(PostgreSQL,postgresql)