【问题标题】:Data replication between Oracle and PostgresOracle 和 Postgres 之间的数据复制
【发布时间】:2019-11-14 11:53:21
【问题描述】:

有没有一种方法可以在不使用外部工具的情况下将数据(如触发器或作业)从 oracle 表复制到 postgres 表,反之亦然(对于不同的表集)?两种方案都只有一种方式复制。

【问题讨论】:

  • 您可以使用外部数据包装器从 Postgres 中访问 Oracle 表
  • @a_horse_with_no_name 谢谢,但我需要 oracle 和 postgres 中的表,因为几个月后将不再使用 oracle 表。
  • 您可以编写将更改从 Postgres 推送到 Oracle 表的触发器。另一个方向会有点复杂。 Oracle 有一些类似于 Postgres 的外部数据包装器,称为“异构服务”——也许您可以通过 ODBC 连接到 Postgres。 jameshuangsj.wordpress.com/2019/05/10/…
  • 您需要同时写入两个系统吗?还是您只给其中一个写信而从另一个读?
  • @a_horse_with_no_name 用于 20 个表我需要将数据从 oracle 复制到 postgres。对于 40 个不同的表,我需要从 postgres 复制到 oracle。所以这只是一种复制方式,但对于 ora 到 pg 和 pg 到 ora 而言

标签: oracle postgresql database-replication transactional-replication


【解决方案1】:

对于 20 个表,我需要将数据从 oracle 复制到 postgres。对于 40 个不同的表,我需要从 postgres 复制到 oracle。

我可以想象以下设置:

对于需要从 Postgres 访问的 Oracles 表,只需在 Postgres 服务器内创建外部表即可。它们似乎是 Postgres 服务器中的“本地”表,但 FDW(“外部数据包装器”)会将任何请求转发到 Oracle 服务器。所以不需要复制。这是否足够快取决于您访问表格的方式。一些操作(WHERE 子句、ORDER BY 等)可以下推到 Oracle 服务器,一些将在所有行都被获取后由 Postgres 服务器完成。

对于需要复制到 Oracle 的 Postgres 表,您可以进行类似的设置:创建一个指向 Oracle 中目标表的外部表。然后在 Postgres 表上创建将更新外部表的触发器,从而将更改发送到 Oracle。

这一切都可以在 Postgres 端进行管理。

【讨论】:

  • 感谢您的建议。但是我使用的 RDS Postgres 不支持 oracle_fdw。有没有替代品?
【解决方案2】:

只是一个提示:

您可以考虑创建一个从 Oracle 到 Postgres 的数据库链接,称为 heterogeneous connectivity,这样就可以在 Oracle 中使用 select 语句从 Postgres 中选择数据。

然后使用物化视图来安排和存储这些选择的结果。

由于您不想使用任何外部工具,否则解决方案应该更简单

【讨论】:

  • 你能推荐一些开源工具来做这件事吗?
  • 如果你想要开源平台工具,那么你可以使用 symmetricdsa 或 EDB Postgres,它们是一种安静且简单的复制方法。symmetricds.org ... enterprisedb.com/enterprise-postgres/… .... .如果您认为答案已回答,请将答案标记为接受
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多