DBMS_MVIEW 包

DBMS_MVIEW 包提供了一个可以一次性刷新多个物化视图的方法。

33.1 相关方法

  1. REFRESH

刷新物化视图。

语法如下:

PROCEDURE REFRESH(
    LST                     	IN  		VARCHAR,
    METHOD                  	IN  		VARCHAR     			DEFAULT NULL,
    ROLLBACK_SEG            	IN  		VARCHAR     			DEFAULT NULL,
    PUSH_DEFERRED_RPC       	IN  		BOOL        			DEFAULT TRUE,
    REFRESH_AFTER_ERRORS		IN  		BOOL        			DEFAULT FALSE,
    PURGE_OPTION            	IN  		BINARY_INTEGER		DEFAULT 1,
    PARALLELISM           		IN  		BINARY_INTEGER 		DEFAULT 0, 
    HEAP_SIZE               	IN  		BINARY_INTEGER 		DEFAULT 0,
    ATOMIC_REFRESH          	IN  		BOOL        			DEFAULT TRUE,
    NESTED                  	IN  		BOOL        			DEFAULT FALSE
);

参数详解

  • LST

    指定的要刷新的物化视图名称,多个物化视图则用逗号隔开。

  • METHOD

    对应 LST 中的物化视图的刷新方式,'f'表示快速刷新,'c'表示完全刷新,空串表示默认刷新方式。另外,'a'和'C'等价,'p'和空串等价。标记不区分大小写。

  • atomic_refresh

    指明 lst 中的所有物化视图如果有失败的话,是提交已成功刷新的记录还是全部不提交。true 表示全部不提交,FAlSE 表示提交已成功刷新的记录。缺省为 true。

  • rollback_seg/push_deferred_rpc/refresh_fater_errors/purge/option/parallelism/heap_size/nested 仅语法支持。

33.2 举例说明

使用包内的过程和函数之前,如果还未创建过 DBMS_MVIEW 包,请先调用系统过程创建 DBMS_MVIEW 包。

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_MVIEW');

数据准备

//创建模式和表
CREATE SCHEMA PURCHASING1 AUTHORIZATION SYSDBA;
CREATE TABLE PURCHASING1.VENDOR
(VENDORID INT IDENTITY(1,1) PRIMARY KEY,
ACCOUNTNO VARCHAR(15) NOT NULL,
NAME VARCHAR(50) NOT NULL,
ACTIVEFLAG BIT NOT NULL,
WEBURL VARCHAR(1024),
CREDIT INT NOT NULL CHECK(CREDIT IN(1,2,3,4,5)));

//创建物化视图日志
CREATE MATERIALIZED VIEW LOG ON PURCHASING1.VENDOR WITH ROWID(VENDORID,ACCOUNTNO,NAME,ACTIVEFLAG,WEBURL,CREDIT) PURGE    START WITH SYSDATE   REPEAT INTERVAL '1' DAY;

//创建物化视图PURCHASING1.MV_VENDOR_EXCELLENT1
 CREATE MATERIALIZED VIEW  PURCHASING1.MV_VENDOR_EXCELLENT1  
REFRESH WITH ROWID START WITH SYSDATE+1 NEXT SYSDATE + 2 AS
SELECT ROWID A, VENDORID, ACCOUNTNO, NAME, ACTIVEFLAG, CREDIT
FROM  PURCHASING1.VENDOR
WHERE  CREDIT = 1;

//创建物化视图SYSDBA.MV_VENDOR_EXCELLENT2
CREATE MATERIALIZED VIEW  SYSDBA.MV_VENDOR_EXCELLENT2  
REFRESH WITH ROWID START WITH SYSDATE+1 NEXT SYSDATE + 2 AS
SELECT ROWID A, VENDORID, ACCOUNTNO, NAME, ACTIVEFLAG, CREDIT
FROM  PURCHASING1.VENDOR
WHERE  CREDIT = 1;

一次性刷新模式 PURCHASING1 模式 MV_VENDOR_EXCELLENT1 物化视图和 sysdba 模式 MV_VENDOR_EXCELLENT2 物化视图,前者使用快速刷新,后者使用完全刷新。

CALL DBMS_MVIEW.REFRESH('PURCHASING1.MV_VENDOR_EXCELLENT1,
sysdba.MV_VENDOR_EXCELLENT2', 'FC');
微信扫码
分享文档
扫一扫
联系客服