【问题标题】:Oracle Materialized viewOracle 物化视图
【发布时间】:2014-09-08 08:52:25
【问题描述】:

根据oracle文档,我们不能使用快速刷新的方法来刷新聚合物化视图。 我在 Oracle 文档中找到了这个例子: http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6002.htm

CREATE MATERIALIZED VIEW LOG ON times
   WITH ROWID, SEQUENCE (time_id, calendar_year)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW LOG ON products
   WITH ROWID, SEQUENCE (prod_id)
   INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW sales_mv 
   BUILD IMMEDIATE 
   REFRESH FAST ON COMMIT 
   AS  
   SELECT t.calendar_year, p.prod_id, 
      SUM(s.amount_sold) AS sum_sales
       FROM times t, products p, sales s
      WHERE t.time_id = s.time_id AND p.prod_id = s.prod_id
      GROUP BY t.calendar_year, p.prod_id;

每次我尝试使用聚合和快速刷新时都会出错。
快速刷新和聚合函数相互使用时有什么特别的提示吗?

亲切的问候

【问题讨论】:

  • 能否请您发布您收到的错误消息,谢谢。

标签: oracle


【解决方案1】:

根据我的调查,为了创建具有聚合功能和快速刷新方法的 MV,您的 MV 和 MV 日志应该有特殊的结构,以便查看 MV 和 MV 日志的正确结构运行在下面的脚本:

begin
 dbms_advisor.tune_mview(task_name=>:t,
 mv_create_stmt=>'create materialized view mv1 refresh fast 
as select job,sum(sal)    from emp group by job');
end;

然后执行以下查询以查看所需的 MV 和 MV 日志结构:

select  dbms_lob.substr( statement, 4000, 1 ), statement from user_tune_mview
where task_name='TASK_2042' order by action_id;

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2012-07-17
    • 2011-11-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多