oracle_fdw

一个提供支持连接 PostgreSQL 到 Oracle 数据库的外键数据包装器

oracle_fdw 是一个 外键数据包装器 (FDW),提供支持连接 PostgreSQL 到 Oracle 数据库。

发行历史

这是主要版本发布的摘要;有关版本发布的完整和详细列表,请参阅 oracle_fdw 版本发布页面CHANGELOG

示例

以下示例假设 PostgreSQL 系统用户能够使用以下连接字符串连接到 Oracle 服务器

fdwtest/foo@//oracle.localhost:1521/orclpdb1

创建 Oracle 表

CREATE TABLE fdw_test (
  id INT NOT NULL PRIMARY KEY,
  val VARCHAR(128)
);

设置 oracle_fdw

postgres=# CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw
             OPTIONS (dbserver '//oracle.localhost:1521/orclpdb1');
CREATE SERVER
postgres=# CREATE USER MAPPING FOR CURRENT_USER SERVER oradb
             OPTIONS (user 'fdwtest', password 'foo');
CREATE USER MAPPING

定义一个 外键表

postgres=# CREATE FOREIGN TABLE ora_fdw_test (
             id INT OPTIONS (key 'true') NOT NULL,
             val VARCHAR(128)
           )
             SERVER oradb
             OPTIONS (table 'FDW_TEST');
CREATE FOREIGN TABLE

插入、更新和删除数据

postgres=# INSERT INTO ora_fdw_test VALUES(1, 'foo'), (2,'bar');
INSERT 0 2

postgres=# SELECT * FROM ora_fdw_test;
 id | val 
----+-----
  1 | foo
  2 | bar
(2 rows)

postgres=# UPDATE ora_fdw_test SET val = 'baz' WHERE id = 2;
UPDATE 1

postgres=# DELETE FROM ora_fdw_test WHERE id = 1;
DELETE 1

postgres=# SELECT * FROM ora_fdw_test;
 id | val 
----+-----
  2 | baz
(1 row)

最后,确认 Oracle 中的表具有预期数据

SQL> SELECT * FROM fdw_test;

        ID
----------
VAL
--------------------------------------------------------------------------------------------------------------------------------
         2
baz

如果将数据插入新创建的 Oracle 表,可能会遇到以下错误

ERROR:  error executing query: OCIStmtExecute failed to execute remote query
DETAIL:  ORA-08177: can't serialize access for this transaction

这是一个已知的 Oracle 问题;请参阅 序列化错误 部分中的 自述文件

类别

外键数据包装器 (FDW)迁移

另请参阅

postgres_fdwmysql_fdwfirebird_fdw

反馈

提交有关 "oracle_fdw" 的任何评论、建议或更正 在此