【物化视图】速刷新物化视图都必须满足的条件

所有类型的快速刷新物化视图都必须满足的条件:
1.物化视图不能包含对不重复表达式的引用,如SYSDATE和ROWNUM;
2.物化视图不能包含对LONG和LONG RAW数据类型的引用。但是从测试环境上看支持对raw类型的引用。
1.不能包括GROUP BY语句或聚集操作;
yang@rac1>create materialized view mv_yang_err refresh fast on commit with rowid
  2  as select id ,count(1)  from yang_a group by id;
as select id ,count(1)  from yang_a group by id
                             *
第 2 行出现错误:
ORA-32401: "YANG"."YANG_A" 上的实体化视图日志没有新值

yang@rac1>create materialized view mv_yang_pk refresh fast on commit
  2  as select id ,count(1) from yang_pk group by id;
as select id ,count(1) from yang_pk group by id
                            *
ERROR at line 2:
ORA-32401: materialized view log on "YANG"."YANG_PK" does not have new values

2.如果在WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上:
yang@rac1>drop materialized view mv_fact_err;
Materialized view dropped.
yang@rac1>alter table fact drop constraint fact_fk_aid;
Table altered.
yang@rac1>alter table yang_a drop primary key ;
Table altered.
yang@rac1>create materialized view mv_fact_err refresh fast on commit as
  2    select f.rowid frid,a.rowid arid,b.rowid brid,f.id,
  3    a.name aname,b.name bname ,val
  4    from fact f ,yang_a a,yang_b b
  5    where f.aid=a.id(+)
  6    and f.bid=b.id;
Materialized view created.
物化视图可以被建立,看来条件不成立。
3.如果不包含外连接,那么WHERE语句没有限制,如果包含外连接,那么WHERE语句中只能使用AND连接,并且只能使用“=”操作:
yang@rac1>create materialized view mv_fact_err refresh fast on commit as
  2    select f.rowid frid,a.rowid arid,b.rowid brid,f.id,
  3    a.name aname,b.name bname ,val
  4    from fact f ,yang_a a,yang_b b
  5    where f.aid=a.id(+)
  6    and f.bid != b.id;

Materialized view created.
此条件不成立。

4.FROM语句列表中所有表的ROWID必须出现在SELECT语句的列表中:
yang@rac1>create materialized view mv_fact_err refresh fast on commit as
  2    select b.rowid brid,f.id,
  3    a.name aname,b.name bname ,val
  4    from fact f ,yang_a a,yang_b b
  5    where f.aid=a.id(+)
  6    and f.bid != b.id;
  from fact f ,yang_a a,yang_b b
       *
ERROR at line 4:
ORA-12052: cannot fast refresh materialized view YANG.MV_FACT_ERR

5.FROM语句列表中的所有表必须建立基于ROWID类型的物化视图日志。
yang@rac1>create materialized view mv_fact_err refresh fast on commit as
  2    select b.rowid brid,f.id,
  3    a.name aname,b.name bname ,val
  4    from fact f ,yang_a a,yang_b b
  5    where f.aid=a.id(+)
  6    and f.bid != b.id;
  from fact f ,yang_a a,yang_b b
       *
ERROR at line 4:
ORA-12052: cannot fast refresh materialized view YANG.MV_FACT_ERR 

时间: 2024-10-26 02:47:50

【物化视图】速刷新物化视图都必须满足的条件的相关文章

【物化视图】根据物化视图日志快速刷新物化视图的过程

先来再次分析一下物化视图日志的结构. yang@rac1>create table t (id number ,name varchar2(30),val number); Table created. yang@rac1>create materialized view log on t with rowid,sequence (id,name) including  new values; Materialized view log created. yang@rac1>desc m

JAVA怎么刷新物化视图呢?困惑困惑困惑困惑困惑困惑

