物化视图刷新慢--有可能是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 ...
随机推荐
- js禁止网页使用右键
document.oncontextmenu=function(){ return false }
- 【GoLang】GoLang 错误处理 -- 异常处理思路示例
代码: package main import ( "fmt" // "testing" ) var Pkg = "packageName" ...
- POJ 2121
http://poj.org/problem?id=2121 一道字符串的转换的题目. 题意:就是把那个英文数字翻译成中文. 思路:首先打表,然后把每一个单独的单词分离出来,在组合相加相乘. #inc ...
- ios 使用block中使用self可能产生的循环引用
在block中调用 self,那么就会引起循环引用问题,那么这是为什么呢? 为什么self会对block进行强引用呢???? 这里推荐一篇关于block的专业文章,http://blog.csdn.n ...
- nginx 原理&知识
2015年6月4日 17:04:20 星期四 发现两个关于nginx原理的系列文章, 非常好 http://blog.sina.com.cn/s/blog_6d579ff40100wi7p.html ...
- Mathematics:Find a multiple(POJ 2356)
找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上. 这一题是说有找出 ...
- (2016弱校联盟十一专场10.2) A.Nearest Neighbor Search
题目链接 水题,算一下就行. #include <bits/stdc++.h> using namespace std; typedef long long ll; ll x[],y[], ...
- Please see the 'svn upgrade' command
svn: E155036: Please see the 'svn upgrade' command svn: E155036: Working copy '/home/easwy/dev' is t ...
- VB.NET 注册表基本操作
''' <summary> ''' 注册表设置值 ''' </summary> ''' <param name="strKey"></pa ...
- setw()函数