li
  当前位置:主页 > 性能优化 > 文章内容
li
小议物化视图与基表数据不一致的消除(一)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:19  

这篇文章介绍一下快速刷新的只读物化视图于基表不一致的解决方法。


我并没有碰到过实际的情况,但是在网上看到过几次类似的案例:快速刷新的物化视图与基表出现数据不一致的状况。

因为我并没有在使用中实际碰到过这种情况,因此不好确定问题产生的原因。不过推断产生的原因可能有两种,一个是Oracle的bug造成的,另一个是物化视图的基表被人手工修改。

这里并不打算讨论问题是怎样产生的,而是给出碰到这种问题后的解决方案。

最简单的解决方法:将物化视图执行完全刷新。如果物化视图不是实时访问,可以考虑通过非原子性刷新方式来提高刷新速度。这种方法的优点是简单方便,不会造成错误的结果,风险较小,但是不适用于数据量很大的情况。

第二种方法是重建物化视图。这种方法由于避免了UNDO信息且减少了REDO,效率要比完全刷新高很多。而且也不会造成错误的结果。缺点是物化视图删除后到物化视图重新建立完成直接,这个对象在数据库中不再存在,如果这个时候访问这个对象会直接报错。而且对象重建后,需要恢复物化视图的索引、约束、权限和统计信息等。这些步骤不但麻烦而且容易遗漏。更重要的是,对于数据库很大的表,这种操作的代价仍然是很大的。

最后一种方法也是下面几篇文章的重点,通过手工修改物化视图日志来达到物化视图和基表的一致。这种方法的最大好处是对于数据量很大且不一致的数据量很小的情况,这种方法的代价很小,同步速度也很快。不过这种方法也有很明显的缺点:首先就是方法比较复杂,要求对物化视图的刷新和物化视图日志有比较清晰的了解。而且操作失误的话,很容易造成数据的进一步错误。不过,以前面两种方法作为后盾,即使这种方法真的造成了数据的错误也不会产生太大的问题。




  上一篇: 建立物化视图导致数据库实例崩溃   下一篇: 物化视图的创建写法与刷新问题
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·建立物化视图导致数据库实例崩溃
·ORA-600(999)错误(三)
·物化视图刷新过程中出现的约束冲...
·ORA-600(999)错误(二)
·GLOBAL_NAME相同的数据库中物化视...
·GLOBAL_NAME相同的数据库中物化视...
·物化视图复制快速刷新的限制(二...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·物化视图的创建写法与刷新问题
·10203设置CURSOR_SHARING为SIMIL...
·小议物化视图与基表数据不一致的...
·包含复制环境的数据库迁移(二)
·包含复制环境的数据库迁移(一)
·inode耗尽导致No space left on ...
·在Oracle10g RAC下新增ASM磁盘组
·oracle RAC环境中系统时钟的调整
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本Ora...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接