`

.【转载】oracle物化视图的一般用法

 
阅读更多

本文转载自乔文《oracle物化视图的一般用法》
    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。

1、物化视图的类型:ON DEMAND、ON COMMIT
    二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。

2、ON DEMAND物化视图
    物化视图的创建本身是很复杂和需要优化参数设置的,特别是针对大型生产数据库系统而言。但Oracle允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉及到默认值问题。也就是说Oracle给物化视图的重要定义参数的默认值处理是我们需要特别注意的。
    物化视图的特点:
    (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到佐证;
    (2) 物化视图也是一种段(segment),所以其有自己的物理存储属性;
    (3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证;
    创建语句:create materialized view mv_name as select * from table_name
    默认情况下,如果没指定刷新方法和刷新模式,则Oracle默认为FORCE和DEMAND。

    物化视图的数据怎么随着基表而更新?
    Oracle提供了两种方式,手工刷新和自动刷新,默认为手工刷新。也就是说,通过我们手工的执行某个Oracle提供的系统级存储过程或包,来保证物化视图与基表数据一致性。这是最基本的刷新办法了。自动刷新,其实也就是Oracle会建立一个job,通过这个job来调用相同的存储过程或包,加以实现。
   
    ON DEMAND物化视图的特性及其和ON COMMIT物化视图的区别,即前者不刷新(手工或自动)就不更新物化视图,而后者不刷新也会更新物化视图,——只要基表发生了COMMIT。
    创建定时刷新的物化视图:create materialized view mv_name refresh force on demand start with sysdate
next sysdate+1 (指定物化视图每天刷新一次)
    上述创建的物化视图每天刷新,但是没有指定刷新时间,如果要指定刷新时间(比如每天晚上10:00定时刷新一次):create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss')

3、ON COMMIT物化视图
    ON COMMIT物化视图的创建,和上面创建ON DEMAND的物化视图区别不大。因为ON DEMAND是默认的,所以ON COMMIT物化视图,需要再增加个参数即可。

    需要注意的是,无法在定义时仅指定ON COMMIT,还得附带个参数才行。
    创建ON COMMIT物化视图:create materialized view mv_name refresh force on commit as select * from table_name
    备注:实际创建过程中,基表需要有主键约束,否则会报错(ORA-12014)
4、物化视图的刷新
    刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:ON DEMAND和ON COMMIT。(如上所述)
    刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。
     对于已经创建好的物化视图,可以修改其刷新方式,比如把物化视图mv_name的刷新方式修改为每天晚上10点刷新一次:alter materialized view mv_name refresh force on demand start with sysdate next to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss')
  
5、物化视图具有表一样的特征,所以可以像对表一样,我们可以为它创建索引,创建方法和对表一样。

6、物化视图的删除:
     虽然物化视图是和表一起管理的,但是在经常使用的PLSQL工具中,并不能用删除表的方式来删除(在表上右键选择‘drop’并不能删除物化视图),可以使用语句来实现:drop materialized view mv_name
分享到:
评论

相关推荐

    利用ORACLE物化视图建立报表数据库.pdf

    本文主要介绍了利用ORACLE物化视图建立报表数据库的方法和原理。报表数据库是指独立于生产数据库的数据库,用于存储和管理报表数据。通过建立报表数据库,可以实现工作负荷的隔离,满足两种业务处理的需求,并为过渡...

    ORACLE 物化视图 详解

    创建主键物化视图时,Oracle会使用主键来唯一标识记录,从而支持增量刷新。 - **示例**: ```sql CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY ...

    oracle物化视图配置指导书.doc

    Oracle物化视图是Oracle数据库中一种非常重要的特性,它提供了数据的一致性视图,通常用于实现数据的异步复制。本配置指导书主要针对Oracle高级复制中的物化视图,旨在帮助用户理解并成功配置物化视图,以满足在实际...

    物化视图普通视图区别,很不错的资料

    默认情况下,如果在创建物化视图时未指定刷新策略,Oracle将使用FORCE和DEMAND。 2. ON COMMIT物化视图:与ON DEMAND不同,这种类型的物化视图会在基表发生COMMIT操作时立即刷新,确保物化视图的数据总是最新的。...

    oracle的物化视图

    Oracle的物化视图是一种数据库对象,它存储了查询结果,从而提供了一种高效的数据访问方式。物化视图的主要目标是提升查询性能,尤其是在处理复杂查询、连接操作或聚合计算时。它们在数据仓库环境中尤其有用,因为...

    基于ORACLE物化视图的电力营销系统优化.pdf

    【标题】中的“基于ORACLE物化视图的电力营销系统优化”指的是使用ORACLE数据库中的物化视图技术来提升电力营销系统的性能和效率。电力营销系统是电力企业管理和销售电能的关键工具,它涉及审批、核算、收费、设备...

    物化视图,数据仓库,Oracle

    ### 物化视图在Oracle数据仓库中的应用与优化 #### 一、引言 在当今数据驱动的时代背景下,企业越来越依赖于数据仓库来进行决策支持系统(DSS)的构建,以便更好地理解业务趋势并做出战略性的分析。数据仓库的设计...

    物化视图的两种实现

    在使用物化视图时,还需要注意一些问题。首先,物化视图会占用额外的存储空间,因此需要考虑数据库的整体容量规划。其次,物化视图的维护可能会增加数据库的复杂性,特别是当有多个物化视图或复杂的更新逻辑时。最后...

    创建物化视图ORA-12014错误解决方法

    6. **使用其他方法创建物化视图**: - 如果无法解决ROWID的问题,可以考虑创建不包含ROWID的物化视图。 - 或者采用其他优化策略来提高查询性能。 #### 实际操作示例 假设我们尝试创建如下的物化视图: ```sql ...

    Oracle中管理物化视图变得更加容易

    2. **查询重写**:启用查询重写选项(ENABLE QUERY REWRITE)后,Oracle可以自动检测到查询是否可以通过物化视图来优化,并在后台透明地使用物化视图的预计算结果,提高查询速度。 在Oracle 10g之前,管理和优化...

    oracle动态视图文档(详细版)

    7. **优化动态视图**:分析视图查询性能问题,提供索引策略、物化视图和查询重构等优化技巧。 8. **异常处理与错误调试**:介绍处理视图操作过程中可能出现的错误,以及如何进行有效的调试。 9. **实战案例**:...

    使用物化视图和exp实现生产库的逻辑实时备份

    ### 使用物化视图和EXP实现生产库的逻辑实时备份 #### 一、概述 本文主要探讨了如何利用Oracle数据库中的物化视图技术和逻辑备份工具`exp`来实现生产库个别表的实时数据刷新与备份。这种方法不仅能够确保数据的...

    物化视图在大型ORACLE数据库查询中的应用.pdf

    物化视图是大型Oracle数据库中提高查询性能的关键技术之一。随着网络信息量的快速增长和电子商务的蓬勃发展,数据库系统的性能要求随之提升。在处理大量数据时,传统的查询方法可能无法及时响应用户的查询请求,尤其...

    基于物化视图的Oracle增量备份方法的实现.pdf

    【Oracle物化视图】:Oracle物化视图是一种预计算的数据存储结构,它存储了查询结果集,类似于数据库中的一个快照。物化视图可以用来提高查询性能,特别是当查询涉及复杂联接、聚合操作或者从远程数据库中获取数据时...

    Oracle高级复制数据调研报告

    本调研报告主要关注Oracle中的高级复制功能,特别是物化视图(Materialized Views)的应用和实现。物化视图是Oracle数据库提供的一种强大工具,用于提高查询性能和简化数据分发。 1. **物化视图的基本概念**: - ...

    mysql触发器实现oracle物化视图示例代码

    在MySQL中,由于不直接支持物化视图,我们可以使用触发器来模拟Oracle的物化视图功能。下面将详细介绍如何使用MySQL触发器来实现类似的功能。 首先,我们需要创建两个表:基表`Orders`和物化视图表`Order_mv`。`...

    自己总结的数据库oracle视图用法

    在Oracle中,还可以创建物化视图,这种视图会预先计算并存储结果,适用于需要定期更新且查询频繁的数据。物化视图的刷新可以是手动的,也可以设置为自动定时刷新,以保持数据的实时性。 总的来说,Oracle视图是...

Global site tag (gtag.js) - Google Analytics