手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Oracle物化视图测试

[日期:2013-11-26] 来源:Linux社区  作者:seward_wang [字体: ]

SQL> select * from mv_test; --可以看见物化视图数据并没有变化

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 wang gongzuo
60 zhuzhzu zhuzhuz

已选择6行。

创建ON COMMIT物化视图

SQL> insert into mv_test(deptno,dname,loc) values (70,'test','test'); --物化视图不能像普通视图表那样插入数据
insert into mv_test(deptno,dname,loc) values (70,'test','test')
*
第 1 行出现错误:
ORA-01732: 此视图的数据操纵操作非法


SQL> create materialized view mv_test1 refresh force on commit as select * from dept1;
create materialized view mv_test1 refresh force on commit as select * from dept1
*
第 1 行出现错误:
ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性 --此错误是由于没有创建物化视图日志


SQL> create materialized view log on dept1 ;
create materialized view log on dept1
*
第 1 行出现错误:
ORA-12014: 表 'DEPT1' 不包含主键约束条件

SQL> alter table dept1 add constraints pk_deptno primary key (deptno);

SQL> create materialized view log on dept1 ;

实体化视图日志已创建。

SQL> create materialized view mv_test1 refresh force on commit as select * from
dept1;


实体化视图已创建。


SQL> select mv.REFRESH_MODE from user_mviews mv where mv.MVIEW_NAME = 'MV_TEST1' --查看刷新模式
;

REFRES
------
COMMIT

测试ON COMMIT物化视图的更新特性


SQL> set timing on;

SQL> insert into dept1(deptno,dname,loc) values (80,'test','test');

已创建 1 行。


已用时间: 00: 00: 00.04
SQL> commit;

提交完成。


已用时间: 00: 00: 00.09
SQL> select * from mv_test1; --可以看到数据已经更新过来了,但是对COMMIT速度会有一些影响,越大的表影响越大。


DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 wang gongzuo
60 zhuzhzu zhuzhuz
70 test test
80 test test


已选择8行。


已用时间: 00: 00: 00.00

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

linux
相关资讯       Oracle物化视图  物化视图 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款