0

我在 Oracle 11g 上有一个数据库,其中有一个由外部用户更新的表。现在我想在这个表上捕获插入/更新/删除,以便将这些更改带到另一个数据库上的表上,我正在尝试不同的研究方法。我测试了轮询(每分钟检查表上是否有更新、插入或删除的工作)和触发器(在表上更新、插入或删除时触发),那么还有其他方法吗?

我找到了 AOQ (Oracle Advanced Queuing)、DBMS_PIPE、Oracle SNMP Agent Integrator Polling Activity,但我不知道它们是否适合这种情况......

4

1 回答 1

3

这取决于。

根据所涉及的数据量以及插入/更新/删除的频率,您通常只需要轮询或触发器。

例如,轮询方法可能就像添加一个默认设置为 1 的列一样简单,并在复制代码“使用”该行时更新为 NULL。如果更新了行,则表上的触发器会将其设置回 1。此列上的索引将是轻量级的(索引将仅包含列为 1 的行的条目),因此查询速度很快。不过,您需要另一个表来处理删除。

触发方法只会将插入/更新/删除行写入某种日志表,然后会被作业定期清除。

对于大容量解决方案,包括 Oracle GoldenGate 和 Oracle Streams:http ://www.oracle.com/technetwork/database/focus-areas/data-integration/index.html

于 2013-07-23T07:46:00.827 回答