ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 小议物化视图与基表数据不一致的消除(一)

小议物化视图与基表数据不一致的消除(一)

原创 Linux操作系统 作者:yangtingkun 时间:2007-08-04 00:00:00 0 删除 编辑

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


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

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

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

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

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

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69374/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10488268