- 浏览: 7339774 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
使用物化视图
授权物化视图权限.
grant create any masterialized view to scott;
创建物化视图
create materialized view mv
as select * from scott.emp;
物化视图的中的rowid和对应的表中的rowid不一致.
视图中的rowid和对应表中的rowid一致.
物化视图刷新类型:
全部(C)
exec dbms_mview.refresh('MV','C');
增量(F)
其实针对mv的信息至少一个update操作.
强制(?)
Never:
物化视图更新模式
手动
dbms_mview.refresh('MV',parallelism=>10);
多个
dbms_mview.refresh('MV1,MV2',parallelism=>10);
或者
dbms_mview.refresh_dependent('EMP');
备注:emp为mv的基表.
刷新所有的视图:
dbms_mview.refresh_all_mviews;
自动(同步或者异步)
通过oracle job实现自动刷新.
物化视图
在数据仓库系统中的使用.不同数据库中表的同步.
高级数据复制中使用.
查看PL中PL/SQL中package type和views;
实例如下:
使用实例证明实体化视图和视图的区别
scott@TICKET> show user;
USER 为 "SCOTT"
scott@TICKET> create table t( key int primary key, val varchar(25));
create table t( key int primary key, val varchar(25))
*
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用
表已删除。 表已创建。 已创建 1 行。 scott@TICKET> insert into t values(2,'b'); 已创建 1 行。 scott@TICKET> insert into t values(3,'c'); 已创建 1 行。 scott@TICKET> commit; 提交完成。 scott@TICKET> select * from t; KEY VAL GLOBAL_NAME 授权成功。 sys@TICKET> conn scott/tiger GLOBAL_NAME scott@TICKET> create view v as select * from t; 视图已创建。 scott@TICKET> select * from v; KEY VAL scott@TICKET> select rowid,a.* from t a; ROWID KEY VAL scott@TICKET> select rowid,a.* from v a; ROWID KEY VAL scott@TICKET> create materialized view mv as 实体化视图已创建。 scott@TICKET> select rowid,a.* from mv a; ROWID KEY VAL 由上面: 已更新 1 行。 scott@TICKET> commit; 提交完成。 scott@TICKET> select * from t; KEY VAL scott@TICKET> select * from v; KEY VAL scott@TICKET> select * from mv; KEY VAL scott@TICKET> host scott@TICKET> conn /as sysdba GLOBAL_NAME sys@TICKET> conn scott/tiger GLOBAL_NAME PL/SQL 过程已成功完成。 scott@TICKET> select * from mv; KEY VAL scott@TICKET> update t set val='aa' where key=2; 已更新 1 行。 scott@TICKET> select * from t; KEY VAL scott@TICKET> select * from v; KEY VAL scott@TICKET> select * from mv; KEY VAL 实体化视图日志已创建。 scott@TICKET> create materialized view mv_t refresh fast as select * from t; 实体化视图已创建。 scott@TICKET> create materialized view mv_t2 refresh fast as select t.* from t; 实体化视图已创建。 由以上可以看出创建物化视图时候指定为快速更新视图必须先创建实体化视图日志,在创建实体化视图. 已更新 1 行。 scott@TICKET> commit; 提交完成。 scott@TICKET> select * from t; KEY VAL scott@TICKET> select * from v; KEY VAL scott@TICKET> select * from mv; KEY VAL scott@TICKET> select * from mv_t; KEY VAL scott@TICKET> select * from mv_t2; KEY VAL 执行实体物化视图全部刷新 执行实体物化视图快速刷新 PL/SQL 过程已成功完成。 scott@TICKET> col object_name for a30; OBJECT_NAME OBJECT_TYPE 已选择29行。 scott@TICKET> desc mlog$_t; scott@TICKET> update t set val='aaab' where key=1; 已更新 1 行。 scott@TICKET> select count(1) from mlog$_t; COUNT(1) scott@TICKET> commit; 提交完成。 scott@TICKET> select count(1) from mlog$_t; COUNT(1) scott@TICKET> select rowid,a.* from mv a; ROWID KEY VAL scott@TICKET> spool off;
scott@TICKET> drop table t;
创建基础表
scott@TICKET> create table t( key int primary key, val varchar(25));
插入基础数据
scott@TICKET> insert into t values(1,'a');
---------- -------------------------
1 a
2 b
3 c
创建视图和物化视图
scott@TICKET> create view v as select * from t;
create view v as select * from t
*
第 1 行出现错误:
ORA-01031: 权限不足
scott@TICKET> conn / as sysdba
已连接。
--------------------------------------------------------------------------------
sys@TICKET
给scott创建视图和物化视图的授权
sys@TICKET> grant create any view ,create any materialized view to scott;
已连接。
--------------------------------------------------------------------------------
scott@TICKET
---------- -------------------------
1 a
2 b
3 c
------------------ ---------- -------------------------
AAASzoAAEAAABHlAAA 1 a
AAASzoAAEAAABHlAAB 2 b
AAASzoAAEAAABHlAAC 3 c
------------------ ---------- -------------------------
AAASzoAAEAAABHlAAA 1 a
AAASzoAAEAAABHlAAB 2 b
AAASzoAAEAAABHlAAC 3 c
2 select * from t;
------------------ ---------- -------------------------
AAASzrAAEAAABH0AAA 1 a
AAASzrAAEAAABH0AAB 2 b
AAASzrAAEAAABH0AAC 3 c
查询t,v,mv的信息可以看出mv的rowid和其他的不一样.
scott@TICKET> update t set val='aa' where key=1;
---------- -------------------------
1 aa
2 b
3 c
---------- -------------------------
1 aa
2 b
3 c
---------- -------------------------
1 a
2 b
3 c
由上面可以查看当基表t变化,t和v的查询结果相应的发生变化.但是mv的数据不变化.
已连接。
--------------------------------------------------------------------------------
sys@TICKET
已连接。
--------------------------------------------------------------------------------
scott@TICKET
刷新物化视图的信息
scott@TICKET> exec dbms_mview.refresh('MV');
---------- -------------------------
1 aa
2 b
3 c
---------- -------------------------
1 aa
2 aa
3 c
---------- -------------------------
1 aa
2 aa
3 c
由上面可以看出mv刷新之后,mv,t,v的数据一致.
---------- -------------------------
1 aa
2 b
3 c
在创建物化视图的时候指定为快速更新视图
scott@TICKET> create materialized view mv_t refresh fast as select * from t;
create materialized view mv_t refresh fast as select * from t
*
第 1 行出现错误:
ORA-23413: 表 "SCOTT"."T" 不带实体化视图日志
scott@TICKET> create materialized view log on t;
scott@TICKET> update t set val='abc' where key=3;
---------- -------------------------
1 aa
2 aa
3 abc
---------- -------------------------
1 aa
2 aa
3 abc
---------- -------------------------
1 aa
2 b
3 c
---------- -------------------------
1 aa
2 aa
3 c
---------- -------------------------
1 aa
2 aa
3 c
scott@TICKET> exec dbms_mview.refresh('MV','C');
PL/SQL 过程已成功完成。
scott@TICKET> exec dbms_mview.refresh('MV','F');
PL/SQL 过程已成功完成。
执行实体物化视图强制刷新
scott@TICKET> exec dbms_mview.refresh('MV','?');
查看物化视图的表信息
scott@TICKET> desc user_objects;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OBJECT_NAME VARCHAR2(128)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
scott@TICKET> col object_type for a20;
scott@TICKET> select object_name,object_type from user_objects;
------------------------------ --------------------
BONUS TABLE
SALGRADE TABLE
EMP_ENAME_IDX INDEX
EMP_JOB_IDX INDEX
SUPPLIER TABLE
EMP_TEMP TABLE
MLOG$_EMP TABLE
RUPD$_EMP TABLE
TEST TABLE
SALES_DELTA TABLE
DEPT TABLE
EMP TABLE
PK_EMP INDEX
PK_DEPT INDEX
TBS TABLE
SYS_C0015204 INDEX
T TABLE
V VIEW
MV TABLE
SYS_C0015205 INDEX
MV MATERIALIZED VIEW
MLOG$_T TABLE
RUPD$_T TABLE
MV_T TABLE
SYS_C0015206 INDEX
MV_T MATERIALIZED VIEW
MV_T2 TABLE
SYS_C0015207 INDEX
MV_T2 MATERIALIZED VIEW
由以上信息可以看出
1.在对象信息(MV_T,MV_T2,MV)可以看出物化视图均对应一个同名称的表.
由此可以解释为当t表更新时候,mv不更新的原因,mv实际是把基表对应的查询结果放在一个表中,查询mv
查询结果集的信息.每
2.每一个实体化视图日志对应的对应的表如t创建实体化视图日志,对应的表为mlog$_t.
命名规则为:mlog$_<TBS_NAME>
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
KEY NUMBER(38)
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
----------
2
----------
2
------------------ ---------- -------------------------
AAASzrAAEAAABH0AAA 1 aa
AAASzrAAEAAABH0AAB 2 aa
AAASzrAAEAAABH0AAC 3 abc
参考官方网站:http://download.oracle.com/docs/cd/B10501_01/server.920/a96568/rarmviea.htm
发表评论
-
Oracle11G RMAN备份和恢复笔记(五)
2011-09-17 21:46 3042我们RMAN可以 ... -
Oracle11G RMAN备份和恢复笔记(四)
2011-09-17 21:40 2350常用的RMAN命令: report schema; list ... -
Oracle11G RMAN备份和恢复笔记(三)
2011-09-17 21:39 3002RMAN在各种情况下的恢复过程简述: RMAN恢复 口令 ... -
Oracle11G RMAN备份和恢复笔记(二)
2011-09-17 21:36 3849非catalog各种备份方式: 全库备份 backup d ... -
Oracle11G RMAN备份和恢复笔记(一)
2011-09-17 21:36 8470Oracle11G RMAN备份和恢复 RMAN可连接的数据 ... -
Oracle 性能调优学习笔记(十八)--- 操作系统调优
2011-09-16 10:33 2140操作系统调优 不同系统的架构 单处理器系统 ... -
Oracle 性能调优学习笔记(十七)--- 监控和探测锁机制
2011-09-16 10:31 2247监控和探测锁机制 Oracle锁机制特 ... -
Oracle 性能调优学习笔记(十五)-- 应用调优
2011-09-16 10:28 2182表迁移(非分区表) 1.权限和约束将被保持. ... -
Oracle 性能调优学习笔记(十四)-- 有效使用Oracle 存储结构
2011-09-16 10:27 2013有效使用Oracle 存储结构 表的种类: hea ... -
Oracle 性能调优学习笔记(十三)-- 有效的使用数据块
2011-09-16 10:24 2071有效的使用数据块 避免动态extent的缺点 ... -
Oracle 性能调优学习笔记(十二)-- 统计管理B
2011-09-16 10:22 2337Histograms:描述列的分布信息. ... -
Oracle 性能调优学习笔记(十二)-- 统计管理A
2011-09-16 10:22 1972统计管理 优化器统 ... -
Oracle 性能调优学习笔记(十一)-- SQL 语句优化
2011-09-16 10:20 2691SQL 语句优化 判断SQL占用资源的方法 1.OEM ... -
Oracle 性能调优学习笔记(十)-- 使用资源管理包
2011-09-16 10:19 1939使用资源管理器 使用资源管理器: 1 ... -
Oracle 性能调优学习笔记(九)-- 优化排序操作B
2011-09-16 10:17 2027监控SQL使用的内存 s ... -
Oracle 性能调优学习笔记(九)-- 优化排序操作A
2011-09-16 10:16 2065优化排序操作 SQL内存使用: 排序操作:sort, ... -
Oracle 性能调优学习笔记(八)-- Oracle 共享服务器的性能调优
2011-09-16 10:13 2400Oracle 共享服务器的性能调优 Shared Se ... -
Oracle 性能调优学习笔记(七)-- 其他SGA结构的调整
2011-09-16 10:12 1673监控redolog buffer ... -
Oracle 性能调优学习笔记(六)-- 态实例调整
2011-09-16 10:10 1626Oracle9i:动态SGA调整 SGA中各种配置可以通过 ... -
Oracle 性能调优学习笔记(五)-- buffer Cache调优C
2011-09-16 10:09 1885Oracle Wait Interface检查瓶颈原因 ...
相关推荐
在本篇循序渐进的学习笔记中,我们将深入探讨物化视图的概念、用途、刷新机制及其相关问题。 首先,我们需要了解几个关键术语。基表是创建物化视图时引用的原始数据表或视图,而物化视图(MView)则是基于这些基表...
Oracle性能调优是数据库管理员和开发人员在处理Oracle数据库系统时必须掌握的关键技能。这个主题涵盖了广泛的知识点,包括查询优化、内存管理、磁盘I/O优化、并发控制以及资源调度等多个方面。以下是对这些核心概念...
- **物化视图与重写**:物化视图可以预先计算并存储结果,重写机制能自动用物化视图替换部分查询。 6. **实际运行结果分析**:`6-5例子在10g_express版本运行的实际结果.txt`可能包含了一个具体的查询案例,展示了...
这篇"ORACLE学习笔记(一)---体系结构"将带你深入理解Oracle数据库的基础架构,这对于任何想要掌握Oracle数据库操作和管理的人来说都是至关重要的。 首先,我们要了解Oracle数据库的三大核心组件:数据存储、进程...
5. **性能调优**:理解Oracle的执行计划,学习如何使用SQL优化工具进行性能问题排查。 6. **故障诊断与恢复**:学习如何处理数据库故障,使用RMAN进行备份和恢复,以及使用闪回技术。 7. **高级特性**:如RAC、ASM...
高级特性如实时应用集群(RAC)、数据分区、物质化视图、物化查询表等也是Oracle11g的重要组成部分,它们在大型企业级应用中发挥着重要作用,能够提高系统的可用性和性能。 总之,《成功之路Oracle11g学习笔记》是...
"玩转Oracle学习笔记(二)-Oracle表的管理"这一主题深入探讨了如何有效地创建、维护和管理Oracle数据库中的表。Oracle提供了丰富的语法和功能来满足不同业务场景的需求。 首先,创建表是数据库设计的基础步骤。在...
了解这些基础知识后,可以逐步深入学习SQL、PL/SQL编程,数据库性能调优,备份与恢复策略,以及Oracle的高级特性如物化视图、分区表、索引等。通过不断实践和学习,逐步构建起对Oracle全面的认知,为成为专业人士...
使用 Explain Plan分析SQL执行计划,通过索引优化、表分区、物化视图和SQL调优来提升数据库性能。还有性能监控工具如AWR和ASH,帮助识别和解决问题。 9. **数据库设计** 正确的数据建模和规范化理论是设计高效...
12. 性能优化:通过SQL调优、索引优化、物化视图、分区、内存管理等手段,可以优化数据库性能。Oracle的Explain Plan和Automatic Workload Repository (AWR)报告是常用的性能分析工具。 13. 安全性:Oracle提供用户...
以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的规模、性能需求、安全性要求以及可用资源。Oracle数据库因其稳定性、可扩展性和高性能而被...
- SQL优化:理解执行计划,如何使用EXPLAIN PLAN分析SQL性能,并使用索引、物化视图等优化手段。 - 分区技术:学习Oracle分区表和索引的原理和应用场景,以及如何通过分区来提升查询速度和管理效率。 - 会话管理...
《涂抹Oracle--三思笔记》是一份专注于Oracle数据库技术的学习资料,主要涵盖了Oracle数据库系统的基础知识、高级特性和常见问题的解决策略。这份文档可能是由一位经验丰富的IT专家撰写,旨在帮助读者深入理解和掌握...
在“MSDN Oracle学习笔记”中,我们可以期待找到关于Oracle数据库的详细讲解和实践指导。 首先,Oracle数据库的基础知识是必不可少的。这通常涵盖数据库系统的基本概念,如SQL(结构化查询语言)的使用,数据类型,...
在本实验笔记中,主要探讨了物化视图(Materialized Views)这一重要的数据库特性,它是数据仓库和OLAP(在线分析处理)系统中的关键组件,用于提高查询性能和数据一致性。 物化视图是一种预先计算并存储的查询结果...
本学习笔记旨在提供全面、深入的Oracle知识体系,帮助读者从基础到高级掌握Oracle数据库的使用。 首先,Oracle数据库的核心概念包括数据模型、数据库架构和SQL语言。数据模型是数据库设计的基础,主要包括实体、...
这份“Oracle学习笔记”无疑是你深入理解和掌握Oracle技术的重要资源。笔记涵盖了Oracle的语法基础、核心概念以及各种实用功能,旨在帮助初学者快速上手,同时也能为有一定经验的DBA提供参考。 首先,Oracle数据库...
这些只是Oracle SQL学习的基础部分,随着深入,还会涉及到更高级的主题,如分区表、物化视图、物化查询表、递归查询、并行查询、性能优化等。对于想要在Oracle数据库领域提升技能的初学者来说,这份“Oracle经典学习...
Oracle是世界上最广泛使用的数据库管理系统之一...以上就是根据给定文件名推测的Oracle学习笔记资料可能涵盖的主要知识点。通过深入学习和实践,可以掌握Oracle数据库的使用和管理,从而在IT领域中提升自己的专业能力。
- 物化视图是一种预先计算好的视图,可以提高查询性能。 **23. 通过游标更新数据** - 游标提供了迭代处理数据集的能力,适用于复杂的更新操作。 **24. 游标变量** - 游标变量可以用来存储游标的引用,方便后续的...