2017-08-07 87 views
0

我不知道物化视图是如何更新的。我创建了物化视图,并且每分钟更新一次。物化视图更新时间不正确

create materialized view vmat 
refresh force on demand 
start with to_date('07-08-2017 10:00:00', 'dd-mm-yyyy hh24:mi:ss') 
next sysdate+(1/(24*60)) 
as 
select * from mat where id>3;` 

但它在user_mview_refresh_times在2017年8月7日16时21分07秒刷新。它应该在2017/8/7 16:21:00更新。所以我很困惑。

+0

所以你说它更新了7秒后,你打算它? – Shahzaib

+0

我认为这是不可能更新7秒。表中只有10行。我开始于07-08-2017 10:00:00并每分钟更新一次表。因此它应该在每分钟开始时更新。我只是做一个测试,并将其应用于我的工作。 –

+0

我做了一点改动,让物化视图每小时更新一次。我觉得很奇怪。当我在'07 -08-2017 10:15:24'创建物化视图时,下一次更新时间是'07 -08-2017 11:15:24'。看起来'起始'条款不起作用。无论'开始'条款是什么。 –

回答

0

next参数将刷新时间指定为数据库转换为时间间隔的日期时间。我认为问题在于你正在以不同的方式定义startnext。特别是你正在使用一个原始的sysdate,其中包括一个精确的秒的时间元素。这就是为什么你得到了LAST_REFRESH的奇数值。

试试这个提法,而不是(使用原来的时间):

... 
, Start => trunc(sysdate)+(10/24) 
, Next => trunc(sysdate)+(1/1440) 

因此,在初始启动时间将是10:00:00,并第一次刷新将是10:01:00。

+0

但是您显示的代码不正确。当我创建物化视图时,视图将首次更新。然后DBMS计算视图更新的下一个日期。是的。非常感谢。我认为Next => trunc(sysdate,'mi')+ 1/1440 –