赞
踩
官网下载地址:https://github.com/laurenz/oracle_fdw/releases
网盘下载地址:https://pan.baidu.com/s/1iGV8cA-HqHNRKf75zkuXUA?pwd=yyds
Gitee下载地址:https://gitee.com/tttzzzqqq/tzq-learn/blob/master/Oracle/oracle_fdw-2.5.0-pg12-win64.zip
把下载好的 oracle_fdw-2.5.0-pg12-win64.zip 解压到本地文件夹。
-- 查询安装的插件
select * from pg_available_extensions
where installed_version is not null;
可以发现,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"。必须是超级用户来创建这个扩展。
用超级用户(postgre)登录解决报错,如下图配置连接:
-- 创建oracle_fdw
create extension oracle_fdw;
oracle_fdw 插件创建成功!
-- 查询安装的插件
select * from pg_available_extensions
where installed_version is not null;
可以发现,在已安装插件中可以看到 oracle_fdw 插件已经被安装了,版本是1.2。
还是切换回普通用户(tzq)
create server to_ora42 foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/TZQ');
提示没有权限创建外部服务器。
用超级用户(postgres)创建会话,执行下面命令,给普通用户(tzq)授予“创建外部服务器”的权限:
-- 给普通用户(tzq)授予“创建外部服务器”的权限
grant all PRIVILEGES ON FOREIGN DATA WRAPPER oracle_fdw to tzq;
-- 创建外部服务器
create server to_ora_tzq foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/TZQ');
创建成功!
select * from pg_foreign_server;
移除一个外部服务器描述符:
DROP SERVER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
定义一个用户到一个外部服务器的新映射。
给PostgreSQL数据库中tzq用户,授予外部服务器(to_ora_tzq)、用户log的用户映射:
create user mapping for tzq server to_ora_tzq options(user 'log',password '1');
select * from pg_user_mappings;
ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER | PUBLIC }
SERVER server_name
OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name
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
);
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读出来了!
DROP FOREIGN TABLE IF EXISTS tzq.fdw_info_type CASCADE;
至此,Windows下安装oracle_fdw:从PostgreSQL中访问Oracle数据库 ,全部讲完了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。