【问题标题】:oracle materialized view refresh timeoracle物化视图刷新时间
【发布时间】:2010-09-27 16:45:47
【问题描述】:

谁能告诉我物化视图多久刷新一次?

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

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

【问题讨论】:

    标签: oracle materialized-views


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      不,因为这个子句,它会在你创建它时运行一次:

      START WITH sysdate+0 
      

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

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

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

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

      【讨论】:

      • +1 以获得更详细的解释。为了进一步澄清,round(sysdate) 为您提供 MM/DD/YY @ 12:00:00。 + 1/24(一小时)使值 MM/DD/YY @ 01:00:00。 +1(一天)使值 MM/DD+1/YY 01:00:00。
      【解决方案3】:

      我不能 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

      【讨论】:

        【解决方案4】:

        我认为使用

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

        更准确

        【讨论】:

          猜你喜欢
          • 2012-07-04
          • 2012-07-18
          • 2016-06-14
          • 1970-01-01
          • 2018-04-20
          • 2021-01-13
          • 2017-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多