博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异构数据库连接:PostgreSQL调用Oracle
阅读量:4202 次
发布时间:2019-05-26

本文共 2696 字,大约阅读时间需要 8 分钟。

oracle_fdw已经有较为正式的版本(oracle_fdw-1.1.0),分别试验了本地PG连接到local windows oracle和本地PG连接到remote linux oracle(10.0.0.234)场景,select/insert/update/delete以及各种join/limit/order by等语句都可以很好的支持。

1、Install Oracle FDW

测试场景:PostgreSQL 9.3.4, Oracle XE 11g, oracle_fdw-1.1.0, Windows 7, Linux CentOS 6.3

https://github.com/laurenz/oracle_fdw/releases

把folder lib & share 里的文件copy 到PostgreSQL的安装目录

DROP EXTENSION oracle_fdw CASCADE;

CREATE EXTENSION oracle_fdw;

SELECT oracle_diag();

-- grant all on foreign data wrapper oracle_fdw to postgres;

2、Create connection

包括:install extension, external server name, user mapping, foregin table name

  e.g.

  CREATE SERVER oradb_234 FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//10.0.0.234:1521/devdb');

  CREATE USER MAPPING FOR postgres SERVER oradb_234 OPTIONS (user 'test', password 'test');

  CREATE FOREIGN TABLE ORA_234_TEST01 (id int options (key 'true'), name varchar(20)) SERVER oradb_234 OPTIONS (table 'TEST01'); -- TEST01 need to be uppercase

  -- GRANT USAGE ON FOREIGN SERVER oradb_234 TO postgres;

  SELECT rolname FROM pg_user -- pg_shadow, pg_roles

  -- CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }

3、Test connection

-- Remote Oracle

-- describe test01;

-- cmd>tnsping //10.0.0.234:1521/devdb -- expect OK

-- cmd>sqlplus test/test@//10.0.0.234:1521/devdb-- expect OK

-- PostgreSQL

-- \dx -- expect EXTENSION can be found

-- \d -- expect FOREIGN TABLE can be found

select * from ORA_234_TEST01;

insert into ORA_234_TEST01 values (2, 'from_PG');
update ORA_234_TEST01 SET name = 'from_PG1' where id = 2;
delete from ORA_234_TEST01 where id = 2;

4、Performance

性能方面当它需要copy大量数据时开销较大,其它情况则还好。以下是一些例子:

  select count(*) from ORA_234_TEST01; -- 184s, result: 971000
  select * from ORA_234_TEST01 limit 1 offset 900000; -- 160s
  select * from ORA_234_TEST01 limit 1; -- 0.1s
  select * from ORA_234_TEST01 where id = 900001; -- 0.2s

5、Note

  PostgreSQL 9.1 开始支持Oracle FDW

  PostgreSQL 9.2 support for ANALYZE is available

  PostgreSQL 9.3 Support for INSERT, UPDATE and DELETE is available

  FOREIGN TABLE - OPTIONS: dbserver,user,password,table (required); schema,plan_costs,readonly (optional)

  Remember that table and schema name must be in uppercase

  update / delete: options (key 'true') is required

  其它:还有一些FDW如JDBC_FDW, ODBC_FDW理论上也可以连去oracle,不过作者维护度很低也没正式发布版,不建议使用。

6、Reference

http://blog.itpub.net/133735/viewspace-730107

http://pgxn.org/dist/oracle_fdw/
http://francs3.blog.163.com/blog/static/4057672720122354546425/
http://www.csdn.net/article/2014-06-04/2820079/2

https://github.com/atris/JDBC_FDW

http://blog.osdba.net/522.html

http://www.postgresql.org/docs/9.3/static/fdwhandler.html

http://blog.163.com/digoal@126/blog/static/163877040201181505331588/

转载地址:http://owili.baihongyu.com/

你可能感兴趣的文章
MySQL性能优化的最佳20+条经验
查看>>
SQL语言的组成部分 ddl dcl dml
查看>>
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>
mysql一: 索引优化
查看>>
测试人员,今天再不懂BDD就晚了!
查看>>
是QA还是AQ?
查看>>
害怕自动化(1)
查看>>
Script and Test Data
查看>>
在ITPub上发表文章《如何进行测试自动化的成本估算》
查看>>
深圳市软件质量提升工程系列活动——安全测试百人大课堂
查看>>
做培训讲师就像做一名导演
查看>>
深圳51testing笔架山一日游
查看>>
LoadRunner如何在脚本运行时修改log设置选项?
查看>>
QC数据库表结构
查看>>
自动化测试工具的3个关键部分
查看>>
测试工具厂商的编程语言什么时候“退休”?
查看>>