- 浏览: 7252984 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 2996我们RMAN可以 ... -
Oracle11G RMAN备份和恢复笔记(四)
2011-09-17 21:40 2304常用的RMAN命令: report schema; list ... -
Oracle11G RMAN备份和恢复笔记(三)
2011-09-17 21:39 2955RMAN在各种情况下的恢复过程简述: RMAN恢复 口令 ... -
Oracle11G RMAN备份和恢复笔记(二)
2011-09-17 21:36 3808非catalog各种备份方式: 全库备份 backup d ... -
Oracle11G RMAN备份和恢复笔记(一)
2011-09-17 21:36 8425Oracle11G RMAN备份和恢复 RMAN可连接的数据 ... -
Oracle 性能调优学习笔记(十八)--- 操作系统调优
2011-09-16 10:33 2102操作系统调优 不同系统的架构 单处理器系统 ... -
Oracle 性能调优学习笔记(十七)--- 监控和探测锁机制
2011-09-16 10:31 2209监控和探测锁机制 Oracle锁机制特 ... -
Oracle 性能调优学习笔记(十五)-- 应用调优
2011-09-16 10:28 2127表迁移(非分区表) 1.权限和约束将被保持. ... -
Oracle 性能调优学习笔记(十四)-- 有效使用Oracle 存储结构
2011-09-16 10:27 1980有效使用Oracle 存储结构 表的种类: hea ... -
Oracle 性能调优学习笔记(十三)-- 有效的使用数据块
2011-09-16 10:24 2045有效的使用数据块 避免动态extent的缺点 ... -
Oracle 性能调优学习笔记(十二)-- 统计管理B
2011-09-16 10:22 2301Histograms:描述列的分布信息. ... -
Oracle 性能调优学习笔记(十二)-- 统计管理A
2011-09-16 10:22 1945统计管理 优化器统 ... -
Oracle 性能调优学习笔记(十一)-- SQL 语句优化
2011-09-16 10:20 2647SQL 语句优化 判断SQL占用资源的方法 1.OEM ... -
Oracle 性能调优学习笔记(十)-- 使用资源管理包
2011-09-16 10:19 1912使用资源管理器 使用资源管理器: 1 ... -
Oracle 性能调优学习笔记(九)-- 优化排序操作B
2011-09-16 10:17 1987监控SQL使用的内存 s ... -
Oracle 性能调优学习笔记(九)-- 优化排序操作A
2011-09-16 10:16 2019优化排序操作 SQL内存使用: 排序操作:sort, ... -
Oracle 性能调优学习笔记(八)-- Oracle 共享服务器的性能调优
2011-09-16 10:13 2368Oracle 共享服务器的性能调优 Shared Se ... -
Oracle 性能调优学习笔记(七)-- 其他SGA结构的调整
2011-09-16 10:12 1631监控redolog buffer ... -
Oracle 性能调优学习笔记(六)-- 态实例调整
2011-09-16 10:10 1601Oracle9i:动态SGA调整 SGA中各种配置可以通过 ... -
Oracle 性能调优学习笔记(五)-- buffer Cache调优C
2011-09-16 10:09 1850Oracle Wait Interface检查瓶颈原因 ...
相关推荐
Oracle性能调优 Oracle性能调优 Oracle性能调优 Oracle性能调优 Oracle性能调优 Oracle性能调优 Oracle性能调优
Oracle数据库性能调优务实课件1-5,可下载学习性能优化。
Oracle DBA性能调优学习笔记
小布oracle性能调优目录小布oracle性能调优目录小布oracle性能调优目录
Oracle 性能调优的基本方案
Oracle性能调优笔记
Oracle 性能调优最佳攻略(OCP版),来看看,大牛如何调优的
数据库性能调优技术--索引调优 作者:杨万富
Oracle性能调优思路Oracle性能调优思路
Oracle性能调优 一、概述, 二、警告,跟踪文件,事件 三、监控工具和动态性能视图 四、优化SQL语句 五、优化共享内存 六、优化数据缓存 七、优化重做日志缓存 八、优化数据库结构和IO 九、有效使用数据块
详细阐述oracle工作原理及调优手段及各种专业名词,不错的文档
ORACLE DBA工作笔记 运维数据迁移与性能调优 清晰版 。。。
Oracle 系统 性能 调优 专家办法
ORACLE参数调优方案ORACLE参数调优方案ORACLE参数调优方案
融通学苑系列讲解的Oracle性能调优,可以作为初步接触Oracle性能调优的培训教程。
Oracle 12c-优化 Hint详解.pdf Oracle 12c-优化 Oracle 索引技术.pdf Oracle 12c 执行计划.pdf ...Oracle 12c 使用绑定变量 VS 不使用绑定变量.pdf Oracle 12c 自动工作负载信息库AWR.pdf Oracle 12c 常用SQL.pdf
oracle性能调优之buffer cache
Oracle 性能调优,针对Oracle开发人员和Oracle DBA的很全面的专用材料。
oracle性能调优总结大全
很多的时侯,做Oracle DBA的我们,当应用管理员向我们通告现在应用很慢、数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为数据库的各种命种率都是满足...