oracle 物化视图的自动刷新方法
oracle 物化视图的自动刷新方法:
方法1,直接在创建的时候,指定start with ,如下代表每分钟执行1次
create materialized view big_table_mv nologging
refresh fast on demand
with rowid
START WITH TO_DATE('18-03-2011 10:09:08', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1 / 60*24
as select * from big_table;
方法2:编写批量刷新某个用户的所有物化视图的procedure,然后结合job可以定时去执行,
create or replace procedure pro_refresh_maview is
begin
declare CURSOR c_number is
select user||'.'||mview_name mview_name from user_mviews;
my_re c_number%rowtype;
begin
open c_number;
loop
exit when c_number%notfound;
fetch c_number into my_re;
DBMS_MVIEW.REFRESH(my_re.mview_name,'C');
end loop;
close c_number;
end;
end pro_refresh_maview ;
刷新某一个物化视图的存储过程mv_emp:
CREATE OR REPLACE PROCEDURE auto_refresh_mview_job_proc
AS
BEGIN
dbms_mview.REFRESH('mv_emp');
END;
/
创建前面存储过程pro_refresh_maview的job(每五分钟执行一次存储过程)这压根就自动刷新了
declare
pro_refresh_maview_job number;
begin
dbms_job.submit( pro_refresh_maview_job,'pro_refresh_maview;',sysdate,'sysdate+1/24/60*5'); ##绿色部分是前面创建的存储过程。红色部分是自己编写的名字
end;
2、查询job的ID,前面创建的job,
select * from dba_jobs;
select * from all_jobs;
select * from user_jobs;
3、根据job的id手动执行前面该job ,
begin
dbms_job.run(44);
end;
引申内容。。。。
Oracle 11g 物化视图语法如下:
create materialized view [view_name]
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}
以上是Oracle创建物化视图(Materialized View,以下简称MV)时的常用语法,各参数的含义如下:
1.refresh [fast|complete|force] 视图刷新的方式:
fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内,主表变化过的数据.为了记录这种变化,建立增量刷新物化视图还需要一个物化视图日志表。create materialized view log on (主表名)。(多张表时,此语句也生效,创建后,原来的表中会多出两类视图表:MLOG$_table_name和RUPD$_table_name)
complete:全部刷新。相当于重新执行一次创建视图的查询语句。
force: 这是默认的数据刷新方式。当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。
2.MV数据刷新的时间:
on demand:在用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)
on commit:当主表中有数据提交的时候,立即刷新MV中的数据;
start ……:从指定的时间开始,每隔一段时间(由next指定)就刷新一次;
物化视图的刷新:
Oracle 的物化视图的快速刷新要求必须建立物化视图日志,通过物化视图日志可以实现增量刷新功能。
3.
批量刷新某个用户的全部的物化视图,使用游标,这样只能执行一个
begin
for rec in (select user||'.'||mview_name mview_name from user_mviews)
loop
DBMS_MVIEW.REFRESH(rec.mview_name,'C');
end loop;
end;
总结:oracle数据库物化视图定时刷新就两种方法,一种是创建的过程中指定start with参数,一种是procedure+jop,当然在程序里面也可以去控制自动刷新物化视图。
oracle 物化视图的自动刷新方法相关推荐
- Oracle 如何根据物化视图日志快速刷新物化视图 (不积跬步,无以至千里)
Oracle物化视图的快速刷新机制是通过物化视图日志完成的.Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理. 首先,看一下物化视图的结构: SQL ...
- oracle 物化视图、中间表的方案
物化视图 有个项目因为有比较多的查询汇总,考虑到速度,所以使用了物化视图.简单的把用到的给整理了下.先看简单创建语句: create materialized view mv_materialized ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialize ...
- Oracle物化视图的简单使用
最近有个项目因为有比较多的查询汇总,之前用的是oralce的临时表,但临时表的特性导致无法完成业务需求,所以使用了物化视图. 先看简单创建语句: //创建物化视图 create materialize ...
- Oracle物化视图优化多表查询速度
近期项目中遇到有关报表查询sql速度过慢的问题,由于sql是多个表相关联的查询结果,并且数据量过大,所以导致查询速度过慢.为此,采用物化视图来提高查询速度. 1.物化视图概述 物化视图是包括一个查询结 ...
- oracle 物化视图 --转
Oracle的物化视图提供了强大的功能,可以用在不同的环境中.在不同的环境中,物化视图的 作用也不相同. 数据仓库中的物化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询 ...
- oracle技术之Oracle 物化视图(一)
一. 理论部分 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. Oracle的物化视 ...
- Oracle物化视图和普通视图区别
一.物化视图的简介 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际 ...
- Oracle物化视图与物化视图日志
文章目录 物化视图 物化视图与普通视图的区别 创建一个存放person的表 创建一个存放person的address的表 初始化数据 创建物化视图的语句 1.build [immediate|defe ...
最新文章
- Java 解惑:Comparable 和 Comparator 的区别
- linux - word frequency
- 如何查看某个用户指定时间段的ABAP开发记录
- fullcalendar 获得当前视图年月_?多视图立体视觉: CVPR 2019与AAAI 2020 上的ACMH、ACMM及ACMP算法介绍...
- 期许伟大-基于CMMI的过程改进之道探索
- 60个有用CSS代码片段
- caffe中 softmax 函数的前向传播和反向传播
- Linux批量文件名大小写转换,Linux中批量把文件名大小写转换
- windows安装numpy库
- 高等数学上册下册笔记课后答案 同济大学第七版
- 中国移动加快自主创新推动我国主导4G标准引领国际
- 如何把Netflix数据集转换成Movielens格式?
- 问题:为什么在CAD中使用贱人工具箱中的递增命令会显示失败?
- GPS定位的优点和缺点与室内定位
- 在PHP项目中使用Standford Moss代码查重系统
- c语言工业设计中的案例,工业设计中CMF为什么这么重要?看看设计案例就知道了!...
- JBOSS未授权漏洞详细复现
- 学习管理系统五大好处
- Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a09_扩展内存
- 十年Java经验让我总结出了这些,什么是真正的架构设计?
热门文章
- 炉石传说吵吵机器人如何获得_炉石传说吵吵爵士怎么获得
- 两款飞利浦智能LED系列灯具新品发布
- unity创建项目不添加包_使用精选的资产捆绑包和Unity Learn Premium可以更高效地创建项目
- 设计模式 - Reactor 模式
- Android空格占位符
- Altium Designer画四层板
- php 微信公众号跳转小程序,微信公众号菜单添加小程序miniprogrampagepath参数详解php开发公众号-小程序怎么放到公众号菜单里-公众号菜单链接小程序...
- x200换屏_thinkpad x200换屏多少钱 thinkpad x200换屏价格【图文】
- 内存不足导致应用进程被杀
- Python绘制雪花