各位大佬,问下 oracle-cdc从哪个版本开始不会锁表了?问题出在哪里?怎么解决?那2.4应该不[阿里云实时计算 Flink版]

各位大佬,问下 oracle-cdc从哪个版本开始不会锁表了?问题出在哪里?怎么解决?那2.4应该不锁表了吧

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. Oracle CDC 是 Oracle 数据库的一种变更数据捕获功能,可以实时捕获表的变更,并将其输出到外部系统以进行进一步的处理。在 Oracle 数据库中,从 10g 版本开始就提供了 CDC 功能,但是在不同的版本中 CDC 的实现方式和限制都有所不同。

    在早期的 Oracle CDC 版本中,由于 Oracle 数据库本身的限制,CDC 会对被捕获的表进行加锁,从而导致表的读写操作受到影响。但是,随着 Oracle 数据库的不断升级和改进,CDC 的实现方式也在不断优化,从而减少了对表的加锁操作。

    具体来说,从 Oracle 11g 版本开始,CDC 支持使用基于日志挖掘的方式来捕获变更,而不再需要使用基于触发器的方式。这种方式减少了对表的加锁操作,从而提高了 CDC 的性能和可靠性。另外,从 Oracle 12c 版本开始,CDC 支持使用多模式捕获方式,可以在不同的模式之间进行切换,以适应不同的应用场景。

    关于您提到的 Oracle CDC 2.4 版本,由于 Oracle 数据库的不同版本和配置情况可能会影响 CDC 的性能和可靠性,因此无法确保在所有情况下都不会出现表锁定的问题。如果您遇到了 CDC 锁表的问题,可以考虑以下几个方面来解决:

    升级 Oracle 数据库版本:如果您使用的是旧版本的 Oracle 数据库,可以考虑升级到较新的版本,以获得更好的 CDC 性能和可靠性。

    调整 CDC 配置参数:可以根据实际情况调整 CDC 的配置参数,例如更改 CDC 的捕获模式、调整并发度等,以减少对表的加锁操作。

  2. 在 Flink CDC 中,Oracle CDC 的版本升级确实影响了表锁的问题。在早期的版本中,Oracle CDC 会对表进行锁定(Table Locking),导致其他操作无法对该表进行修改、插入或删除等操作。

    根据官方文档,在 Flink 1.12 版本中引入了 Oracle CDC 的改进,从而解决了表锁的问题。具体来说,从 Flink 1.12 版本开始,Oracle CDC 使用了新的机制来避免对表进行锁定,提高了并发性能和用户体验。

    如果您使用的是 Flink 2.4 版本,应该已经不会遇到 Oracle CDC 锁表的问题。然而,有时候在特定的环境或配置下,可能仍然会出现锁表问题。这可能是由于以下一些原因导致的:

    1. 并发度设置:如果您的任务的并行度设置过高,可能会导致 Oracle CDC 产生表锁的行为。可以尝试调整任务的并行度,以避免对同一表进行过多的并发操作。

    2. 数据库配置:某些 Oracle 数据库的配置参数可能会影响到 CDC 的工作方式。例如,事务隔离级别和锁定超时时间等参数的设置可能会导致锁表问题。建议检查数据库的相关配置,并进行适当的调整。

    3. CDC 版本和配置:确保您使用的是最新版本的 Flink CDC 和 Oracle CDC 插件,并根据官方文档中提供的最佳实践进行相关配置。

    如果仍然遇到锁表问题,建议参考 Flink 的官方文档、社区讨论或咨询 Flink 社区专家,以获取更详细的技术支持和指导

  3. 文档上说是2.3,但是我看有人用2.3还锁表,此回答整理自钉群“Flink CDC 社区”