Oracle 和 Postgres 之间的数据复制

Data replication between Oracle and Postgres

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

提示一下:

您可以考虑创建一个从 Oracle 到 Postgres 的数据库 link,称为 heterogeneous connectivity,这使得可以使用 select 语句从 Postgres 获取 select 数据在甲骨文中。

然后使用物化视图来安排和存储那些 select 的结果。

因为您不想使用任何外部工具,否则解决方案应该简单得多

for 20 tables I need to replicate data from oracle to postgres. For 40 different tables, I need to replicate from postgres to oracle.

我可以想象以下设置:

对于需要从 Postgres 访问的 Oracle tables,只需在 Postgres 服务器中创建外部 tables。它们在 Postgres 服务器中似乎是 "local" tables,但 FDW ("foreign data wrapper") 会将任何请求转发到 Oracle 服务器。所以不需要复制。这是否足够快取决于您访问 table 的方式。一些操作(WHERE 子句、ORDER BY 等)可以下推到 Oracle 服务器,一些操作将在所有行都被提取后由 Postgres 服务器完成。

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

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