物化视图 - 识别上次刷新

Sco*_*ott 21 oracle materialized-views

我目前访问了一系列观点和物化观点.具体化由第三方维护,第三方提供关于实现的频率和成功的信息很少.最近,物化视图无法刷新,我发送了大量报告,其中包含不正确/延迟的数据.

目前我正在查询我打算用什么来确定何时在事务系统中发生最新更新,如果它还没有刷新,那么剩下的代码就不会执行,但是这会浪费很多精力并且有时会导致一个不正确的假设(物化视图可能已刷新,但没有进行额外的事务 - 因此代码的其余部分不执行),我宁愿另一种方法.

有没有办法确定是否使用Oracle系统表刷新了物化视图?如果没有,有没有人有任何想法我怎么会这样做,而不必联系第三方?

Jus*_*ave 39

看起来doc_180已经在评论中回答了这个问题,我不确定为什么它没有被添加为答案

SELECT owner, mview_name, last_refresh_date
  FROM all_mviews
 WHERE owner = <<user that owns the materialized view>>
   AND mview_name = <<name of the materialized view>>
Run Code Online (Sandbox Code Playgroud)

如果你有机会获得DBA表,你可以代替DBA_MVIEWSALL_MVIEWS.这样您就可以访问有关何时刷新每个物化视图的信息,而不仅仅是您有权访问的物化视图的子集.当然,在这种情况下,这可能不是一个特别重要的区别.


小智 6

不幸的是,oracles的默认日期格式是YYYY-MM-DD.如果你需要时间只需使用这样的东西:

SELECT owner, mview_name, to_char(LAST_REFRESH_DATE, 'yyyy-mm-dd hh24:mi:ss') last_refresh_date
FROM all_mviews
WHERE owner = 'FOO'
AND mview_name = 'MV_BAR';
Run Code Online (Sandbox Code Playgroud)