5

谁能告诉我使用以下设置刷新物化视图的频率?

REFRESH FORCE ON DEMAND START WITH sysdate+0 NEXT (round(sysdate) + 1/24) + 1

我想我每小时都读一次,但我不确定

4

4 回答 4

7
SQL> alter session set nls_date_format = 'yyyy-mm-dd :hh24:mi:ss';

Session changed.

SQL> select sysdate from dual;

SYSDATE
--------------------
2008-12-19 :12:18:28

SQL> select (round(sysdate) + 1/24) + 1  from dual;

(ROUND(SYSDATE)+1/24
--------------------
2008-12-21 :01:00:00
于 2008-12-19T11:19:04.980 回答
4

要回答您的第一个问题(这会每小时运行一次吗?):

不,由于这个子句,这将在您创建它时运行一次:

START WITH sysdate+0 

就个人而言,我认为“+0”是无关紧要的,就像现在一样。

然后它将在明天凌晨 1 点运行,因为以下子句:

NEXT (round(sysdate) + 1/24) + 1

“1/24”部分计算凌晨 1 点的时间,因为 Oracle 日期实际上存储为数字,小数部分表示小时、分钟等。语法很好。

于 2009-01-02T19:13:44.887 回答
1

我不是 100% 确定它在物化视图调度语句中是否合法,但您可能想尝试(可以说)更直观的 INTERVAL 规范:

round(sysdate) + interval '1 1' day to hour

此处的其他示例:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements003.htm#SQLRF00221

于 2008-12-19T14:03:24.910 回答
0

我认为使用

NEXT (trunc(sysdate) + 1/24) + 1

更准确

于 2014-04-26T12:37:11.813 回答