[20130208]物化视图建立以及删除的问题.txt

[20130208]物化视图建立以及删除的问题.txt

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

SQL> create materialized view v_dept as select * from dept ;
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
OBJECT_NAME          OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         STATUS
-------------------- --------- -------------- ------------------- -------
V_DEPT                  269229         269229 TABLE               VALID
V_DEPT                  269231                MATERIALIZED VIEW   VALID

--如果删除物化视图,对应的表也一起删除。

SQL> drop MATERIALIZED view v_dept ;
Materialized view dropped.
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
no rows selected

--如果要保证在删除物化视图时,表V_DEPT不删除,一般是建立物化视图时使用如下参数:

SQL> create table v_dept as select * from dept where rownum
SQL> create materialized view v_dept ON PREBUILT TABLE as select * from dept ;
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
OBJECT_NAME          OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         STATUS
-------------------- --------- -------------- ------------------- -------
V_DEPT                  269232         269232 TABLE               VALID
V_DEPT                  269234                MATERIALIZED VIEW   VALID
SQL> drop MATERIALIZED view v_dept ;
Materialized view dropped.
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
OBJECT_NAME          OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         STATUS
-------------------- --------- -------------- ------------------- -------
V_DEPT                  269232         269232 TABLE               VALID

--今天看了手册,实际上删除物化视图时可以加入preserve table参数,这样可以保留相应的表。

测试如下:

SQL> drop table v_dept purge ;
Table dropped.
SQL> create materialized view v_dept as select * from dept ;
Materialized view created.
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
OBJECT_NAME          OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         STATUS
-------------------- --------- -------------- ------------------- -------
V_DEPT                  269235         269235 TABLE               VALID
V_DEPT                  269237                MATERIALIZED VIEW   VALID

SQL> drop MATERIALIZED view v_dept preserve table;
Materialized view dropped.
SQL> SELECT object_name, object_id, data_object_id, object_type, status  FROM dba_objects WHERE wner = USER AND object_name = 'V_DEPT';
OBJECT_NAME          OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         STATUS
-------------------- --------- -------------- ------------------- -------
V_DEPT                  269235         269235 TABLE               VALID

--可以发现表v_dept依旧存在。
--这样也帮别人解决一个物化视图的问题。

时间: 2024-11-05 23:23:07

[20130208]物化视图建立以及删除的问题.txt的相关文章

Oracle物化视图详解

一. 理论部分 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果.物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能:物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性

物化视图刷新失败导致日志表异常增大

整理自:http://blog.itpub.net/231499/viewspace-63714/ 今天在检查时,发现某个物化视图日志占用的空间超过150M,再检查看,该物化视图日志表的记录数有150W,由于其对应的物化视图没有会刷新一次,结合业务量分析可知:物化视图日志不能正常清除. 下面的解决步骤 --在源库查询物化视图对应日志条目个数SQL> select count(1) from MLOG$_ITEM_TAG; COUNT(1)----------532515 --在物化视图端刷新物化

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

[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

oracle 物化视图详解

原文转自:http://www.itpub.net/thread-1308625-1-1.html 物化视图(Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图.其实无论是快照还是物化视图,都能体现出这个对象的特点.物化视图中的数据来自于基表某个时刻(物化视图的创建时刻,或刷新时刻),因此可以认为是基表都个时刻的快照. 物化视图和视图类似,反应的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图.

物化视图学习笔记

物化视图 删除表后物化视图日志自动删除 SQL> CREATE MATERIALIZED VIEW LOG ON TT WITH ROWID,SEQUENCE(OBJECT_ID,OBJECT_NAME) INCLUDING NEW VALUES; Materialized view log created. SQL> EXEC DBMS_SNAPSHOT.REFRESH('MV1'); BEGIN DBMS_SNAPSHOT.REFRESH('MV1'); END; * ERROR at l

plsql-求教:ORACLE物化视图无法删除

问题描述 求教:ORACLE物化视图无法删除 有一个物化视图,从3月份开始就不刷新了,想重新删除后再建,但是却怎么也删不掉 用DROP 语句一直在执行中,直接在PLSQL中删掉则PLSQL会奔溃... 以下是建视图语句: create materialized view P_EMP_INFO_VIEW refresh fast on demand with rowid start with sysdate next sysdate+1/288 as select USER_ID,USERNAME

【物化视图】几种物化视图日志分析

物化视图日志在建立时有多种选项:ROWID.PRIMARY KEY和OBJECT ID三种类型,同时还可以指定SEQUENCE或明确指定列名. 上面这些情况产生的物化视图日志的结构都不相同. 所有物化视图都会包括的列: SNAPTIME$$:用于表示刷新时间. DMLTYPE$$:用于表示DML操作类型,I表示INSERT,D表示DELETE,U表示UPDATE. OLD_NEW$$:用于表示这个值是新值还是旧值.N(EW)表示新值,O(LD)表示旧值,U表示UPDATE操作. CHANGE_V

oracle基于COMMIT SCN的物化视图日志快速刷新的方法

11.2中物化视图日志可以指定COMMIT SCN,这时物化视图刷新就不需要时间戳了,这篇简单描述Oracle是如何实现通过COMMIT SCN来进行刷新的. 建立一个测试环境: SQL> SELECT * FROM V$VERSION; BANNER -------------------------------------------------------------------------------- Oracle Database11gEnterprise Edition Relea

创建增量同步Oracle物化视图问题

我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某个表的数据同步到另一个数据库B上. 我们常用的最简单的实现步骤是这样.首先在数据库A上确认该表有主键,然后建立在这个表上建立 物化视图日志如"CREATE MATERIALIZED VIEW LOG ON T_tablename;",再到数据库B上创建 数据库链接和快速刷新的物化视图如"create materialized view mv_tablename refresh fast on demand star