`
gaoke
  • 浏览: 87494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

物化视图操作示例

    博客分类:
  • DB
 
阅读更多
物化视图操作示例


1.     创建物化视图需要的权限:


[sql] view plaincopyprint?
01.GRANT CREATE MATERIALIZED VIEW TO USER_NAME; 
GRANT CREATE MATERIALIZED VIEW TO USER_NAME;



2.  在源表建立物化视图日志 


[sql] view plaincopyprint?
01.CREATE MATERIALIZED VIEW LOG ON DAVE 
02.TABLESPACE&BISONCU_SPACE           -- 日志空间  
03.WITH PRIMARY KEY;                   -- 指定为主键类型 
CREATE MATERIALIZED VIEW LOG ON DAVE
TABLESPACE&BISONCU_SPACE           -- 日志空间
WITH PRIMARY KEY;                   -- 指定为主键类型


3.  授权给中间用户 


[sql] view plaincopyprint?
01.GRANT SELECT ON DAVE TO ANQING; 
02.GRANT SELECT ON MLOG$_DAVE TO ANQING; 
GRANT SELECT ON DAVE TO ANQING;
GRANT SELECT ON MLOG$_DAVE TO ANQING;



4.  在目标数据库上创建MATERIALIZED VIEW 




[sql] view plaincopyprint?
01.CREATE MATERIALIZED VIEW AICS_DAVE 
02.TABLESPACE&BISONCS_SPACE 
03.REFRESH FAST 
04.   ON DEMAND 
05.   --第一次刷新时间  
06.   --START WITH to_date('2012-01-01 20:00:00', 'yyyy-mm-dd hh24:mi:ss')  
07.   START WITH SYSDATE 
08.   --刷新时间间隔。每1天刷新一次,时间为凌晨2点  
09.   --NEXT TRUNC(SYSDATE,'dd')+1+2/24  
10.   NEXT SYSDATE+1/24/20 
11.WITH PRIMARY KEY 
12.--USING DEFAULT LOCAL ROLLBACKSEGMENT  
13.DISABLE QUERY REWRITE AS 
14.SELECT MODEL_ID, STATUS,MODEL_NAME, MANU_ID, DESCRIPTION, CREATE_TIME, UPDATE_TIME, SW_VERSION 
15.FROM AICS_DAVE@LINK_DAVE; 
CREATE MATERIALIZED VIEW AICS_DAVE
TABLESPACE&BISONCS_SPACE
REFRESH FAST
   ON DEMAND
   --第一次刷新时间
   --START WITH to_date('2012-01-01 20:00:00', 'yyyy-mm-dd hh24:mi:ss')
   START WITH SYSDATE
   --刷新时间间隔。每1天刷新一次,时间为凌晨2点
   --NEXT TRUNC(SYSDATE,'dd')+1+2/24
   NEXT SYSDATE+1/24/20
WITH PRIMARY KEY
--USING DEFAULT LOCAL ROLLBACKSEGMENT
DISABLE QUERY REWRITE AS
SELECT MODEL_ID, STATUS,MODEL_NAME, MANU_ID, DESCRIPTION, CREATE_TIME, UPDATE_TIME, SW_VERSION
FROM AICS_DAVE@LINK_DAVE;


5.  在目标物化视图上创建索引




[sql] view plaincopyprint?
01.CREATE INDEX IDX_T_DV_CT 
02.   ON AICS_DEV_INFO (CREATE_TIME, UPDATE_TIME) 
03.   TABLESPACE &BISON_IDX; 
04.  
05.CREATE INDEX IDX_T_DV_UT 
06.   ON AICS_DEV_INFO (UPDATE_TIME) 
07.   TABLESPACE &BISON_IDX; 
08.  
09.CREATE INDEX I_T_DV_MSISDN 
10.   ON AICS_DEV_INFO (MSISDN) 
11.   TABLESPACE &BISON_IDX; 
CREATE INDEX IDX_T_DV_CT
   ON AICS_DEV_INFO (CREATE_TIME, UPDATE_TIME)
   TABLESPACE &BISON_IDX;

CREATE INDEX IDX_T_DV_UT
   ON AICS_DEV_INFO (UPDATE_TIME)
   TABLESPACE &BISON_IDX;

CREATE INDEX I_T_DV_MSISDN
   ON AICS_DEV_INFO (MSISDN)
   TABLESPACE &BISON_IDX;





6. 物化视图刷新说明

(1)使用dbms_mview.refresh 手工刷新

如:


[sql] view plaincopyprint?
01.EXEC DBMS_MVIEW.REFRESH('MV_DAVE'); 
02.  
03.--完全刷新  
04.EXEC DBMS_MVIEW.REFRESH(LIST => 'MV_DAVE',METHOD => 'c'); 
05.EXEC DBMS_MVIEW.REFRESH('MV_DAVE','C'); 
06.  
07.--快速刷新  
08.EXEC DBMS_MVIEW.REFRESH(LIST => 'MV_DAVE',METHOD => 'f'); 
09.EXEC DBMS_MVIEW.REFRESH('MV_DAVE','F'); 
EXEC DBMS_MVIEW.REFRESH('MV_DAVE');

--完全刷新
EXEC DBMS_MVIEW.REFRESH(LIST => 'MV_DAVE',METHOD => 'c');
EXEC DBMS_MVIEW.REFRESH('MV_DAVE','C');

--快速刷新
EXEC DBMS_MVIEW.REFRESH(LIST => 'MV_DAVE',METHOD => 'f');
EXEC DBMS_MVIEW.REFRESH('MV_DAVE','F');





(2)使用dbms_refresh.refresh 过程来批量刷新MV

          如果我们在创建物化视图的过程指定start 和next time的刷新时间,那么Oracle 会自动创建刷新的job,并采用dbms_refresh.refresh 的方式。

            使用这种方式刷新之前需要先make refresh group,然后才可以刷新。



            Refreshmake 的语法可以参考:

http://docs.oracle.com/cd/B19306_01/server.102/b14227/rarrefreshpac.htm#i94057



示例:

            假设存在物化视图MV_T1, MV_T2, MV_T3. 创建refresh group的语法如下:


[sql] view plaincopyprint?
01.SQL> EXEC DBMS_REFRESH.MAKE('REP_TEST', 'MV_T1,MV_T2,MV_T3', SYSDATE, 'SYSDATE+ 1') 
02.  
03.--刷新整个refresh group 组:  
04.SQL> EXEC DBMS_REFRESH.REFRESH('REP_TEST') 
SQL> EXEC DBMS_REFRESH.MAKE('REP_TEST', 'MV_T1,MV_T2,MV_T3', SYSDATE, 'SYSDATE+ 1')

--刷新整个refresh group 组:
SQL> EXEC DBMS_REFRESH.REFRESH('REP_TEST')


7. 删除物化视图及日志


[sql] view plaincopyprint?
01.--删除物化视图日志:  
02.DROP MATERIALIZED VIEW LOG ON DAVE; 
03.--删除物化视图  
04.DROP MATERIALIZED VIEW MV_DAVE; 
--删除物化视图日志:
DROP MATERIALIZED VIEW LOG ON DAVE;
--删除物化视图
DROP MATERIALIZED VIEW MV_DAVE;


8. 查看物化视图刷新状态信息




[sql] view plaincopyprint?
01.SQL> SELECT MVIEW_NAME, LAST_REFRESH_DATE, STALENESS FROMUSER_MVIEWS; 
02.SQL> SELECT NAME, LAST_REFRESH FROM USER_MVIEW_REFRESH_TIMES; 
SQL> SELECT MVIEW_NAME, LAST_REFRESH_DATE, STALENESS FROMUSER_MVIEWS;
SQL> SELECT NAME, LAST_REFRESH FROM USER_MVIEW_REFRESH_TIMES;


9. 查询物化视图日志:




[sql] view plaincopyprint?
01.SELECT * FROM MLOG$_DAVE; 
分享到:
评论

相关推荐

    oracle物化视图_循序渐进学习笔记

    创建物化视图的基本步骤可以通过以下示例说明。首先,我们创建一个名为T的表,并插入一些数据。然后,创建一个物化视图MVT,它基于表T。此时,物化视图中还没有任何数据。接着,我们执行DBMS_MVIEW.REFRESH过程来...

    Oracle怎么根据物化视图日志快速刷新物化视图

    1. **插入数据**:当向表`t`中插入数据时,Oracle会在物化视图日志中记录这些插入操作的时间戳,并根据这些时间戳来确定哪些记录适用于各物化视图的刷新。 2. **更新数据**:例如,更新`id`为3的记录的`name`字段...

    oracle 物化视图详解(内含例子)

    #### 三、物化视图的创建示例及解释 下面通过具体的步骤来展示如何创建和使用物化视图。 ##### 示例1:创建ONDEMAND物化视图 1. **创建表**: ```sql CREATE TABLE test1 (ID NUMBER PRIMARY KEY, NAME VARCHAR...

    创建物化视图ORA-12014错误解决方法

    #### 实际操作示例 假设我们尝试创建如下的物化视图: ```sql CREATE MATERIALIZED VIEW WH_VIEW_LOG REFRESH FORCE ON DEMAND WITH ROWID AS SELECT * FROM WH_TABLE; ``` 如果WH_TABLE表没有合适的唯一标识符或...

    ORACLE使用物化视图和查询重写功能

    在本教程中,我们将通过一个具体的案例——SALESHISTORY (SH) 示例模式,来了解如何实施物化视图和查询重写功能。该场景涉及到一系列的步骤,包括模式的修改、物化视图的创建与维护以及查询重写的启用等。 #### 四...

    ORACLE 物化视图 详解

    ### ORACLE 物化视图详解 #### 一、物化视图概述 在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表...

    一个物化视图的简单例子

    `命令将作业队列进程的数量设置为20,这有助于提高物化视图刷新操作的效率。 2. **创建基础表**:首先,需要创建一个基础表,该表将作为物化视图的数据来源。在示例中,创建了一个名为`stu`的表,包含`id`和`name`...

    oracle物化视图资料

    以下是一个基本的物化视图创建示例: ```sql CREATE MATERIALIZED VIEW xjzhang_mview AS SELECT xjzhang_table1.a, xjzhang_table2.b FROM xjzhang_table1, xjzhang_table2 WHERE xjzhang_table1.b = xjzhang_...

    使用物化视图和exp实现生产库的逻辑实时备份

    ### 使用物化视图和EXP实现生产库的逻辑实时备份 #### 一、概述 本文主要探讨了如何利用Oracle数据库中的物化视图技术和逻辑备份工具`exp`来实现生产库个别表的实时数据刷新与备份。这种方法不仅能够确保数据的...

    Oracle数据库中物化视图的原理剖析.pdf

    总的来说,Oracle数据库中的物化视图是优化查询性能的关键工具,尤其是对于大数据量的分析操作。它们结合了快速刷新和查询重写等功能,同时通过`DBMS_ADVISOR`提供了自动化调整和优化的途径。理解物化视图的工作原理...

    ORACLE物化视图的技术应用.pdf

    创建物化视图的SQL语句示例: ```sql CREATE MATERIALIZED VIEW MV_EMPLOYEE REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM EMPLOYEE; ``` 在这个例子中,`MV_...

    学习分区表,索引,物化视图的使用

    ### 学习分区表、索引、物化视图的使用 #### ORACLE分区表分类及应用场景 在Oracle数据库中,分区技术是一项重要的优化手段,主要用于处理大型表以提高查询性能和管理效率。分区表根据数据分布的不同特性分为几种...

    SQL中的临时表与物化视图:深入解析与应用

    在数据库管理与优化中,临时表和物化视图是两个重要的概念,它们都用于提高数据库查询的效率,但实现方式和应用场景有所不同。本文将详细探讨这两种技术的区别、使用场景及代码示例。 临时表和物化视图都是提高...

    mysql触发器实现oracle物化视图示例代码

    oracle数据库支持物化视图–不是基于基表的虚表,而是根据表实际存在的实表,即物化视图的数据存储在非易失的存储设备上。 下面实验创建ON COMMIT 的FAST刷新模式,在mysql中用触发器实现insert , update , delete ...

    oracle常用数据字典视图.xls

    数据字典视图说明: 数据字典视图一般有三套:以存表的视图为例 dba_tables[DBA所有的], all_tables[所有用户所有的], user_tables[当前用户所有的] 对于DBA所有的,只有拥有DBA权限的...下面的示例都已all系列为代表

    PostgreSQL物化视图(materialized view)过程解析

    这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...

    scuttlebot-views:Scuttlebot的物化视图插件

    Scuttlebot的物化视图插件它运行用户定义的脚本(称为“视图”)来处理SSB日志并生成数据集。 输出数据集已存储并建立索引,因此其他程序(或脚本)可以读取它们。 注意:解决了levi dep的问题时,当前禁用了搜索...

    oracle九大性能视图

    本文将重点介绍Oracle中的九大性能视图及其应用场景,并结合具体的示例来帮助读者更好地理解这些视图的作用。 #### 1. V$LOCK - 锁信息视图 `V$LOCK`视图提供了关于数据库锁的信息,包括锁的状态、类型等,对于...

    oracle数据快照

    #### 四、Oracle 物化视图日志的具体操作案例 以下是一些具体的物化视图日志创建示例: 1. **创建物化视图日志**: ```sql CREATE MATERIALIZED VIEW LOG ON param_city WITH PRIMARY KEY, INCLUDING NEW ...

Global site tag (gtag.js) - Google Analytics