风之语

posts(201) comments(182) trackbacks(1)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • ajax(1)
  • android(1)
  • apache(1)
  • AppFuse(1)
  • BIRT(1)
  • iText(1)
  • JSF(8)
  • kettle(1)
  • linux(5)
  • mac(1)
  • maven(1)
  • MSTR(3)
  • Open XML(1)
  • Oracle(21)
  • RCP
  • Struts(2)
  • Struts2(2)
  • SybaseIQ(6)
  • tapestry
  • tomcat(2)
  • weblogic(1)
  • webservice(1)
  • weka(1)
  • 云计算(1)
  • 收藏(31)
  • 数据仓库(11)
  • 架构设计(3)
  • 生活(2)
  • 集群(1)
  • 项目管理(6)

随笔档案

  • 2012年12月 (4)
  • 2012年11月 (1)
  • 2012年7月 (2)
  • 2011年8月 (1)
  • 2011年7月 (1)
  • 2011年3月 (1)
  • 2010年12月 (2)
  • 2010年11月 (4)
  • 2010年10月 (3)
  • 2010年9月 (5)
  • 2010年8月 (1)
  • 2010年7月 (4)
  • 2010年3月 (1)
  • 2010年2月 (3)
  • 2009年12月 (3)
  • 2009年11月 (4)
  • 2009年9月 (3)
  • 2009年6月 (5)
  • 2009年5月 (3)
  • 2009年4月 (2)
  • 2009年3月 (5)
  • 2009年2月 (4)
  • 2009年1月 (2)
  • 2008年11月 (2)
  • 2008年9月 (1)
  • 2008年7月 (2)
  • 2008年6月 (4)
  • 2008年5月 (6)
  • 2008年4月 (1)
  • 2008年3月 (1)
  • 2007年12月 (2)
  • 2007年11月 (5)
  • 2007年10月 (2)
  • 2007年9月 (3)
  • 2007年8月 (3)
  • 2007年4月 (1)
  • 2007年3月 (2)
  • 2007年2月 (2)
  • 2007年1月 (2)
  • 2006年12月 (3)
  • 2006年8月 (2)
  • 2006年7月 (2)
  • 2006年6月 (2)
  • 2006年4月 (2)
  • 2006年3月 (1)
  • 2006年2月 (3)
  • 2006年1月 (6)
  • 2005年12月 (6)
  • 2005年11月 (4)
  • 2005年10月 (17)
  • 2005年9月 (25)
  • 2005年8月 (16)
  • 2005年7月 (8)

相册

  • 技术图片

收藏夹

  • java

link

My wife

  • My wife's blog

最新随笔

  • 1. apache修改最大连接并用ab网站压力测试
  • 2. Vm虚拟机访问本地硬盘文件
  • 3. NFS文件无法写入的权限问题
  • 4. weblogic设置上传文件访问权限
  • 5. 在android上动态实现ichartjs的3D柱形图
  • 6. 使用Oracle trunc 来指定精确的年月日时分秒
  • 7. Quartz 2.1.5 web应用配置
  • 8. LoginAny 使用笔记
  • 9. MyEclipse 无响应的几种解决办法
  • 10. java.sql.SQLException: No more data to read from socket

搜索

  •  

积分与排名

  • 积分 - 402839
  • 排名 - 139

最新评论

  • 1. re: 使用Oracle trunc 来指定精确的年月日时分秒[未登录]
  • 政治
  • --张三
  • 2. re: 干掉流氓软件vrvrf_c.exe,vrvedp_m.exe[未登录]
  • `
  • --1
  • 3. re: 无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  • 我走到了换DMG映像的时候,然后就没有反应了,这个是什么情况,是不是我的映像文件有问题,还是。。。。
  • --玉竹常青
  • 4. re: LoginAny 使用笔记
  • 怎么没一个人留言,现在来是不是在挖坟啊
  • --ellipse
  • 5. MSTR web应用的部署[未登录]
  • 请问,如何用oracle Application Server服务器部署mstr web应用?
  • --rocky

阅读排行榜

评论排行榜

View Post

ORACLE中的物化视图

      物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。

       物化视图可以查询表,视图和其它的物化视图。

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

       对于复制,物化视图允许你在本地维护远程数据的副本 , 这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。

       对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。

本文我们将会看到怎样创建物化视图并且讨论它的刷新选项。

       在复制环境下,创建的物化视图通常情况下主键, 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 [fast|complete|force]
								
						
				
				
						
								
										
												         [on demand | commit]
								
						
				
				
						
								
										
												         [start with date] [next date]
								
						
				
				
						
								
										
												         [with {primary key|rowid}]]
								
						
				
		

       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 + 2
								
						
				
				
						
								
										
												            WITH PRIMARY KEY 
								
						
				
				
						
								
										
												              AS SELECT * FROM emp@remote_db;
                 Materialized view created.

在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次 .

 

总结

物化视图提供了可伸缩的基于主键或 ROWID 的视图 , 指定了刷新方法和自动刷新的时间。

查询本数据库用户模式下有多少物化视图
select * from user_mviews

查询增量复制是否成功
select* from user_jobs,查看其中的failure列

物化视图立即刷新
exec dbms_snapshot.refresh('"CUSTCARE"."MV_Name"','C');

使用复制还需要注意:
     相应主表的log大小,如log占有的空间太大,会影响性能

posted on 2006-07-09 10:56 风 阅读(1357) 评论(0)  编辑  收藏 所属分类: Oracle 、数据仓库

新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
相关文章:
  • 使用Oracle trunc 来指定精确的年月日时分秒
  • Oracle进程导致CPU 100%的具体解决步骤
  • Redhat Linux AS4(AS5)下oracle10g自启动脚本设置
  • 深刻理解Oracle数据库的启动和关闭
  • oracle查询命中率调优的一个方法(有用呦)
  • Oracle内存参数调优技术详解
  • win7下安装Oracle10g
  • Oracle10g卸载后再次安装,设置的SID相同出现“指定的SID在本机上已经存在。。。解决方法
  • Oracle 10g 可以自动共享内存管理
  • ORA-02095: 无法修改指定的初始化参数
 
 
Powered by:
BlogJava
Copyright © 风