目的介绍
现在项目开发遇到一个问题,就是需要从PostgreSQL中访问Oracle数据库
身为渣渣猿一脸懵逼。于是乎请教了公司的数据库方面的大牛韩工。告诉我用oracle_fdw 可以实现,但是在实现安装的过程中,还是各种问题,又麻烦韩工帮我看了好久。很不好意思,现在 针对这次安装的过程进行记录下,因为部署的时候还要用到
安装oracle_fdw
1.下载oracle_fdw
点击github下载。注意,你要下载和你postgresql版本项目的安装包。我就是下载的不一样的导致这里找了好久。
注意:我这里用的是oracle_fdw-2.0.0.这个版本,之前下了个2.1.0结果不可以
2.将文件移动到pg安装路径下
下载完成将zip包解压,把【lib】文件夹的oracle_fdw.dll和【share/extension】目录下的三个文件分别复制到PostgreSQL安装目录下的【lib】文件夹和【share/extension】目录里去。
-- 创建oracle_fdw
create extension oracle_fdw;
-- 语句能查询到oracle_fdw extension,如下图
select * from pg_available_extensions;
3.通过oracle_fdw访问oracle
--创建访问oracle的连接
create server oracle foreign data wrapper oracle_fdw options(dbserver '127.0.0.1:1521/orcl');
--授予zhazha用户访问权限
grant usage on foreign server oracle to zhazha;
--创建到oracle的映射
create user mapping for zhazha server oracle options(user 'SCOTT',password 'tiger');
--创建需要访问的oracle中对应表的结构
create foreign table emptest(
EMPNO NUMBER(4),
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
) server oracle options(schema 'SCOTT',table 'EMP');
--在pg中访问oracle的表
select * from emptest;
下面粘贴我查询出的
4.其他操作
-- 查询已创建的到oracle的连接
SELECT * from pg_user_mappings;
-- 删除创建的对象
drop foreign table emptest;
drop user mapping for highgo server oracle;
drop server oracle;
参考:
[1]:https://blog.csdn.net/ljinxin/article/details/77772587
[2]:https://blog.csdn.net/pg_hgdb/article/details/81700898