详解oracle数据库的物化视图

物化视图存储基于远程表的数据,也可称为快照,是远程数据的本地副本,或者用来生成基于数据表求和的汇总表

通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)

对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的

如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取

物化视图把他的物理结构存储在自己的段中,该段可以被索引和分区

查询不必完全匹配用来创建物化视图的 SQL 语句,优化程序可以动态重写一个与原定义相近的查询

⑴ 使用物化视图前的几个配置步骤

使用一个物化视图,用户只需在基表上拥有权限即可

① 确定那些语句要创建物化视图

② 决定是否要保持视图与基表数据同步

如果不同步,可选择如下三种刷新方式:

COMPLETE:刷新启动时,先 truncate 物化视图,再从基表重新物化数据

FAST:只刷新基表上次刷新后改变的数据,使用视图的日志数据或ROWID完成

FORCE:默认的方式,先使用FAST,不行就使用COMPLETE方式

③ 设置 init.ora 的参数

JOB_QUEUE_PROCESSES,必须设置大于 1

QUERY_REWRITE_ENABLED,设置为 TRUE 时,允许动态重写查询

QUERY_REWRITE_INTEGRITY,确定访问物化视图时数据一致性要遵守的程度

OPTIMIZER_MODE,必须设置成 CBO 的某种方式

⑵ 创建物化视图

案例:

hr@ORCL> create materialized view mv_t

2   tablespace users

3   build immediate

4   refresh complete --如果需要进行快速刷新,则需要建立实体化视图日志

5   enable query rewrite

6   as

7   select * from t;

Materialized view created.

注释:

① refresh [fast|complete|force] 视图刷新的方式

fast: 增量刷新。假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内

  基表变化过的数据,为了记录这种变化,建立增量刷新物化视图还需要一个物化视图日志表

  create materialized view log on (主表名);

complete:全部刷新。相当于重新执行一次创建视图的查询语句

force: 这是默认的数据刷新方式。当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式

② MV 数据刷新的时间

on demand:在用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)

on commit:当主表中有数据提交的时候,立即刷新 MV 中的数据

start ……:从指定的时间开始,每隔一段时间(由 next 指定)就刷新一次

③ Build immediate 一共有三个选项

Build immediate:建立物化视图,并使用当前命令执行的数据马上填充视图数据

Build deferred:只建立物化视图,在第一次刷新之间不填充数据

No prebuilt table,使用事先已存在的,已含有视图定义中有现有数据的表,而不是建立一个新结构来保存数据

时间: 2024-12-22 10:23:19

详解oracle数据库的物化视图的相关文章

详解Oracle数据库中不同的恢复特性

由于Oracle数据库备份有三种方式,每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份. 一.备份策略 1.在操作系统级,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘.这样,当某个磁盘出现物理损坏时,操作系统会自动引发映像磁盘来取代失效的磁盘,保证数据库的正常运行. 由于我们使用的是双服务器,因此在另一服务器上保留一个备份数据库.备份数据库与正在使用的数据库具有相同的参数状态,这样在数据库故障中,只需作必须的最少恢复,最大限度地缩

详解Oracle数据库各类控制语句的使用_oracle

Oracle数据库各类控制语句的使用是本文我们主要要介绍的内容,包括一些逻辑控制语句.Case when的使用.While的使用以及For的使用等等,接下来我们就开始一一介绍这部分内容,希望能够对您有所帮助. Oracle 中逻辑控制语句  If elsif else end if set serverout on; declare per_dep_count number; begin select count(*) into per_dep_count from emp; if per_de

专家为您详解JAVA数据库基本操作

数据|数据库|详解 java 数据库基本操作1.java数据库操作基本流程2.几个常用的重要技巧:     可滚动.更新的记录集     批量更新     事务处理 java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 1.取得数据库连接  1)用DriverManager取数据库连接   例子    String className,url,uid,pwd;    className = "oracle.jdbc.driver.OracleDri

ORACLE中的物化视图

oracle|视图 ORACLE中的物化视图         物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照.        物化视图可以查询表,视图和其它的物化视图.        通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中).        对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的.如果你想修改本地副本,必须用高级复制的功能.当你想从一个表或视

mysql、mssql及oracle分页查询方法详解_数据库其它

本文实例讲述了mysql.mssql及oracle分页查询方法.分享给大家供大家参考.具体分析如下: 分页查询在web开发中是最常见的一种技术,最近在通过查资料,有一点自己的心得 一.mysql中的分页查询 注: m=(pageNum-1)*pageSize;n= pageSize; pageNum是要查询的页码,pageSize是每次查询的数据量, 方法一: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返

Oracle 11g r2物化视图日志新增的COMMIT SCN语句概述

在11.2中,物化视图日志也新增了一些功能,对于本地物化视图而言,现在可以利用COMMIT SCN来替代以前版本中的TIMESTAMP方式来进行刷新. 看一个简单的例子: SQL> SELECT * FROM V$VERSION; BANNER -------------------------------------------------------------------------------- Oracle Database11gEnterprise Edition Release11

sql注入之新手入门示例详解_数据库其它

前言 在学习这篇文章之前,至于要学习了SQL注入的前提知识,可以参考之前写的一篇sql注入之必备的基础知识. 认识SQL注入 最开始就从最简单的开始,进入到less-1开始我们的SQL注入学习之旅. 通过改变http://localhost/sqlilabs/Less-1/?id=3的id值,页面上呈现不同的内容(username,password). 那么我们就可以猜测在后台中的SQL语句就是根据前台传入的id值来去对应的数据. 那么SQL语句的写法为: select username,pas

详解ORACLE SEQUENCE用法_oracle

在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系. 1.Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限. 创建语句如下: CREATE SEQUENCE seqTest INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXvalue -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; --设置缓存ca

Oracle数据库表与视图

oracle|视图|数据|数据库 Oracle数据库数据对象中最基本的是表和视图,其他还有约束.序列.函数.存储过程.包.触发器等.对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径. 表和视图 Oracle中表是数据存储的基本结构.ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大.视图是一个或多个表中数据的逻辑表达式.本文我们将讨论怎样创建和管理简单的表和视图. 管理表 表可以看作有行和列的电子数据表,表是关