物化视图看成是, 一个定时运行的计算JOB+一个存计算结果的表物化视图 实质上就是表 只不过会定时刷新物化视图是包括一个查询结果的数据库对像,它可以说是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 物化视图可以查询表,视图和其它的物化视图。 通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。 在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。1.主键物化视图: 下面的语法在远程数据库表emp上创建主键物化视图 SQL> CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; Materialized view created. 注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下: SQL> CREATE MATERIALIZED VIEW LOG ON emp; Materialized view log created.2.Rowid物化视图 下面的语法在远程数据库表emp上创建Rowid物化视图 SQL> CREATE MATERIALIZED VIEW mv_emp_rowid REFRESH WITH ROWID AS SELECT * FROM emp@remote_db; Materialized view log created.3.子查询物化视图 下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图 SQL> CREATE MATERIALIZED VIEW mv_empdept AS SELECT * FROM emp@remote_db e WHERE EXISTS (SELECT * FROM dept@remote_db d WHERE e.dept_no = d.dept_no) Materialized view log created. REFRESH 子句 [refresh [fastcompleteforce] [on demand commit] [start with date] [next date] [with {primary keyrowid}]] Refresh选项说明:a. oracle用刷新方法在物化视图中刷新数据.b. 是基于主键还是基于rowid的物化视图c. 物化视图的刷新时间和间隔刷新时间Refresh方法-FAST子句 增量刷新用物化视图日志(参照上面所述)来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志 SQL> CREATE MATERIALIZED VIEW LOG ON emp; Materialized view log created.对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。Refresh方法- COMPLETE子句 完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成 完全刷新即使增量刷新可用。Refresh Method – FORCE 子句 当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项主键和ROWD子句 WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图. 主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。 Rowid物化视图只有一个单一的主表,不能包括下面任何一项:n Distinct 或者聚合函数.n Group by,子查询,连接和SET操作刷新时间 START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间. SQL> CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 3WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; Materialized view created.在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每三天刷新一次.总结物化视图提供了可伸缩的基于主键或ROWID的视图,指定了刷新方法和自动刷新的时间。
温馨提示:内容为网友见解,仅供参考
什么是Oracle的物化视图
物化视图看成是, 一个定时运行的计算JOB+一个存计算结果的表物化视图 实质上就是表 只不过会定时刷新物化视图是包括一个查询结果的数据库对像,它可以说是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 物化视图可以查询表,视图和其它的...
oracle数据库 建立物化视图,提高查询效率
在优化数据库性能时,我曾遇到过查询速度瓶颈。通过将旧视图转换为Oracle的物化视图,显著提升了查询效率。物化视图是Oracle数据库中的一种特殊视图,它存储预先计算好的查询结果,类似于数据表的本地副本,用于快速检索和汇总数据。物化视图的独特性在于它实质上是一个物理表,可以被user_tables查询,具有独...
Oracle物化视图是什么?
Oracle物化视图提供强大功能,预计算并保存耗时较多操作结果,避免查询时重复计算,快速获取结果。物化视图与索引相似,旨在提高查询性能。使用它,应用程序无需等待长时间执行即可获取所需数据。应用透明,增删物化视图不影响SQL语句的正确性和有效性,确保数据库操作流畅无阻。然而,物化视图占用存储空间,需额...
Oracle数据库建物化视图与数据表的区别?
“物化视图”(Materialized views)是一种特殊的存在, 虽然物化视图本质上也是一张表, 这张表是对别的表或查询的数据映射,而且这些映射数据真实存在 , 是在表的数据的基础上又存了一份数据。这样做的目的是为了 针对特殊的查询做优化,例如 经常有查询要对一张大表做分组查询:select col1,count...
oracle普通视图与物化视图的区别
物化视图是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,都实际上转换为视图语句的查询。这样对整体查询性能的提高,并没有实质上的好处。普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储...
ORACLE中 逻辑视图 物化视图 MLOG 都是什么意思?
逻辑视图 存放的是你的SQL文。物化视图 是存放的真实的数据。MLOG 快速刷新的物化视图,基表需要有MLOG表。
Oracle物化视图-看这一篇就可以了
一、物化视图的创建 通过创建`CREATE MATERIALIZED VIEW`语句来建立物化视图。示例如下:CREATE MATERIALIZED VIEW an_user_base_file_no_charge REFRESH COMPLETE START WITH SYSDATE NEXT TRUNC(SYSDATE+29)+5.5\/24 AS SELECT distinct user_no FROM cw_arrearage t WHERE (t.mon = dbms_tianjin.get...
Oracle物化视图失效的几种情况及测试
一、物化视图状态查询:Oracle提供了一个视图用于查询物化视图的状态USER_MVIEWS,其中列STALENESS,用于显示当前物化视图的状态Relationship between the contents of the materialized view and the contents of the materialized view's masters: •FRESH - Materialized view is a read-consistent view ...
Oracle 怎么建立 手动快速刷新的物化视图。和定时刷新的job?
在Oracle世界里,物化视图是一种高效的数据存储和查询方式。要建立手动快速刷新的物化视图,你可以通过两种方式来实现。方法一是利用系统自带的定时任务功能。首先,无需事务码的繁琐,只需通过后台执行程序,选择LP01作为输出设备(如图所示),勾选相关设置,如周期性执行(小时、天、周或自定义),并指定...
oracle不同视图间的区别
对象视图创建之后,同样可以在数据字典中获得其相应信息。利用Oracle内置视图user_views可以获得对象视图相关信息。Oracle中的对象数据实际仍然以关系数据的形式存储。但是,对象的特性,例如继承、封装等,都为开发人员提供了更加灵活的处理形式。同样,可以构造复杂的对象类型来封装复杂的多表查询。物化视图:...