物化视图刷新慢--有可能是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 ...
随机推荐
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生 ...
- 【GoLang】GoLang UTF8 与 Unicode
结论: 通用的UTF8编码可是Ken Thompson和Rob Pike共同发明的, 他们都是Go的作者. Go中rune对应unicode的码点, string只是UTF8编码.len(" ...
- SQL Server OBJECT_ID() 函数
OBJECT_ID 返回架构范围内对象的数据库对象标识号. 重要提示 使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器).对于在 sys.objects 目录视图中找不到的对象 ...
- C#中堆和栈的区别分析
线程堆栈:简称栈 Stack托管堆: 简称堆 Heap 使用.Net框架开发程序的时候,我们无需关心内存分配问题,因为有GC这个大管家给我们料理一切.如果我们写出如下两段代码: 1 代码段1: 2 3 ...
- 【leetcode】Word Search
Word Search Given a 2D board and a word, find if the word exists in the grid. The word can be constr ...
- poj 1276
一道DP的题目,还是一道多重背包的题目,第一次接触. 题意:有现今cash,和n种钱币,每种钱币有ni个,价值为di,求各种钱币组成的不超过cash的最大钱数 思路:可以转换为0/1背包和完全背包来做 ...
- java -jar jenkins.war
//设置jenkins主目录,并启动 #! /bin/sh CurrentDir=`dirname $` export JENKINS_HOME=$CurrentDir/jenkins_home ec ...
- Maven 3.3.3 Win10环境下的使用实例(中)
继上一篇文章介绍了Maven在Windows中的安装,本文将介绍 Maven 的核心概念. POM (Project Object Model) Maven 插件 Maven 生命周期 Maven 依 ...
- OKhttp的封装(上)
自从介绍了OKhttp3的一些基本使用之后,又偷了下懒,所以它的续篇被搁置了一段时间,现在补充. OKhttpManager.Class 请求工具类 package com.example.admi ...
- Parallels Destop软件配置
Parallels Destop个人感觉最好用的mac虚拟win软件 http://pan.baidu.com/s/1jHFwIGm 密码:ab21百度云下载(或者下载自己百度云的) 安装方法: 1. ...