【问题标题】:What is the difference between Oracle Streams and Change Data Capture?Oracle Streams 和变更数据捕获之间有什么区别?
【发布时间】:2008-11-07 17:10:27
【问题描述】:

有几种类似的 Oracle 技术 - Oracle Streams、Oracle Change Data Capture 和 Database Change Notification。

它们之间有什么区别?

它们是否与 Oracle 高级队列有关?

【问题讨论】:

标签: oracle cdc advanced-queuing change-data-capture oracle-streams


【解决方案1】:

Oracle CDC 旨在捕获数据库表中的更改,并将更改存储在特殊的 Oracle 表中。 CDC操作有两种模式:异步(基于Java)或同步(基于DB触发器,性能开销更大)。

Oracle Streams 位于 Oracle CDC 之上,它是一个完整的传输机制(通过例如 HTTP),用于在 2 个服务器之间进行数据同步。它基于 Oracle 高级队列技术,专为高性能和可靠性而设计。

Oracle CDC 和 Streams 通常用于 Oracle DB 服务器之间的数据同步...使用 Oracle CDC,您不必将 Oracle Streams 用于,例如您可以编写自己的数据导出例程来创建平面文件,以便在 2 个 DB 服务器之间进行同步,而使用 Streams,您必须在 2 个服务器之间建立网络链接。

数据库更改通知又是另一回事,它不用于服务器到服务器的同步,而是更多地用于服务器通知客户端的结果集更改,主要是在客户端数据缓存的上下文中。

【讨论】:

  • 请注意“结果集”一词,每个人都认为,由于您使用查询来指示您希望 DCN 激活哪些表,因此只有查询结果会导致通知。 DCN 关心的只是 FROM 子句。对 FROM 中任何表的任何更改都会导致通知。
  • 嗨 Andrew,你有 CDC 在异步模式下与 java 绑定的例子吗?一种用 java 左右实现的订阅者。
  • 根据docs.oracle.com/cd/E11882_01/server.112/e25554/cdc.htm,“异步变更数据捕获建立在Oracle Streams 之上,并提供了与Oracle Streams 的关系接口。”我不知道这如何/是否会影响您的其余答案,这似乎是正确的。
【解决方案2】:

我要补充一点,对于系统之间的同步,你可以通过结合 Streams 和 CDC 发布机制来实现异步模式。如果您选择不为此目的使用 Streams,您最终会使用同步模式(我认为是通过触发器),这会在每个事务上增加一点额外开销。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2011-07-18
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多