存档

‘MView’ 分类的存档
09/06 09
没有评论 1,286 次查看


topMView重要视图

Oracle文档中MView相关视图的链接Materialized View and Refresh Group Views


top在源数据库端的相关视图


topDBA_BASE_TABLE_MVIEWS

此视图与系统视图SYS.SLOG$相对应。

视图DBA_BASE_TABLE_MVIEWS记录了使用MView Log访问基表的相关刷新的信息。换句话说就是记录了使用了MView Log并且做过快速刷新的MView的信息,必须同时满足有MView Log以及做过快速刷新这两个条件,缺一不可。

列名 描述
OWNER 基表的OWNER
MASTER 基表的名称
MVIEW_LAST_REFRESH_TIME 基于这个基表的MView最后的快速刷新的时间
MVIEW_ID 基于这个基表的MView在数据库中的ID,这个可以和DBA_REGISTERED_MVIEWS关联找出相应的MView的名称
备注:SYS.SLOG$的作用
SYS.SLOG$记录了注册在源数据库端的能进行快速刷新的MView的信息。这个信息在进行快速刷新的时候会备用到,同时也会用来维护基表的MView Log信息。

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_06.html
09/06 02
没有评论 854 次查看


top刷新组的基本概念

(本部分内容基本翻译自:Materialized View Concepts and Architecture,有问题请移步原文。)


top什么是刷新组

通常我们创建的MView会不止一个,而且各个MView的Master Table之间是有约束,数据一致性关联的,如果我们对各个MView分开刷新的话我们是不能保证关联数据的完整性和事务的一致性的。Oracle提供了刷新组来解决这个问题。在刷新组刷新之后Oracle可以保证在刷新组里面的所有的表在刷新的那个时间点的是一致的。


top刷新组的大小

Oracle专门针对大的MView刷新组做了优化,也就是说对于相同数量的MView来说一个大的刷新组要多个小的刷新组刷新的要快,即刷新的一个含有100个MView的刷新组要比刷新5个各含有20个MView的刷新组要快。

但是速度不是唯一的需要注意的问题,再决定一个刷新组大小的时候我们还需要考虑下面的这些问题:

数据的一致性
就像我们上面所说的,数据的完整性和事物的一致性是我们最需要考虑的问题,考虑大小之前先保证一致性。
表锁
再刷新组的刷新期间,所有的在组里面的表会被锁住而不让别的程序进行更新的操作,因为表的更新会破坏数据的一致性。这样就造成刷新组越大,表被锁的时间也就越长。因此针对这个来说越小的刷新组是越有利的。
网络的稳定性
如果在一个刷新组刷新完成之前网络终端的话将会导致整个组的刷新回滚,因此在网络不好的时候越大的刷新组是越不利的,我们需要根据网络的状况来调整我们的刷新组的大小。

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_05.html
09/05 15
没有评论 645 次查看


topMView创建语法

MView的语法图示,来自Oracle Database SQL Reference

ON PREBUILD TABLE
将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。注意:这种方法不能用于以ROWID方式建立MVIEW,因为按照ROWID方式建立的ROWID所对应的表需要包含一个隐含的ROWID列。
Build Clause
创建方式,决定是否在创建MV的时候生成数据。
阅读全文…
本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_04.html
09/05 12
没有评论 1,014 次查看


top前言

前面我们已经说了MView的一些基本知识,我们举得例子都是基于PK的MView,Oracle还支持其他方式的MView,基于ROWID的MView就是其中的一种。在这一部分将讨论如何建立基于ROWID的MView,同时分析下MView Log的结构。


top基于ROWID的MView


top基于ROWID MView的创建

还是先用一个例子开始:

-- 建一个没有PK的表TT
USER@orcl> create table T4 (a int, b varchar(40));
Table created.
 
-- 建立一个MView,这是Oracle报错了
USER@orcl> create materialized view mvt4 as select * from t4;
create materialized view mvt4 as select * from t4
                                                *
ERROR at line 1:
ORA-12014: table 'T4' does not contain a primary key constraint

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_03.html
09/05 08
2 条评论 899 次查看


top前言

现在我们通过一些例子来说明一下MView Log的基本结构以及MView快速刷新的过程。

在这一部分里面,我们还是利用上一部分提供的例子先建立一个MView,同时也创建该MView基表的MView Log。

-- 创建一个测试用的表T
USER@orcl> create table t (a int, b varchar2(50), constraint pk_t primary key(a));
Table created.
 
-- 创建对应的MV名为MVT
USER@orcl> create materialized view mvt as select * from t;
Materialized view created.
 
-- 现在往表里面插入一些个数据
USER@orcl> insert into t select rownum, object_name from all_objects;
11449 rows created.
 
USER@orcl> commit;
Commit complete.
 
-- 下面对mview做一次刷新看看
USER@orcl> exec dbms_mview.refresh('mvt');
PL/SQL procedure successfully completed.
 
-- 创建MView Log
USER@orcl> create materialized view log on t;
Materialized view log created.
 
-- 接下来就是进行快速刷新了
USER@orcl> exec dbms_mview.refresh('mvt', 'F');
PL/SQL procedure successfully completed.

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_02.html
09/05 05
没有评论 1,636 次查看


top前言

MView的两大应用方向

本系列文章以实例的方式一步步的说是什么是MView、MView的结构、MView的基本工作过程,以及MView的管理方法。


top几个术语的对应

基表
指的是英文里面的Master Table和Master Materialized View,并不只是只一个表,而是创建MView的时候所需要用到的n个表或者是相关的上一级的MView。
MView
就是Materialized View了,物化视图。
源数据库端
Master Site和Master Materialized View Site,指的是基表所在的数据库
MView端
Materialized View Site,MView所在的数据库

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2009/mview_step_by_step_01.html

无觅相关文章插件,快速提升流量