问题描述 JAVA怎么刷新物化视图呢?就是类似于orcal的DBMS_MVIEW.REFRESH请各路大神帮忙. 解决方案 解决方案二:难道JAVA干脆没有这个功能?解决方案三:每日一问!!解决方案四:顶起来!!!解决方案五:这本身就是数据库的功能,在JDBC中可以把它当成存储过程来调用.比如:用这个:callsysproc.admin_cmd("reorgtableABC"); 调用DB2的命令reorgtableABC; 用这个:callDBMS_SNAPSHOT.REFRESH(

物化视图快速刷新报 ORA-12008 & ORA-01031

物化视图快速刷新报 ORA-12008 & ORA-01031 用户A创建了物化视图,物化视图里边引用了用户B的表,现在用户C执行exec dbms_mview.refresh('MV_pi_to_res_lhr', 'F');报错:ORA-12008: error in materialized view refresh pathORA-01031: insufficient privilegesORA-06512: at "SYS.DBMS_SNAPSHOT", line

探讨实体化视图的刷新机制

视图|刷新 探讨实体化视图的刷新机制   Author:Kamus Mail:kamus@itpub.net Date:2004年10月   今天给客户搭建历史查询服务器,用oracle8i的snapshot实现,也就是9i的实体化视图. 顺手做了一下trace,看了一下刷新时候oracle后台是怎么工作的.     前期准备,使用DBMS_SUPPORT包,这个包默认是没有安装的,需要运行下面的命令来手动安装. SQL>conn / as sysdba SQL>@?\rdbms\admin\

刷新数据库视图

视图|数据|数据库|刷新 /*    刷新数据库视图.sql*/DECLARE @vName sysname DECLARE refresh_cursor CURSOR FOR  SELECT Name from sysobjects WHERE xtype = 'V' order by crdateFOR READ ONLY  OPEN refresh_cursor FETCH NEXT FROM refresh_cursor INTO @vName WHILE @@FETCH_STATUS

全面解析Word2007阅读版式视图等5种视图

在Word2007中提供了5种视图供用户选择,这5种视图包括页面视图.阅读版式视图.Web版式视图.大纲视图和普通视图.用户可以在"视图"功能区中自由切换文档视图,也可以在Word2007窗口的右下方单击视图按钮切换视图. 1.页面视图 页面视图可以显示Word2007文档的打印结果外观,主要包括页眉.页脚.图形对象.分栏设置.页面边距等元素,是最接近打印结果的页面视图,如图1所示. 图1 页面视图 2.阅读版式视图 阅读版式视图以图书的分栏样式显示Word2007文档,Office按

java-jdbc 来查询视图 和 hibernate 查询视图 问题

问题描述 jdbc 来查询视图 和 hibernate 查询视图 问题 伙伴们 现在我在用 jdbc 查询视图 和 hibernate查询视图 都显示不出来数据 (list用来接受数据,调试时的list的size不为0,可数据都是Null 这是怎么回事) 解决方案 JPA的视图查询Hibernate查询视图数据Hibernate createQuery查询视图返回list为空 解决方案二: 如果你给一下查询的代码,或许可以帮你分析一下

iOS开发入门:iOS视图生命周期与视图控制器关系

iOS中视图是一个应用的重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 视图生命周期与视图控制器关系 以视图的5种状态为基础,我们来系统的了解一下视图控制器的生命周期.在视图不同的生命周期,视图控制器会回调不同的方法. 开发入门:iOS视图生命周期与视图控制器关系-"> viewDidLoad方法:视图控制器已被实例化,在视图被加载到内存中的时候调用该方法,这个时候视图并未出现.在该方法中通常进行的是对所控制的视图进行初始化处理. 视 图可见前

uitableview-一个视图到另一个视图重装table

问题描述 一个视图到另一个视图重装table 从MySliderController.m的 MyView.m重装table失败.在 MyView.m中声明方法: -(void)updateData{ [self.itablview reloadData]; } 然后在MySliderController.m类中调用: DDMenuController *menuController = (DDMenuController*)((AppDelegate*)[[UIApplication share