开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

oraclecdc 默认开启了增量快照,为什么还要获取锁权限,有谁知道吗?

oraclecdc 默认开启了增量快照,为什么还要获取锁权限,有谁知道吗? f2b9be0bd9fa373344cc2b5b1baa283d.png

展开
收起
wenti 2023-02-06 16:33:56 129 0
2 条回答
写回答
取消 提交回答
  • Oracle CDC(变更数据捕获)默认开启增量快照,同时还需要获取锁权限的原因如下:

    增量快照的限制:

    增量快照只捕获数据块中的更改,而不捕获整个数据块。这意味着如果数据块在增量快照创建后被更新,则增量快照将无法捕获这些更新。

    获取锁权限的必要性:

    为了确保数据块在增量快照创建后不被更新,Oracle CDC 需要获取锁权限。这将防止其他会话在增量快照创建期间更新数据块,从而确保增量快照捕获所有必需的更改。

    具体来说:

    当 Oracle CDC 创建增量快照时,它会获取以下类型的锁:

    • TX 锁:这是一种排他锁,可防止其他会话更新数据块。
    • SS 锁:这是一种共享锁,允许其他会话读取数据块,但不允许更新。

    这些锁确保在增量快照创建期间不会对数据块进行更新,从而使增量快照能够捕获所有必需的更改。

    示例:

    以下示例说明了为什么需要同时使用增量快照和锁权限:

    1. 创建一个表 my_table 并插入一些数据。
    2. 启用 Oracle CDC 并创建增量快照。
    3. 在另一个会话中,更新 my_table 中的数据。
    4. 如果 Oracle CDC 只使用增量快照,它将无法捕获在增量快照创建后进行的更新。
    5. 但是,由于 Oracle CDC 获取了锁权限,因此另一个会话无法在增量快照创建期间更新数据,从而确保增量快照捕获所有必需的更改。

    因此,即使启用了增量快照,Oracle CDC 仍然需要获取锁权限,以确保捕获所有必需的更改并维护数据的一致性。

    2024-02-27 17:54:51
    赞同 展开评论 打赏
  • 增量快照时不用获取锁——该回答整理自钉群“Flink CDC 社区”

    2023-02-06 19:31:31
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载