谁能告诉我使用以下设置刷新物化视图的频率?
REFRESH FORCE ON DEMAND START WITH sysdate+0 NEXT (round(sysdate) + 1/24) + 1
我想我每小时都读一次,但我不确定
谁能告诉我使用以下设置刷新物化视图的频率?
REFRESH FORCE ON DEMAND START WITH sysdate+0 NEXT (round(sysdate) + 1/24) + 1
我想我每小时都读一次,但我不确定
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
要回答您的第一个问题(这会每小时运行一次吗?):
不,由于这个子句,这将在您创建它时运行一次:
START WITH sysdate+0
就个人而言,我认为“+0”是无关紧要的,就像现在一样。
然后它将在明天凌晨 1 点运行,因为以下子句:
NEXT (round(sysdate) + 1/24) + 1
“1/24”部分计算凌晨 1 点的时间,因为 Oracle 日期实际上存储为数字,小数部分表示小时、分钟等。语法很好。
我不是 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
我认为使用
NEXT (trunc(sysdate) + 1/24) + 1
更准确