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)的实体化视图日志, 还是很重要的.  

相关文章推荐

oracle9i实体化视图.

  • 2014年06月12日 14:49
  • 255KB
  • 下载

oracle row特性的使用-利用rownum固定实体化视图

今天主要和大家分享一下近期学习rownum的一个体会。直接看下面的例子吧                    通过上面的例子,我们发现F这个函数调用了1000000次,这样严重的影响了性能。为了减少...

Oracle如何实现两个数据库的同步(用实体化视图实现)(oracle快照实例)

一、技术实现细节 除非特别说明,下面的SQL命令都是在数据库ora_db2的SYSETM用户下运行的。 假设要复制(或同步)另一服务器上数据库ora_db1中用户db1的所有表。 1. 创...

Oracle普通视图和实体化视图比较

OraclOracle普通视图和实体化视图比较   相对于普通的视图来说,实体化视图的不同之处在于实体化视图管理存储数据,占据数据库的物理空间。实体化视图的结果会保存在一个普通的数据表中,...
  • YULAN1
  • YULAN1
  • 2014年08月25日 10:12
  • 435

云计算设计模式(十四)——实体化视图模式

云计算设计模式(十四)——实体化视图模式 产生过在一个或多个数据存储中的数据预填充的观点时,数据被格式化以不利于所需的查询操作的一种方式。这种模式可以帮助支持高效的查询和提取数据,并提高应用程序的性能...

ORA-12048:刷新实体化视图

当系统中存在多个物化视图,使用刷新组会大大简化物化视图的刷新,只需要将同一时间同步的物化视图全都放到一个刷新组中既可。 在9i中,使用刷新组方便的时候有一个缺点,如果其中一个物化视图报错...

VB.net APP.config 实体化访问 configurationsection_《Visual Basic 2008 高级编程》 实例改新

在第9章最后一个实例时遇到困难,一是由于我的OS是WIN10,只能装VS2015和SQL2012,二是示例数据库PUBS无法用,只能用adventureworks2012,三是VB2015不再支持IC...

oracle回滚机制深入研究

这篇文章主要描述oracle的回滚机制,篇幅可能较长,因为对于oracle的回滚机制来说,要讨论和描述的实在太多,只能刷选自己认为最有意义的一部分进行深入研究和分享...
  • oradh
  • oradh
  • 2014年05月14日 10:43
  • 1856

Oracle SCN 深入研究

一. SCN 说明 之前也整理过几遍Oracle SCN的文章,如下:Oracle DB 服务器系统时间修改问题 与SCN 关系的深入研究http://blog.csdn.net/tianlesoft...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle的实体化视图(MVIEW)的深入研究之四
举报原因:
原因补充:

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