物化视图操作示例
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;
分享到:
相关推荐
创建物化视图的基本步骤可以通过以下示例说明。首先,我们创建一个名为T的表,并插入一些数据。然后,创建一个物化视图MVT,它基于表T。此时,物化视图中还没有任何数据。接着,我们执行DBMS_MVIEW.REFRESH过程来...
1. **插入数据**:当向表`t`中插入数据时,Oracle会在物化视图日志中记录这些插入操作的时间戳,并根据这些时间戳来确定哪些记录适用于各物化视图的刷新。 2. **更新数据**:例如,更新`id`为3的记录的`name`字段...
#### 三、物化视图的创建示例及解释 下面通过具体的步骤来展示如何创建和使用物化视图。 ##### 示例1:创建ONDEMAND物化视图 1. **创建表**: ```sql CREATE TABLE test1 (ID NUMBER PRIMARY KEY, NAME VARCHAR...
#### 实际操作示例 假设我们尝试创建如下的物化视图: ```sql CREATE MATERIALIZED VIEW WH_VIEW_LOG REFRESH FORCE ON DEMAND WITH ROWID AS SELECT * FROM WH_TABLE; ``` 如果WH_TABLE表没有合适的唯一标识符或...
在本教程中,我们将通过一个具体的案例——SALESHISTORY (SH) 示例模式,来了解如何实施物化视图和查询重写功能。该场景涉及到一系列的步骤,包括模式的修改、物化视图的创建与维护以及查询重写的启用等。 #### 四...
### ORACLE 物化视图详解 #### 一、物化视图概述 在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表...
`命令将作业队列进程的数量设置为20,这有助于提高物化视图刷新操作的效率。 2. **创建基础表**:首先,需要创建一个基础表,该表将作为物化视图的数据来源。在示例中,创建了一个名为`stu`的表,包含`id`和`name`...
以下是一个基本的物化视图创建示例: ```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实现生产库的逻辑实时备份 #### 一、概述 本文主要探讨了如何利用Oracle数据库中的物化视图技术和逻辑备份工具`exp`来实现生产库个别表的实时数据刷新与备份。这种方法不仅能够确保数据的...
总的来说,Oracle数据库中的物化视图是优化查询性能的关键工具,尤其是对于大数据量的分析操作。它们结合了快速刷新和查询重写等功能,同时通过`DBMS_ADVISOR`提供了自动化调整和优化的途径。理解物化视图的工作原理...
创建物化视图的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数据库中,分区技术是一项重要的优化手段,主要用于处理大型表以提高查询性能和管理效率。分区表根据数据分布的不同特性分为几种...
在数据库管理与优化中,临时表和物化视图是两个重要的概念,它们都用于提高数据库查询的效率,但实现方式和应用场景有所不同。本文将详细探讨这两种技术的区别、使用场景及代码示例。 临时表和物化视图都是提高...
oracle数据库支持物化视图–不是基于基表的虚表,而是根据表实际存在的实表,即物化视图的数据存储在非易失的存储设备上。 下面实验创建ON COMMIT 的FAST刷新模式,在mysql中用触发器实现insert , update , delete ...
数据字典视图说明: 数据字典视图一般有三套:以存表的视图为例 dba_tables[DBA所有的], all_tables[所有用户所有的], user_tables[当前用户所有的] 对于DBA所有的,只有拥有DBA权限的...下面的示例都已all系列为代表
这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...
Scuttlebot的物化视图插件它运行用户定义的脚本(称为“视图”)来处理SSB日志并生成数据集。 输出数据集已存储并建立索引,因此其他程序(或脚本)可以读取它们。 注意:解决了levi dep的问题时,当前禁用了搜索...
本文将重点介绍Oracle中的九大性能视图及其应用场景,并结合具体的示例来帮助读者更好地理解这些视图的作用。 #### 1. V$LOCK - 锁信息视图 `V$LOCK`视图提供了关于数据库锁的信息,包括锁的状态、类型等,对于...
#### 四、Oracle 物化视图日志的具体操作案例 以下是一些具体的物化视图日志创建示例: 1. **创建物化视图日志**: ```sql CREATE MATERIALIZED VIEW LOG ON param_city WITH PRIMARY KEY, INCLUDING NEW ...