开发者社区> lfreeali> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[20121101]物化视图与表(Materialized Views and Tables).txt

简介: [20121101]物化视图与表(Materialized Views and Tables).txt 1.建立测试环境: SQL> select * from v$version  where rownumBANNER---------------------...
+关注继续查看
[20121101]物化视图与表(Materialized Views and Tables).txt

1.建立测试环境:

SQL> select * from v$version  where rownum
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> grant dba to test identified by xxxxxx;
Grant succeeded.

SQL> create table deptx as select * from scott.dept ;
Table created.

2.测试建立物化视图1:
connect test/xxxxxx;
create materialized view mv_deptx as select count(*) from deptx;

SQL> create materialized view mv_deptx as select count(*) from deptx;
Materialized view created.

SQL> desc mv_deptx
Name      Null?    Type
--------- -------- -------
COUNT(*)           NUMBER
--字段名使用count(*)不好.
SQL> drop materialized  view mv_deptx;
Materialized view dropped.

SQL> create materialized view mv_deptx as select count(*) dept_count from deptx;
Materialized view created.

SQL> select * from user_objects where object_type in ('TABLE','MATERIALIZED VIEW');

OBJECT_NAME          SUBOBJECT_NAME       OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE
-------------------- -------------------- --------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ----------
MV_DEPTX                                     117700                MATERIALIZED VIEW   2012-11-01 17:10:28 2012-11-01 17:10:28 2012-11-01:17:10:28 VALID   N N N         19
DEPTX                                        117696         117696 TABLE               2012-11-01 17:07:07 2012-11-01 17:07:07 2012-11-01:17:07:07 VALID   N N N          1
MV_DEPTX                                     117699         117699 TABLE               2012-11-01 17:10:28 2012-11-01 17:10:28 2012-11-01:17:10:28 VALID   N N N          1

--可以发现建立物化视图的同时,会建立相同名字的表.

SQL> drop materialized  view mv_deptx;
Materialized view dropped.

SQL> select * from user_objects where object_type in ('TABLE','MATERIALIZED VIEW');

OBJECT_NAME          SUBOBJECT_NAME       OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE
-------------------- -------------------- --------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ----------
DEPTX                                        117696         117696 TABLE               2012-11-01 17:07:07 2012-11-01 17:07:07 2012-11-01:17:07:07 VALID   N N N          1

--如果删除物化视图,对应的表也同时删除.

3.测试建立物化视图2:

SQL> create materialized view mv_deptx on prebuilt table as select count(*) dept_count from deptx;
create materialized view mv_deptx on prebuilt table as select count(*) dept_count from deptx
       *
ERROR at line 1:
ORA-12059: prebuilt table "TEST"."MV_DEPTX" does not exist

--如果采用on prebuilt table模式,必须先建立表.

SQL> create table mv_deptx(a number);
Table created.

SQL> create materialized view mv_deptx  as select count(*) dept_count from deptx;
create materialized view mv_deptx  as select count(*) dept_count from deptx
                                                                      *
ERROR at line 1:
ORA-00955: name is already used by an existing object

--如果存在对应的表,建立时必须加入 on prebuilt table 参数.

SQL> create materialized view mv_deptx on prebuilt table as select count(*) dept_count from deptx;
create materialized view mv_deptx on prebuilt table as select count(*) dept_count from deptx
                                                              *
ERROR at line 1:
ORA-12060: shape of prebuilt table does not match definition query

--可以发现字段命令无匹配,无法建立.
SQL> ALTER TABLE TEST.MV_DEPTX  RENAME COLUMN A TO dept_count;
Table altered.

SQL> create materialized view mv_deptx on prebuilt table as select count(*) dept_count from deptx;
Materialized view created.

SQL> select * from user_objects where object_type in ('TABLE','MATERIALIZED VIEW');

OBJECT_NAME          SUBOBJECT_NAME       OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE
-------------------- -------------------- --------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ----------
MV_DEPTX                                     117701         117701 TABLE               2012-11-01 17:18:41 2012-11-01 17:20:32 2012-11-01:17:20:32 VALID   N N N          1
DEPTX                                        117696         117696 TABLE               2012-11-01 17:07:07 2012-11-01 17:07:07 2012-11-01:17:07:07 VALID   N N N          1
MV_DEPTX                                     117702                MATERIALIZED VIEW   2012-11-01 17:20:51 2012-11-01 17:20:51 2012-11-01:17:20:51 VALID   N N N         19

--看看这个时候是否可以删除表?
SQL> drop table mv_deptx;
drop table mv_deptx
           *
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "TEST"."MV_DEPTX"
--可以发现无法删除.

SQL> drop materialized  view mv_deptx;
Materialized view dropped.

SQL> select * from user_objects where object_type in ('TABLE','MATERIALIZED VIEW');

OBJECT_NAME          SUBOBJECT_NAME       OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S  NAMESPACE
-------------------- -------------------- --------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ----------
MV_DEPTX                                     117701         117701 TABLE               2012-11-01 17:18:41 2012-11-01 17:20:32 2012-11-01:17:20:32 VALID   N N N          1
DEPTX                                        117696         117696 TABLE               2012-11-01 17:07:07 2012-11-01 17:07:07 2012-11-01:17:07:07 VALID   N N N          1

--可以发现删除物化视图,表依旧存在.

总结:
第1种方式建立物化视图,建立时同时建立表和视图.删除物化视图,同时消失.
第2种方式建立物化视图(on prebuilt table),建立物化视图前,先要建立表,才能物化视图时. 如果删除物化视图,表保持存在.


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
企业级运维之云原生与Kubernetes实战课程 第三章第5讲 阿里云ACK集群网络
一、 Flannel网络 二、 Terway网络 三、 CoreDNS 四、 最佳实践
32 0
QT5在windows下调用OpenCV库出现: undefined reference to `xxxxx' 错误解决办法(适用MinGW编译器)。
QT5在windows下调用OpenCV库出现: undefined reference to `xxxxx' 错误解决办法(适用MinGW编译器)。
395 0
dwz4j企业级Java Web快速开发框架(Mybatis + SpringMVC) + jUI整合应用
dwz4j企业级Java Web快速开发框架(Mybatis + SpringMVC) + jUI整合应用
39 0
通过Datahub将本地的CSV文件导入Tablestore
前言 Tablestore是一款NoSQL多模型数据库,可提供海量结构化数据存储以及快速的查询和分析服务。如何将数据导入Tablestore,可以通过SDK/API、控制台、命令行工具直接写入、或者使用离线数据迁移工具DataX等。
2832 0
certbot自动在ubuntu16.04的nginx上部署let's encrypt免费ssl证书
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.
1368 0
dwz4j企业级Java Web快速开发框架(Mybatis + SpringMVC) + jUI整合应用
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78511726 1.获取dwz_springmvc 进入DWZ的CSDN代码库下载地址 https://code.csdn.net/dwzteam/dwz_springmvc/tree/master,点击【下载】按钮将dwz_springmvc源码库下载到本地。
1164 0
[20141106]type and table.txt
[20141106]type and table.txt --看看建立type与表. SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ----------...
638 0
与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室
原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 作者:webabcd介绍与众不同 windows phone 7.
814 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
2121
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载