DBMS_MVIEW 包

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

34.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'表示完全刷新,空串表示默认刷新方式。另外,为兼容oracle,还支持'a','p'刷新,但只是语法支持,功能没有实现。标记不区分大小写。

  • atomic_refresh

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

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

34.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');
微信扫码
分享文档
扫一扫
联系客服