全部產品
Search
文件中心

PolarDB:DBMS_MVIEW

更新時間:Jul 06, 2024

DBMS_MVIEW提供了全部物化視圖重新整理、指定物化視圖重新整理、依賴於指定對象的物化視圖重新整理以及擷取依賴於指定對象的物化視圖的能力。

DBMS_MVIEW 子程式總覽

子程式

說明

REFRESH_ALL_MVIEWS Procedure

重新整理全部物化視圖。

REFRESH Procedure

重新整理指定物化視圖。

REFRESH_DEPENDENT Procedure

重新整理依賴於指定對象的物化視圖。

GET_MV_DEPENDENT Procedure

擷取依賴於指定對象的物化視圖。

REFRESH_ALL_MVIEWS

該預存程序用於重新整理全部物化視圖。

文法

PROCEDURE REFRESH_ALL_MVIEWS (
    number_of_failures     OUT   BINARY_INTEGER,
    method                 IN    VARCHAR2         := NULL,
    rollback_seg           IN    VARCHAR2         := NULL,
    refresh_after_errors   IN    BOOLEAN          := FALSE,
    atomic_refresh         IN    BOOLEAN          := TRUE,
    out_of_place           IN    BOOLEAN          := FALSE);

參數說明

參數

說明

number_of_failures

物化視圖重新整理失敗數量。

method

(選擇性參數)物化視圖重新整理方法。取值如下:

  • C或c:表示complete refresh

  • A或a:表示always refresh

說明

C或c、A或a的重新整理方式是等價的,均表示always refresh。

rollback_seg

(選擇性參數)指定物化視圖重新整理時的復原段。相容性提供參數。

refresh_after_errors

(選擇性參數)物化視圖重新整理過程中產生錯誤後是否會繼續重新整理。相容性提供參數。

atomic_refresh

(選擇性參數)是否為原子性重新整理。相容性提供參數。

out_of_place

(選擇性參數)相容性提供參數。

樣本

該樣本重新整理了當前資料庫中的全部的物化視圖。

CREATE TABLE test(a int, b int);

INSERT INTO test VALUES (1, 2);
CREATE MATERIALIZED VIEW mv0 AS SELECT a, b FROM test;

INSERT INTO test VALUES (2, 3);

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
(1 row)

DECLARE
    a BINARY_INTEGER;
BEGIN
    DBMS_MVIEW.REFRESH_ALL_MVIEWS(a);
    -- The num of refresh failures is:0
    DBMS_OUTPUT.PUT_LINE('The num of refresh failures is:' || a);
END;

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
 2 | 3
(2 rows)

REFRESH

該預存程序用於重新整理指定的物化視圖。

文法

PROCEDURE REFRESH (
    list                   IN     VARCHAR2,
    method                 IN     VARCHAR2       := NULL,
    rollback_seg           IN     VARCHAR2       := NULL,
    push_deferred_rpc      IN     BOOLEAN        := true,
    refresh_after_errors   IN     BOOLEAN        := false,
    purge_option           IN     BINARY_INTEGER := 1,
    parallelism            IN     BINARY_INTEGER := 0,
    heap_size              IN     BINARY_INTEGER := 0,
    atomic_refresh         IN     BOOLEAN        := true,
    nested                 IN     BOOLEAN        := false,
    out_of_place           IN     BOOLEAN        := false,
    skip_ext_data          IN     BOOLEAN        := false);

PROCEDURE REFRESH (
    tab                    IN     DBMS_UTILITY.UNCL_ARRAY,
    method                 IN     VARCHAR2       := NULL,
    rollback_seg           IN     VARCHAR2       := NULL,
    push_deferred_rpc      IN     BOOLEAN        := true,
    refresh_after_errors   IN     BOOLEAN        := false,
    purge_option           IN     BINARY_INTEGER := 1,
    parallelism            IN     BINARY_INTEGER := 0,
    heap_size              IN     BINARY_INTEGER := 0,
    atomic_refresh         IN     BOOLEAN        := true,
    nested                 IN     BOOLEAN        := false,
    out_of_place           IN     BOOLEAN        := false,
    skip_ext_data          IN     BOOLEAN        := false);

參數說明

參數

說明

list或者tab

需要重新整理的物化視圖列表。

method

(選擇性參數)物化視圖重新整理方法。取值如下:

  • C或c:表示complete refresh

  • A或a:表示always refresh

說明

C或c、A或a的重新整理方式是等價的,均表示always refresh。

rollback_seg

(選擇性參數)指定物化視圖重新整理時的復原段。相容性提供參數。

push_deferred_rpc

(選擇性參數)僅用於可更新物化視圖,是否將物化視圖的修改推送到關聯的主表或主物化視圖。相容性提供參數。

refresh_after_errors

(選擇性參數)物化視圖重新整理過程中產生錯誤後是否會繼續重新整理。相容性提供參數。

purge_option

(選擇性參數)相容性提供參數。

parallelism

(選擇性參數)相容性提供參數。

heap_size

(選擇性參數)相容性提供參數。

atomic_refresh

(選擇性參數)相容性提供參數。

nested

