您的位置:首页 > 博客中心 > 数据库 >

PLSQL_Material View物化视图的基本概念和用法(概念)

时间:2022-03-13 22:55

2014-06-08 BaoXinjian

gxlsystem.com,布布扣1. 用法


物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。

物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。

如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。

对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。    

实现两个数据库之间的数据同步,可以存在时间差。

1. 刷新的方式

DBMS_REFRESH

DBMS_

 

gxlsystem.com,布布扣2. 具体应用


    (1).在源数据库建立mview log日志文件

        create materialized view log on w_1 ;

----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图

----创建物化视图语句:

    (2).在统计数据建立materializad view  语法    

Create materialized view MV_TEST

----MVTEST为物化视图名

Build immediate

----创建时生成数据对应的是build deferred

Refresh fast

----增量刷新

On commit

----在基表有更新时提交,这里该句对视图无效

With rowid

----这里创建基于rowid的物化视图,对应的是 primary key

As

Select * from TEST;

----生成物化视图数据语句

    (3).调用时进行刷新

        dbms_refresh.refresh(‘W_1‘)

 

gxlsystem.com,布布扣3. 语法


 1. 基本语法

gxlsystem.com,布布扣

gxlsystem.com,布布扣

gxlsystem.com,布布扣

    

gxlsystem.com,布布扣4. 案例


 

SQL> SELECT * FROM V$VERSION;

 

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

PL/SQL Release 9.2.0.4.0 - Production

CORE    9.2.0.3.0       Production

TNS for Linux: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production

 

SQL> ALTER SESSION SET NLS_DATE_FORMAT = ‘YYYY-MM-DD HH24:MI:SS‘;

 

会话已更改。

 

SQL> CREATE TABLE T1 (ID PRIMARY KEY, NAME) AS SELECT ROWNUM, TNAME FROM TAB;

 

表已创建。

 

SQL> CREATE TABLE T2 (ID PRIMARY KEY, NAME) AS SELECT ROWNUM, TNAME FROM TAB;

 

表已创建。

 

SQL> CREATE TABLE T3 (ID PRIMARY KEY, NAME) AS SELECT ROWNUM, TNAME FROM TAB;

 

表已创建。

 

SQL> CREATE MATERIALIZED VIEW LOG ON T1;

 

实体化视图日志已创建。

 

SQL> CREATE MATERIALIZED VIEW LOG ON T2;

 

实体化视图日志已创建。

 

SQL> CREATE MATERIALIZED VIEW LOG ON T3;

 

实体化视图日志已创建。

 

SQL> CREATE MATERIALIZED VIEW MV_T1 REFRESH FAST AS SELECT * FROM T1;

 

实体化视图已创建。

 

SQL> CREATE MATERIALIZED VIEW MV_T2 REFRESH FAST AS SELECT * FROM T2;

 

实体化视图已创建。

 

SQL> CREATE MATERIALIZED VIEW MV_T3 REFRESH FAST AS SELECT * FROM T3;

 

实体化视图已创建。

 

SQL> EXEC DBMS_REFRESH.MAKE(‘REP_TEST‘, ‘MV_T1,MV_T2,MV_T3‘, SYSDATE, ‘SYSDATE + 1‘)

 

PL/SQL 过程已成功完成。

 

SQL> INSERT INTO T1 VALUES (100, ‘A‘);

 

已创建 1 行。

 

SQL> INSERT INTO T2 VALUES (100, ‘A‘);

 

已创建 1 行。

 

SQL> INSERT INTO T3 VALUES (100, ‘A‘);

 

已创建 1 行。

 

SQL> EXEC DBMS_REFRESH.REFRESH(‘REP_TEST‘)

 

PL/SQL 过程已成功完成。

 

如果对表T2进行了修改:

 

SQL> ALTER TABLE T2 MODIFY NAME VARCHAR2(32);

 

表已更改。

 

SQL> INSERT INTO T1 VALUES (101, ‘B‘);

 

已创建 1 行。

 

SQL> INSERT INTO T2 VALUES (101, LPAD(‘B‘, 32, ‘B‘));

 

已创建 1 行。

 

SQL> INSERT INTO T3 VALUES (101, ‘B‘);

 

已创建 1 行。

 

SQL> COMMIT;

 

提交完成。

 

SQL> SELECT MVIEW_NAME, LAST_REFRESH_DATE, STALENESS FROM USER_MVIEWS;

 

MVIEW_NAME                     LAST_REFRESH_DATE   STALENESS

------------------------------ ------------------- -------------------

MV_T1                          2008-01-23 19:22:43 NEEDS_COMPILE

MV_T2                          2008-01-23 19:22:43 NEEDS_COMPILE

MV_T3                          2008-01-23 19:22:43 NEEDS_COMPILE

 

SQL> EXEC DBMS_REFRESH.REFRESH(‘REP_TEST‘)

BEGIN DBMS_REFRESH.REFRESH(‘REP_TEST‘); END;

 

 

 

Thanks and Regards

gxlsystem.com,布布扣

 

PLSQL_Material View物化视图的基本概念和用法(概念),布布扣,bubuko.com

热门排行

今日推荐

热门手游