您可以使用DBMS_MVIEW包中的預存程序來管理、更新物化視圖及它們的依賴關係。
PolarDB支援下列
DBMS_MVIEW預存程序:| 預存程序 | 傳回型別 | 說明 |
| GET_MV_DEPENDENCIES(list VARCHAR2, deplist VARCHAR2); | N/A | 返回指定視圖的依賴項列表。 |
| REFRESH(list VARCHAR2, method VARCHAR2, rollback seg VARCHAR2 , push deferred rpc BOOLEAN, refresh after errors BOOLEAN , purge option NUMBER, parallelism NUMBER, heap size NUMBER , atomic refresh BOOLEAN , nested BOOLEAN); | N/A | 重新整理視圖名稱列表中所有使用逗號分隔的視圖。 |
| REFRESH(tab dbms_utility.uncl_array, method VARCHAR2, rollback_seg VARCHAR2, push_deferred_rpc BOOLEAN, refresh_after_errors BOOLEAN, purge_option NUMBER, parallelism NUMBER, heap_size NUMBER, atomic_refresh BOOLEAN, nested BOOLEAN); | N/A | 重新整理所有DBMS_UTILITY.UNCL_ARRAY中的視圖。 |
| REFRESH_ALL_MVIEWS(number_of_failures BINARY_INTEGER, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN); | N/A | 重新整理所有物化視圖。 |
| REFRESH_DEPENDENT(number_of_failures BINARY_INTEGER, list VARCHAR2, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN, nested BOOLEAN); | N/A | 重新整理所有依賴於以逗號分隔的列表中列出的視圖。 |
| REFRESH_DEPENDENT(number_of_failures BINARY_INTEGER, tab dbms_utility.uncl_array, method VARCHAR2, rollback_seg VARCHAR2, refresh_after_errors BOOLEAN, atomic_refresh BOOLEAN, nested BOOLEAN); | N/A | 重新整理所有依賴DBMS_UTILITY.UNCL_ARRAY的視圖。 |
GET_MV_DEPENDENCIES
當命名一個物化視圖之後,
樣本
GET_MV_DEPENDENCIES返回依賴於指定視圖的清單項目。文法如下:GET_MV_DEPENDENCIES(
list IN VARCHAR2,
deplist OUT VARCHAR2);參數| 參數名稱 | 描述 |
| list | list用於指定物化視圖的名稱,或物化視圖名稱中用逗號分隔的列表。 |
| deplist | deplist是一個模式限定依賴關係中用逗號分隔的列表。 |
DECLARE
deplist VARCHAR2(1000);
BEGIN
DBMS_MVIEW.GET_MV_DEPENDENCIES('public.emp_view', deplist);
DBMS_OUTPUT.PUT_LINE('deplist: ' || deplist);
END;執行結果將返回物化視圖public. emp_view上的依賴關係列表。REFRESH
您可以使用
樣本
REFRESH預存程序更新在用逗號分隔的視圖名稱列表中指定的所有視圖,或在DBMS_UTILITY. UNCL_ARRAY表中指定的所有視圖。- 指定逗號分隔的視圖名稱列表時,文法如下:
REFRESH( list IN VARCHAR2, method IN VARCHAR2 DEFAULT NULL, rollback_seg IN VARCHAR2 DEFAULT NULL, push_deferred_rpc IN BOOLEAN DEFAULT TRUE, refresh_after_errors IN BOOLEAN DEFAULT FALSE, purge_option IN NUMBER DEFAULT 1, parallelism IN NUMBER DEFAULT 0, heap_size IN NUMBER DEFAULT 0, atomic_refresh IN BOOLEAN DEFAULT TRUE, nested IN BOOLEAN DEFAULT FALSE); - 指定
DBMS_UTILITY. UNCL_ARRAY表中的視圖名稱時,文法如下:REFRESH( tab IN OUT DBMS_UTILITY.UNCL_ARRAY, method IN VARCHAR2 DEFAULT NULL, rollback_seg IN VARCHAR2 DEFAULT NULL, push_deferred_rpc IN BOOLEAN DEFAULT TRUE, refresh_after_errors IN BOOLEAN DEFAULT FALSE, purge_option IN NUMBER DEFAULT 1, parallelism IN NUMBER DEFAULT 0, heap_size IN NUMBER DEFAULT 0, atomic_refresh IN BOOLEAN DEFAULT TRUE, nested IN BOOLEAN DEFAULT FALSE);
| 參數名稱 | 描述 |
| list | 用於指定物化視圖的名稱或逗號分隔的物化視圖名稱列表。 |
| tab | 用於指定物化視圖的名稱。 |
| method | 用於指定應用於指定視圖的更新方法。C是唯一支援的更新方法,它能將視圖完整地更新。 |
| rollback_seg | 為了實現相容性而支援此參數。預設為NULL 。 |
| push_deferred_rpc | 為了實現相容性而支援此參數。預設為TRUE。 |
| refresh_after_errors | 為了實現相容性而支援此參數。預設為FALSE。 |
| purge_option | 為了實現相容性而支援此參數。預設為1。 |
| parallelism | 為了實現相容性而支援此參數。預設為0。 |
| heap_size | 為了實現相容性而支援此參數。預設為0。 |
| atomic_refresh | 為了實現相容性而支援此參數。預設為TRUE。 |
| nested | 為了實現相容性而支援此參數。預設為FALSE。 |
EXEC DBMS_MVIEW.REFRESH(list => 'public.emp_view', method => 'C');REFRESH_ALL_M VIEWS
表或視圖的視圖關係修改之後,您可以使用
樣本
REFRESH_ALL_MVIEWS預存程序來更新任何沒有被更新的物化視圖。文法如下:REFRESH_ALL_MVIEWS(
number_of_failures OUT BINARY_INTEGER,
method IN VARCHAR2 DEFAULT NULL,
rollback_seg IN VARCHAR2 DEFAULT NULL,
refresh_after_errors IN BOOLEAN DEFAULT FALSE,
atomic_refresh IN BOOLEAN DEFAULT TRUE);參數| 參數名稱 | 描述 |
| number_of_failures | 指定在更新操作中更新失敗的數量。 |
| method | 指定將要應用於指定視圖的更新方法。C是唯一支援的更新方法,它能將視圖完整地更新。 |
| rollback_seg | 為了實現相容性而支援此參數。預設為NULL。 |
| refresh_after_errors | 為了實現相容性而支援此參數。預設為FALSE。 |
| atomic_refresh | 為了實現相容性而支援此參數。預設為TRUE。 |
DECLARE
errors INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_ALL_MVIEWS(errors, method => 'C');
END;更新完成後,errors就會包含更新失敗的數量。REFRESH_DEPENDENT
您可以使用
樣本
REFRESH_DEPENDENT預存程序來更新所有的物化視圖。您可以指定一個逗號分隔的列表,或指定DBMS_UTILITY. UNCL_ARRAY表中的視圖名稱。- 指定逗號分隔的視圖名稱列表時,文法如下:
REFRESH_DEPENDENT( number_of_failures OUT BINARY_INTEGER, list IN VARCHAR2, method IN VARCHAR2 DEFAULT NULL, rollback_seg IN VARCHAR2 DEFAULT NULL refresh_after_errors IN BOOLEAN DEFAULT FALSE, atomic_refresh IN BOOLEAN DEFAULT TRUE, nested IN BOOLEAN DEFAULT FALSE); - 指定
DBMS_UTILITY. UNCL_ARRAY表中的視圖名稱時,文法如下:REFRESH_DEPENDENT( number_of_failures OUT BINARY_INTEGER, tab IN DBMS_UTILITY.UNCL_ARRAY, method IN VARCHAR2 DEFAULT NULL, rollback_seg IN VARCHAR2 DEFAULT NULL, refresh_after_errors IN BOOLEAN DEFAULT FALSE, atomic_refresh IN BOOLEAN DEFAULT TRUE, nested IN BOOLEAN DEFAULT FALSE);
| 參數名稱 | 描述 |
| number_of_failures | 指定在更新操作中更新失敗的數量。 |
| list | 指定物化視圖的名稱或逗號分隔的物化視圖名稱列表。 |
| tab | 指定物化視圖的名稱。 |
| method | 指定將要應用於指定視圖的更新方法。C是唯一支援的更新方法,它能將視圖完整地更新。 |
| rollback_seg | 為了實現相容性而支援此參數。預設為NULL。 |
| refresh_after_errors | 為了實現相容性而支援此參數。預設為FALSE。 |
| atomic_refresh | 為了實現相容性而支援此參數。預設為TRUE。 |
| nested | 為了實現相容性而支援此參數。預設為FALSE。 |
DECLARE
errors INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_DEPENDENT(errors, list => 'public.emp_view', method => 'C');
END;更新完成後,errors就會包含更新失敗的數量。