Oracle的实体化视图(MVIEW)的深入研究之四

原创 2007年09月14日 09:30:00
Oracle的实体化视图(MVIEW)的深入研究之四     CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。
现在对第一篇中基表进行移动(Move)操作, 会发现不能进行快速刷新, 必须进行全部(Complete)刷新才行. 如下所示:
SQL> ALTER TABLE T_MVLOG MOVE;

Table altered.

SQL> EXEC DBMS_MVIEW.REFRESH('MV_T_MVLOG','FAST');
BEGIN DBMS_MVIEW.REFRESH('MV_T_MVLOG','FAST'); END;

*
ERROR at line 1:
ORA-12034: materialized view log on "ANYSQL"."T_MVLOG" younger than last refresh
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 803
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 860
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 841
ORA-06512: at line 1

    为什么失败, 可以仔细分析一下基于ROWID的MVIEW LOG被刷新的过程, 当基表移动后, ROWID的值变了, 因此不能再继续支持主表的UPDATE/DELETE这样的操作了. 下面将这个实体化视图重新定义成基于主键(Primary Key)的, 首先删除现有的实体化视图及日志, 再为表加一个主键, 重新创建实体化视图 :

SQL>  alter table t_mvlog modify col1 not null;

Table altered.

SQL> alter table t_mvlog add primary key (col1);

Table altered.

SQL> create materialized view log on t_mvlog with primary key, sequence;

Materialized view log created.

SQL> CREATE MATERIALIZED VIEW MV_T_MVLOG
  2    REFRESH FAST WITH PRIMARY KEY
  3  AS SELECT ROWID R_ID, A.* FROM T_MVLOG A;

Materialized view created.

    再对基表作移动(Move)操作后, 就可以进行增量刷新了.

SQL> alter table t_mvlog move;

Table altered.

SQL> exec dbms_mview.refresh('MV_T_MVLOG','FAST');

PL/SQL procedure successfully completed.

    选择基于ROWID还是基于主键(Primary Key)的实体化视图日志, 还是很重要的.  

Oracle的实体化视图(MVIEW)的深入研究之四

现在对第一篇中基表进行移动(Move)操作, 会发现不能进行快速刷新, 必须进行全部(Complete)刷新才行. 如下所示: SQL> ALTER TABLE T_MVLOG MOVE;Table ...
  • heimaoxiaozi
  • heimaoxiaozi
  • 2007年03月28日 16:27
  • 1053

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

探讨实体化视图的刷新机制 Author:KamusMail:kamus@itpub.netDate:2004年10月 今天给客户搭建历史查询服务器,用oracle8i的snapshot实现,也就是9i...
  • Kamus
  • Kamus
  • 2004年10月18日 18:33
  • 4160

Oracle的实体化视图(MVIEW)的深入研究之二

Oracle的实体化视图(MVIEW)的深入研究之二    Oracle的实体化视图(MVIEW)的深入研究之二转:http://www.anysql.net/oracle/reorg_master_...
  • popkiler
  • popkiler
  • 2007年09月14日 09:32
  • 759

Oracle的实体化视图(MVIEW)的深入研究之二

Oracle的实体化视图(MVIEW)的深入研究之二转:http://www.anysql.net/oracle/reorg_master_table.html当在一个表上建了物化视图的日志(Mate...
  • heimaoxiaozi
  • heimaoxiaozi
  • 2007年03月28日 16:18
  • 1052

Oracle的实体化视图(MVIEW)的深入研究之三

Oracle的实体化视图(MVIEW)的深入研究之三作者: AnySQL.net, 转载时请务必以超链接形式标明文章原始出处和作者信息.链接: http://www.anysql.net/oracle...
  • heimaoxiaozi
  • heimaoxiaozi
  • 2007年03月28日 16:23
  • 890

Oracle的实体化视图(MVIEW)的深入研究之一

 Oracle的实体化视图(MVIEW)的深入研究之一转: AnySQL.net从Oracle 8i开始提供了实体化视图, 能过预先计算好的中间表来提高应用的访问速度, 在特定的情况下是很有用的一项技...
  • heimaoxiaozi
  • heimaoxiaozi
  • 2007年03月28日 16:11
  • 1344

oracle 实体化视图使用

--以dba身份登录,为用户授予创建实体化视图的权限--Grant Create Materialized View to 用户名;--删除实体化视图drop materialized view mv...
  • beyondlt
  • beyondlt
  • 2008年05月12日 15:29
  • 755

创建实体化视图的几个注意点

1。如果要创建基表是其它用户表的实体化视图,那么需要给实体化视图的owner赋予以下权限:grant CREATE ANY MATERIALIZED VIEW to username;grant SE...
  • Kamus
  • Kamus
  • 2004年10月26日 23:45
  • 4082

ORACLE物化视图--循序渐进MView(二) MView Log的结构与快速刷新

前言MView Log的结构刷新的过程完全刷新的过程快速刷新过程参考资料前言现在我们通过一些例子来说明一下MView Log的基本结构以及MView快速刷新的过程。在这一部分里面,我们还是利用上一部分...
  • outget1
  • outget1
  • 2010年01月29日 15:42
  • 4094

实体化视图的使用心得

今天有一项目用到了实体化视图这个概念,由于以前没接触过,这次着实难了我一下,但还好最后解决了,现在就将研究过程中收集的资料和碰到的问题总结一下。 一 简介 实体化视图    实体化视图应看作是一种特殊...
  • apple_min
  • apple_min
  • 2009年02月05日 17:36
  • 2242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle的实体化视图(MVIEW)的深入研究之四
举报原因:
原因补充:

(最多只允许输入30个字)