ORACLE物化视图

概述

物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询, Oracle 都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。物化视图也是一种段(segment),物化视图会占用数据库磁盘空间

刷新的方法

刷新方式有四种: FAST、COMPLETE、FORCE和NEVER。
FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。

COMPLETE刷新对整个物化视图进行完全的刷新。

FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式 。

NEVER指物化视图不进行任何刷新。

基本语法:

CREATE MATERIALIZED VIEW [view_name] REFRESH [force|fast|complete|never] on [demand|commit] AS SELECT…..

举例

1、COMMIT时同步

CREATE MATERIALIZED VIEW TB_MAR_VIEW REFRESH FORCE ON COMMIT AS

SELECT

  A.NAME,

  b.age,

  b.sex

FROM tb_mar_01 A,tb_mar_02 b WHERE A.NAME=b.NAME;

2、定时同步

on commit 改为 on demand start with sysdate next sysdate+1 (指定物化视图每天刷新一次)

注意:如果源表被truncate,则后续物化视图无法同步

手动刷新物化视图

BEGIN

DBMS_MVIEW.REFRESH (

list => 'TB_MAR_VIEW',

Method =>'COMPLETE',

refresh_after_errors => True);

end;

附:DBMS_MVIEW.REFRESH相关说明

【list | tab】

{ list  IN VARCHAR2,--list与tab互斥,仅可取其一| tab IN DBMS_UTILITY.UNCL_ARRAY,}

method

method IN VARCHAR2 := NULL,--刷新方法,可为:c,f,?,p分别代表:complete,fast,force,a和c相同,p即通过重新计算物化视图基于变化分区从而进行刷新;如list多于method,则采用默认刷新方法

【rollback_seg

rollback_seg IN VARCHAR2 := NULL,--刷新所有rollback segment

【push_deferred_rpc】

push_deferred_rpc IN BOOLEAN := true,--刷新前把mv变化传播到master table.如不指定,则丢失mv变化;仅用于可更新mv

【refresh_after_errors】

refresh_after_errors IN BOOLEAN := false,--与下述字典deferror有关;如值为true,即便deferror出错,继续刷新.如atomic_refresh=false则继续刷新其它的物化视图

【purge_option】

purge_option IN BINARY_INTEGER := 1,--如为0不清理,1为lazy purge,一般此为最佳配置.2则为更积级性的purge

【parallelism】

parallelism IN BINARY_INTEGER := 0,--如为0则表示为序列化传播,如为1即为并行传播,大于1同理
   --设置此选项为2,可修整队列;适用于多个master复制组被推送到不同的目标站点(高级复制术语).
   --而对于一或多个复制组的变化推送并不常发生.此时可配置此参数为0,偶尔配置参数为2可减少
   --队列大小

【heap_size】

heap_size IN BINARY_INTEGER := 0,--最好不要显式配置此参数,除非在ORACLE支持下;指定并行传播同时检查的最大事务数

【atomic_refresh】

atomic_refresh IN BOOLEAN := true,--是否在同一个事务中刷新所有物化视图

【nested】

nested IN BOOLEAN := false);--如指定为true,则一并刷新依赖的物化视图

其他

物化视图日志:create materialized view log on tb3; 

snapshot log:表名为:mlog$tb3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kencai1983

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值