前言:基于FDW(Foreign Data Wrappers)插件可以如本地表一般在PG里访问其他异构数据库的表,下面再次记录并分享下oracle_fdw的配置使用过程,其他fdw如tds_fdw(访问sqlserver),mysql_fdw(访问mysql)类似。
1. 安装oracle客户端相关包
--安装基础包 # yum install oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm --安装开发包 # yum install oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
复制
本文根据目标oracle库的版本选择11.2,oracle_fdw作者推荐安装版本为10.2.0.5,
原文如下:
For maximum coverage use Oracle Client 10.2.0.5, as this will allow you to connect to every server version from 8.1.7 to 12.1.0 except 9.0.1.
2. 检查环境变量
--检查pg_config环境变量 # which pg_config --检查oracle动态库的环境变量 # cat /etc/ld.so.conf include ld.so.conf.d/*.conf /usr/lib/oracle/11.2/client64/lib # ldconfig
复制
oracle_fdw可以使用普通用户编译安装,根据pg的安装方式灵活选择。
特别注意当系统有多个版本的pg或者多个版本的oracle客户端包存在时需要明确指定。
3. 安装oracle_fdw
-- 下载文件 # wget https://codeload.github.com/laurenz/oracle_fdw/zip/master -- 解压master文件后直接编译安装 # make && make install
复制
4. 数据库使用超级用户创建扩展
$ psql -Upostgres nmse nmse=# create extension oracle_fdw with schema public; CREATE EXTENSION nmse=# select oracle_diag(); oracle_diag ------------------------------------------------------------- oracle_fdw 2.2.0, PostgreSQL 12.0, Oracle client 11.2.0.4.0 (1 row) --赋予数据普通用户jswy使用oracle_fdw的权限 nmse=# grant USAGE on FOREIGN data wrapper oracle_fdw to jswy; GRANT nmse=# \q
复制
5.普通用户创建server,配置oracle的连接参数
$ psql -Ujswy nmse nmse=> create server server_ora foreign data wrapper oracle_fdw options(dbserver 'ip:port/sid'); CREATE SERVER
复制
6.普通用户创建pg和oracle之间的用户映射user mapping
nmse=> create user mapping for jswy server server_ora options(user 'scott', password 'tigger'); CREATE USER MAPPING
复制
options里的user可以使用小写,插件做了小写转oracle大写的处理
7.创建外部表
$ psql -Ujswy nmse CREATE FOREIGN TABLE public.f_oracle_test ( id int, info character varying ) SERVER server_ora OPTIONS ( schema 'scott', "table" 'AA' );
复制
8.注意事项总结
- 映射表的字段顺序需要保持一致,
- oracle端表字段发生变化,需要重建外部表,
- 另外可能会遇到错误
ORA-08177: can’t serialize access for this transaction,这是因为oracle_fdw使用的事务级别为serialized transactions,可通过修改源码,调整级别,具体参考官网
更多配置参考 https://github.com/laurenz/oracle_fdw
往期回顾
保持联系
从2019年12月开始写第一篇文章,分享的初心一直在坚持,本人现在组建了一个PG乐知乐享交流群,欢迎关注我文章的小伙伴进群吹牛唠嗑,交流技术,互赞文章。
如果群二维码失效可以加我微信。
最后修改时间:2022-10-23 10:22:10
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
目录