- 浏览: 89225 次
- 性别:
- 来自: 深圳
文章分类
物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。物化视图可以查询表,视图和其它的物化视图。
一、 关于物化视图日志:
查询物化视图日志文件格式:desc mlog$_lzwmvtest;
创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错
Demo:对一个表test
创建日志:create materialized view log on test;
那么会报:表'LZWMVTEST'不包含主键约束条件
这种情况下,就必须指定日志文件结构
比如:create materialized view log on test with rowid(具体的针对日志内容方面的在另外一个专题里说明,这里就简述到此)
二、 关于生成数据和刷新:
1>生成数据
两大选项:build immediate build deferred
Build immediate:在创建物化视图的同时根据主表生成数据
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。
2>关于刷新
² 刷新方式:complete fast force
Complete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新
Ø Fast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)
Ø Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)
不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..)
² 刷新时间:on demand on commit start with/ next
On demand:在需要刷新时进行刷新(人工判断)
On commit:在基表上有提交操作时,进行更新
Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)
Next:刷新的周期时间
三、 基于主键的物化视图和ROWID的物化视图的说明
创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。
例如:1、如果日志内使用的是primary key 则在创建物化视图时指定rowid来更新,则会报ORA-12032: 不能使用 "TEST" 上实体化视图日志中的 rowid 列
2、如过日志内使用的是rowid 则在创建物化视图时指定primary或者默认指定,则会报ORA-23415: "GIS"."LZWMV" 的实体化视图日志不记录主键
四、 关于物化视图存放的的表空间
直接在创建物化视图时指定日志存放的表空间和物化视图的表空间。
例子:create materialized view MV_TEST tablespace test ----表空间名称
五、 关于查询重写和更新
在创建查询重写时,基表中必须有主键约束,视图里是无法创建主键的,不过其继承了基表的主键约束。(关于视图的创建的一些技巧有待总结……)下面给个例子
Create materialized view MV_TEST
Refresh fast ----前提是必须创建基表日志,可以忽略该项
Enable query rewrite ----前提是基表上必须存在主键约束
As
Select * from TEST; ----物化视图数据生成
六、 关于创建物化视图的例子:
1、 使用增量刷新的物化视图的写法
创建物化视图日志,必须创建日志
Create materialized view log on TEST ----TEST为表名
----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图
----创建物化视图语句:
Create materialized view MV_TEST
----MVTEST为物化视图名
Build immediate
----创建时生成数据对应的是build deferred
Refresh fast
----增量刷新
On commit
----在基表有更新时提交,这里该句对视图无效
With rowid
----这里创建基于rowid的物化视图,对应的是 primary key
As
Select * from TEST;
----生成物化视图数据语句
七、 小的知识点
创建主键约束语句:alter table table_name add(constraint constraint_name primary key(columes));
建议使用job来定期刷新物化视图
一、 关于物化视图日志:
查询物化视图日志文件格式:desc mlog$_lzwmvtest;
创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错
Demo:对一个表test
创建日志:create materialized view log on test;
那么会报:表'LZWMVTEST'不包含主键约束条件
这种情况下,就必须指定日志文件结构
比如:create materialized view log on test with rowid(具体的针对日志内容方面的在另外一个专题里说明,这里就简述到此)
二、 关于生成数据和刷新:
1>生成数据
两大选项:build immediate build deferred
Build immediate:在创建物化视图的同时根据主表生成数据
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。
2>关于刷新
² 刷新方式:complete fast force
Complete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新
Ø Fast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)
Ø Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)
不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..)
² 刷新时间:on demand on commit start with/ next
On demand:在需要刷新时进行刷新(人工判断)
On commit:在基表上有提交操作时,进行更新
Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)
Next:刷新的周期时间
三、 基于主键的物化视图和ROWID的物化视图的说明
创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。
例如:1、如果日志内使用的是primary key 则在创建物化视图时指定rowid来更新,则会报ORA-12032: 不能使用 "TEST" 上实体化视图日志中的 rowid 列
2、如过日志内使用的是rowid 则在创建物化视图时指定primary或者默认指定,则会报ORA-23415: "GIS"."LZWMV" 的实体化视图日志不记录主键
四、 关于物化视图存放的的表空间
直接在创建物化视图时指定日志存放的表空间和物化视图的表空间。
例子:create materialized view MV_TEST tablespace test ----表空间名称
五、 关于查询重写和更新
在创建查询重写时,基表中必须有主键约束,视图里是无法创建主键的,不过其继承了基表的主键约束。(关于视图的创建的一些技巧有待总结……)下面给个例子
Create materialized view MV_TEST
Refresh fast ----前提是必须创建基表日志,可以忽略该项
Enable query rewrite ----前提是基表上必须存在主键约束
As
Select * from TEST; ----物化视图数据生成
六、 关于创建物化视图的例子:
1、 使用增量刷新的物化视图的写法
创建物化视图日志,必须创建日志
Create materialized view log on TEST ----TEST为表名
----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图
----创建物化视图语句:
Create materialized view MV_TEST
----MVTEST为物化视图名
Build immediate
----创建时生成数据对应的是build deferred
Refresh fast
----增量刷新
On commit
----在基表有更新时提交,这里该句对视图无效
With rowid
----这里创建基于rowid的物化视图,对应的是 primary key
As
Select * from TEST;
----生成物化视图数据语句
七、 小的知识点
创建主键约束语句:alter table table_name add(constraint constraint_name primary key(columes));
建议使用job来定期刷新物化视图
发表评论
-
SGA与PGA
2012-02-27 10:59 9303一、名词解释 (1)SGA:System Global Are ... -
SGA与PGA
2012-02-27 10:59 0一、名词解释 (1)SGA:System Global Are ... -
ORALCE函数大全
2012-02-21 14:08 757ORACLE日期时间函数大全 TO_DAT ... -
regex
2012-02-03 15:18 788ORACLE中的支持正则表达 ... -
oracle 等待
2012-02-02 15:17 1179ORACLE的等待事件,主要可以分为两类,即空闲(IDLE)等 ... -
oracle em
2012-01-31 14:16 773访问地址:https://localhost:1158/em ... -
oracle 正则表达式
2012-01-13 17:26 7941、正则表达式中的元字符 元字 ... -
oracle 事件
2011-12-30 16:32 929很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些 ... -
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 解决办法
2011-12-29 19:59 13421 查看所有回滚段信息: select segment_nam ... -
重做表空间
2011-12-29 18:03 896/*系统UNDO表空间的重建*/ --1. 创建新的UNDO ... -
存储过程使用dblink问题
2011-12-21 16:22 5771按照接口标准创建DBlink后. 准备创建物化视图: CR ... -
数据参数出错 ORA-00119 ORA-00132
2011-12-09 11:07 4585SQL> startup ORA-00119: inva ... -
ORACLE优化
2011-11-17 21:27 883对于OLTP系统,应该关注 ... -
精通表转成分区表
2011-11-15 20:15 369SQL> CREATE TABLE T_N (ID NU ... -
oracle 归档日志
2011-11-15 15:44 723Oracle可以将联机日志文件保存到多个不同的位置,将 ... -
rman 详细
2011-11-03 18:33 5881、连接到目标数据库(不用恢复目录数据库): R ... -
RMAN备份命令(转摘)
2011-11-03 15:21 6431、切换服务器归档模式,如果已经是归档模式可跳过此步: %sq ... -
增量备份
2011-10-24 17:41 8141. 确认ORACLE数据库属于归档模式 sqlplus ... -
表同步
2011-10-24 17:40 667--名词说明:源——被同步的数据库 目 ... -
oracle 权限查询
2011-10-11 12:04 704查看Oracle用户权限一般要通过一些实际操作,首先需要遍历所 ...
相关推荐
Oracle物化视图是数据库管理系统中的一个重要特性,尤其在处理大量数据和复杂查询的场景下,它可以极大地提升查询性能和数据一致性。...理解并掌握物化视图的使用,对于开发高效能的OLAP和OLTP系统具有重要意义。
物化视图的使用可以显著提高查询性能,因为它避免了每次查询时的计算过程,而是直接返回预先计算好的结果。在Oracle中,物化视图的应用广泛且灵活,可以通过不同的配置选项来满足不同的需求。 首先,创建物化视图的...
为什么使用物化视图?在执行某些查询时,效率较低,传统方法(例如,索引或查询优化)无法显著提高效率。这时使用的方法是将需要查询的数据事先进行查询(pre-querying)并储存起来,这样每次查询时就不需要都从头...
Oracle 物化视图创建和使用 Oracle 物化视图是一种预先计算并保存表连接或聚集等耗时较多的操作的结果,以提高查询性能。物化视图对应用程序透明,不会影响应用程序的正确性和有效性,但需要占用存储空间。基表发生...
在Oracle 10g之前,要检查物化视图是否配置正确,需要使用DBMS_MVIEW包的EXPLAIN_MVIEW和EXPLAIN_REWRITE过程,这些过程只能简单地表明某个特性(如快速刷新或查询重写)可能适用于物化视图,但不会提供具体实现建议...
- **汇总连接返回**:当查询部分匹配物化视图时,可以使用物化视图和其他表进行连接操作。 - **汇总汇总与聚合到所有**:在多层汇总的情况下,可以从下级物化视图向上级物化视图进行汇总。 - **数据子集**:如果...
例如,为了提高性能,可以启用物化视图的并行刷新,或者使用物化视图日志来追踪基表的更改,以便进行精确的增量刷新。同时,需要注意物化视图与基表之间的依赖关系,以及物化视图在数据库中的空间占用。 总之,...
物化视图的快速刷新 物化视图是 Oracle 中的一种性能优化技术,它可以将复杂的查询结果存储在一个物化视图中,以便快速地检索数据。物化视图有三种刷新方式:COMPLETE、FAST 和 FORCE。 COMPLETE 刷新方式会删除表...
物化视图与普通视图是数据库中两种不同的视图类型,它们在功能和使用上有显著的区别。普通视图,也称为虚拟视图,是一种逻辑上的表,它并不实际存储数据,而是根据定义的SQL查询在运行时动态生成结果。这意味着每次...
2. **Rowid物化视图**:Rowid物化视图使用行标识符(rowid)来定位数据行,适用于数据频繁更新的场景。与主键物化视图相比,其更新效率较高但空间占用可能更大。 ```sql CREATE MATERIALIZED VIEW mv_emp_rowid ...
在使用物化视图时,还需要注意一些问题。首先,物化视图会占用额外的存储空间,因此需要考虑数据库的整体容量规划。其次,物化视图的维护可能会增加数据库的复杂性,特别是当有多个物化视图或复杂的更新逻辑时。最后...
Oracle 物化视图 Oracle 物化视图是数据库对象,存储远程表的数据副本,也可以称为快照。物化视图可以查询表、视图和其他物化视图。通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 创建...
### Oracle如何根据物化视图日志快速刷新物化视图 #### 一、物化视图及其日志介绍 在Oracle数据库中,物化视图(Materialized View)是一种特殊的对象,它存储了预计算查询的结果,从而可以提高查询性能。物化视图...
真正值得一看的mysql知识。MySQL中实现物化视图(中文版)翻译于外文。
orace表分区及物化视图 进一步了解oracle表分区技术及物化视图技术应用
- **创建物化视图**:使用CREATE MATERIALIZED VIEW语句创建物化视图。 - **刷新物化视图**:定期或按需刷新物化视图以保持数据的最新状态。 - **查询物化视图**:通过简单的SELECT语句直接查询物化视图。 - **维护...
下面通过具体的步骤来展示如何创建和使用物化视图。 ##### 示例1:创建ONDEMAND物化视图 1. **创建表**: ```sql CREATE TABLE test1 (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30)); ``` 这里创建了一个名为`...
物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建物化视图创建
### ORACLE使用物化视图和查询重写功能 #### 一、概述 在Oracle数据库中,物化视图和查询重写功能是提高查询效率和简化数据仓库管理的重要工具。物化视图是一种预计算的数据集合,它可以存储查询的结果集,而查询...
6. **使用其他方法创建物化视图**: - 如果无法解决ROWID的问题,可以考虑创建不包含ROWID的物化视图。 - 或者采用其他优化策略来提高查询性能。 #### 实际操作示例 假设我们尝试创建如下的物化视图: ```sql ...