(選擇性參數)相容性提供參數。

out_of_place

(選擇性參數)相容性提供參數。

skip_ext_data

(選擇性參數)相容性提供參數。

樣本

該樣本重新整理了指定的物化視圖。

CREATE TABLE test(a int, b int);

INSERT INTO test VALUES (1, 2);
CREATE MATERIALIZED VIEW mv0 AS SELECT a, b FROM test;

INSERT INTO test VALUES (2, 3);

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
(1 row)

DECLARE
    la DBMS_UTILITY.UNCL_ARRAY;
BEGIN
    la := DBMS_UTILITY.UNCL_ARRAY('mv0');
    DBMS_MVIEW.REFRESH(tab => la,
                       method => 'A',
                       rollback_seg => NULL,
                       push_deferred_rpc => true,
                       refresh_after_errors => false,
                       purge_option => 1,
                       nested => false,
                       out_of_place => true,
                       skip_ext_data => true);
END;

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
 2 | 3
(2 rows)

REFRESH_DEPENDENT

該預存程序用於重新整理依賴於指定對象的物化視圖。

文法

PROCEDURE REFRESH_DEPENDENT (
    number_of_failures     OUT    BINARY_INTEGER,
    list                   IN     VARCHAR2,
    method                 IN     VARCHAR2    := NULL,
    rollback_seg           IN     VARCHAR2    := NULL,
    refresh_after_errors   IN     BOOLEAN     := false,
    atomic_refresh         IN     BOOLEAN     := true,
    nested                 IN     BOOLEAN     := false,
    out_of_place           IN     BOOLEAN     := false);

PROCEDURE REFRESH_DEPENDENT (
    number_of_failures     OUT    BINARY_INTEGER,
    tab                    IN     DBMS_UTILITY.UNCL_ARRAY,
    method                 IN     VARCHAR2    := NULL,
    rollback_seg           IN     VARCHAR2    := NULL,
    refresh_after_errors   IN     BOOLEAN     := false,
    atomic_refresh         IN     BOOLEAN     := true,
    nested                 IN     BOOLEAN     := false,
    out_of_place           IN     BOOLEAN     := false);

參數說明

參數

說明

number_of_failures

物化視圖重新整理失敗數量。

list或者tab

需要重新整理的物化視圖依賴對象的列表。

method

(選擇性參數)物化視圖重新整理方法。取值如下:

  • C或c:表示complete refresh

  • A或a:表示always refresh

說明

C或c、A或a的重新整理方式是等價的,均表示always refresh。

rollback_seg

(選擇性參數)指定物化視圖重新整理時的復原段。相容性提供參數。

refresh_after_errors

(選擇性參數)物化視圖重新整理過程中產生錯誤後是否會繼續重新整理。相容性提供參數。

atomic_refresh

(選擇性參數)是否為原子性重新整理。相容性提供參數。

nested

(選擇性參數)相容性提供參數。

out_of_place

(選擇性參數)相容性提供參數。

樣本

該樣本重新整理了所有依賴於指定對象的物化視圖。

CREATE TABLE test(a int, b int);

INSERT INTO test VALUES (1, 2);
CREATE MATERIALIZED VIEW mv0 AS SELECT a, b FROM test;

INSERT INTO test VALUES (2, 3);

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
(1 row)

DECLARE
    la  DBMS_UTILITY.UNCL_ARRAY;
    len INTEGER;
    nof BINARY_INTEGER;
BEGIN
    DBMS_UTILITY.COMMA_TO_TABLE('test', len, la);
    DBMS_MVIEW.REFRESH_DEPENDENT(number_of_failures => nof,
                                 tab => la,
                                 method => 'A',
                                 rollback_seg => NULL,
                                 refresh_after_errors => true,
                                 atomic_refresh => false,
                                 nested => false,
                                 out_of_place => true);
    -- The num of refresh failures is:0
    DBMS_OUTPUT.PUT_LINE('The num of refresh failures is:' || nof);
END;

SELECT * FROM mv0 ORDER BY 1, 2;
 a | b
---+---
 1 | 2
 2 | 3
(2 rows)

GET_MV_DEPENDENT

該預存程序用於擷取依賴於指定對象的所有物化視圖。

文法

PROCEDURE GET_MV_DEPENDENCIES (
    mvlist  IN   VARCHAR2,
    deplist OUT  VARCHAR2);

參數說明

參數

說明

mvlist

被物化視圖依賴的對象列表。

deplist

所有依賴指定對象的物化視圖列表。

樣本

該樣本擷取依賴於指定對象的所有物化視圖。

CREATE TABLE test(a int, b int);

CREATE MATERIALIZED VIEW mv0 AS SELECT a, b FROM test;
CREATE MATERIALIZED VIEW mv1 AS SELECT a, b FROM test;

DECLARE
    deplist VARCHAR2;
BEGIN
    DBMS_MVIEW.GET_MV_DEPENDENCIES('test', deplist);
    -- The dependencies are: "PUBLIC"."MV0", "PUBLIC"."MV1"
    DBMS_OUTPUT.PUT_LINE('The dependencies are: ' || deplist);
END;