物化视图刷新慢--有可能是mv log被多个mv使用造成的
同事说物化视图刷新慢,经检生产环境,发现部分物化视图刷新慢的原因是:由于同一个物化视图日志(mv log)被多个物化视图(mv)使用,不同的物化视图(mv)使用不同的刷新间隔,导致物化视图日志(mv log)中记录过多而使得快速刷新变得缓慢。
具体查找过程如下:
.首先查询物化视图日志表
select * from user_table t where t.table_name like 'MLOG%'
这些MLOG$开头的表都是物化视图的日志表,换句话说这些基表每次发生改变的信息就记录在这个日志表中。
2.查询物化视图日志表累积的数量
如果是正常的快速刷新的物化视图,一般日志累积量不会超过太多。
用下面的sql来查询物化视图日志表累积的数量
select count(*) from MLOG$_XXXXXX;
MLOG$_XXXXXX 代表第1步查询出来的表名。另外,MLOG$_XXXXXX的命名方式是MLOG$_+基表的名字
可以把第1步查询出来的所有基表,挨个查询出count(*)来,一般来说几千以下是正常的,最正常的是为0,代表没有积累。
因为快速刷新每次都是根据mv log中的记录来执行刷新的,很有可能基表不停的插入新数据,而物化视图不停的刷新,但是很有可能一个基表被很多个物化视图都在用,而mv log中的数据对于其他物化视图也是必须的,所以即使mv刷新了,但mv log中的记录数并不会减少,所以就导致物化视图刷新越来越慢。接下来,就需要查询一下这个基表到底被多少物化视图所用。
3.查询基表上有多少个mv及其最新刷新时间
select owner, name, snapshot_site, to_char(current_snapshots,'yyyy-mm-dd hh24:mi') current_snapshots
FROM dba_registered_snapshots, dba_snapshot_logs
WHERE dba_registered_snapshots.snapshot_id = dba_snapshot_logs.snapshot_id (+)
AND dba_snapshot_logs.MASTER=upper('&table_name');
其中table_name填写基表的名称。
PS:因为是内网环境,不太好截图,所以我就只列一个基表的数据。物化视图日志:MLOG$_XXX 的数据量为90多W(以查询的时候为准),而基于这个基表XXX创建的物化视图有17个之多。
4.解决方案:
首先将累积数据过多的物化视图日志查找出来,根据其命名规则查找到相应的基表,再根据第3步的sql把相应的物化视图查找出来,最后在系统不太繁忙的时候用手工刷新的方式去刷新这新物化视图( begin dbms_refresh.refresh("XXXXXX_VIEW"); end;)。另外,物化视图日志也存在高水位,也可以做move操作降低其高水位达到优化的目的。
物化视图刷新慢--有可能是mv log被多个mv使用造成的的更多相关文章
- 解决oracle 物化视图刷新失败
oracle 物化视图刷新失败可能原因: 1.视图未建立物化视图日志 2.基表为授权给用户 1.物化视图语法 create materialized view [view_name] refresh ...
- [转]数据库物化视图刷新SQL命令和查询被delete掉的数据
原文地址:http://blog.csdn.net/wangyong191212/article/details/8024161 刷新物化视图的SQL命令: 在sql语句的命令窗口并输入如下命令: e ...
- ORACLE 快速刷新物化视图的方法(11g)
1.on demand:用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新) refresh [fast|complete|force] 视图刷新的方式: compl ...
- 定位导致物化视图无法快速刷新的原因 分类: H2_ORACLE 2013-08-08 23:04 335人阅读 评论(0) 收藏
转载自:http://yangtingkun.itpub.net/post/468/13318 物化视图的快速刷新采用了增量的机制,在刷新时,只针对基表上发生变化的数据进行刷新.因此快速刷新是物化视图 ...
- Oracle数据库入门——如何根据物化视图日志快速刷新物化视图
Oracle物化视图的快速刷新机制是通过物化视图日志完成的.Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理. 首先,看一下物化视图的结构:SQL& ...
- Oracle物化视图,物化视图日志,增量刷新同步远程数据库
1.创建DBLINK -- Drop existing database link drop public database link LQPVPUB; -- Create database link ...
- Oracle数据库入门——物化视图语法
一.Oracle物化视图语法 create materialized view [view_name]refresh [fast|complete|force][on [commit|demand] ...
- Oracle 物化视图 说明
一. 物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...
- Oracle创建物化视图
1.物化视图语法 create materialized view [view_name] refresh [fast|complete|force] [ on [commit|demand] | s ...
随机推荐
- 【IDEA】IDEA 如何设置编辑器字体大小
intellij idea 如何更改编辑器文本字体和大小 换上了intellij idea之后,第一件事就是想要改变下文字字体,因为在我这个27寸的2k分辨率的屏幕上,文字显然太小了. intel ...
- easyui datagrid中datetime字段的显示和增删改查问题
datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...
- Jquery Ajax处理,服务端三种页面aspx,ashx,asmx的比较
常规的Jquery Ajax 验证登录,主要有3种服务端页面相应 ,也就是 aspx,ashx,asmx即webserivice . 下面分别用3种方式来(aspx,ashx,asmx)做服务端来处理 ...
- strcpy vs memcpy
[本文连接] http://www.cnblogs.com/hellogiser/p/strcpy_vs_memcpy.html [分析] strcpy和memcpy都是标准C库函数,它们有下面的特点 ...
- effective OC2.0 52阅读笔记(一 熟悉Objective-C)
第一章:熟悉Objective-C 1 了解objective-c语言的起源 总结:OC为C语言添加了面向对象的特性,是其超集.采用动态绑定的消息结构而非函数调用,也就是说,要在运行时才检查对象类型及 ...
- winrt组件库(包括翻书组件)
http://www.mindscapehq.com/products/metroelements/controls/book-control-for-winrt 点击“down free trial ...
- Mathematics:Raising Modulo Numbers(POJ 1995)
阶乘总和 题目大意:要你算一堆阶乘对m的模... 大水题,对指数二分就可以了... #include <iostream> #include <functional> #inc ...
- ListView异步加载图片,完美实现图文混排
昨天参加一个面试,面试官让当场写一个类似于新闻列表的页面,文本数据和图片都从网络上获取,想起我还没写过ListView异步加载图片并实现图文混排效果的文章,so,今天就来写一下,介绍一下经验. Lis ...
- jsonp注意事项
自己测试的: <?php '); } }); } </script> <!DOCTYPE htm ...
- self dismissModalViewControllerAnimated:YES 无效(dismissviewcontrolleranimated无效)
作为一个viewController(VC),想要消失的时候可以从parent VC里面调用dismissModalViewControllerAnimated来消去改VC,也可以在该VC里面手动调用 ...