刷新 Oracle 只读具体化视图时,是否阻止了对旧数据的访问



据我了解,Oracle 只读物化视图类似于真实视图,但它包含源数据的完整快照 - 以与表类似的方式存储。要更新快照,可以调用 Oracle 命令从其源刷新实例化视图的内容。

问题是,在刷新期间,是否阻止读取具体化视图,或者是否会以隔离方式应用更新,从而允许在更新过程中仍读取旧快照?

进入 Oracle 编写器不会阻止读者。从不。这是按原样进行版本控制的主要优点。从物理上讲,它看起来与您在有人从中选择时更新表格一样。

顺便说一句,你可以试试。制作刷新时间较长的MV,并在刷新时检查是否可以阅读。

对于 Oracle 来说,有两种方法可以在引用之前清理 MV

  • 截断 (DDL),DDL 提交,因此有人可能会在刷新期间看到 MV 为空
  • delete(DML) 是事务性的,因此用户将看到旧版本或新版本的数据。

如@GriffeyDog所述,请参阅atomic_refresh选项。

最新更新