oracle同步2个表

oracle synchronize 2 tables

我有以下场景,需要在ORACLE中解决:

Table A 在数据库服务器上 Table B 在不同的服务器上

Table A 将填充数据。 每当向 Table A 插入某些内容时,我想将其复制到 Table B。 Table B 几乎有类似的列,但有时我只想得到 tableA 中 2 列的内容并将其连接并保存到 Table B.

我对ORACLE不是很熟悉,但是研究了一下GOOGLE 有人说你可以用TRIGGERS或VIEWS来做,你会怎么做?

所以一般来说,有一个table会被填充,它的内容 应该复制到不同的 table.

这是我目前想出的解决方案

create public database link
  other_db
connect to
  user
identified by
  pw
using 'tns-entry';

CREATE TRIGGER modify_remote_my_table 
  AFTER INSERT ON my_table 
  BEGIN INSERT INTO ....?
  END; 
/

如何 select 插入最新的行?

如果这两个table的数据库在两个不同的服务器上,那么你需要在[=32]中创建一个数据库link(db-link) =] 一个模式,以便它可以使用 db-link.

访问(read/write)Table B 数据

第一步:在TableA服务器db中创建数据库link指向TableB服务器DB

步骤 2: 为 Table A 创建触发器,这有助于使用数据库 link 将数据插入 table B。您可以在触发器内部自定义(连接值),然后再将其插入 table B.

这个link应该对你有帮助

http://searchoracle.techtarget.com/tip/How-to-create-a-database-link-in-Oracle

是的,您可以使用触发器来做到这一点。但是可能会有一些缺点。

  • 数据库B不可用怎么办? -> 触发器中的异常处理。

  • 如果数据库 B 有 2 小时不可用怎么办?您将数据插入到数据库 A 中,而该数据现在在数据库 B 中丢失了。-> 通过临时将其插入到数据库 A 中的缓存 table 中来做一些疯狂的事情。

  • 性能。好吧,插入大量数据的性能会很难看。每次插入数据时,Oracle都会启动PL/SQL引擎将数据插入远程数据库。

也许您可以考虑使用 MViews(物化视图)通过数据库复制数据 link。稍后您可以构建查询,以便它们从数据库 B 访问 tables 并通过加入 MViews 从数据库 A 添加所需的数据。

您还可以使用快速刷新来(几乎)实时复制数据。

从 Oracle 数据库管理员的角度来看,这比触发器方法更有意义。

试试这个代码

数据库链接被认为是相当不安全的,而且 oracle 自己的选项现在有相关的许可证,其他一些选项也被弃用了。

https://gist.github.com/anonymous/e3051239ba401e416565cdd912e0de8c

使用 ora_rowscn 跨两个不同的 Oracle 数据库同步表。