【问题标题】:Oracle: Data consistency across multiple tables to be displayedOracle:要显示的跨多个表的数据一致性
【发布时间】:2022-01-14 04:26:57
【问题描述】:

我有 3 个基于 3 个不同表格的报告,理想情况下它们应该在审计中相互匹配。 它们每天按顺序更新一次。

这里的问题是,当其中一个表已更新而第二个表正在进行时,客户会在一段时间内看到报告之间的数据差异。

我们尝试了在所有 3 个表都更新后提交的解决方案,但我们开始在 undo tbsp 上遇到问题。该应用程序还运行着许多其他的东西。

我正在寻找一种解决方案,我们可以限制用户将数据显示到特定点,并且只有在所有 3 个表都刷新/更新后,他才能看到更新的数据。

【问题讨论】:

  • 你能不能简单地在表格中引入一个日期列并确保日期(用trunc包裹)匹配trunc(sydate)

标签: sql oracle plsql


【解决方案1】:

您可以使用flashback query 来显示截至某个时间点的数据:

select * from table1 as of timestamp timestamp '2021-12-10 12:00:00';

应用程序需要确定表同步的最近时间 - 可能使用记录更新过程上次启动时间的日志表。但是,闪回查询也使用 UNDO 表空间。但是查询至少应该使用更少的 UNDO,因为一些已提交的事务现在将释放一些空间。

【讨论】:

    【解决方案2】:

    我认为您可以在开始更新过程之前对所有 3 个表使用 select * for update
    在这种情况下,用户可以选择数据,并且只会看到未更改的数据,直到更新会话不会完成并提交。

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 2017-05-15
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      相关资源
      最近更新 更多