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、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、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、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;