全部產品
Search
文件中心

PolarDB:DBMS_MVIEW

更新時間:Jul 06, 2024

您可以使用DBMS_MVIEW包中的預存程序來管理、更新物化視圖及它們的依賴關係。

PolarDB支援下列DBMS_MVIEW預存程序:
表 1. 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);
參數
參數名稱描述
listlist用於指定物化視圖的名稱,或物化視圖名稱中用逗號分隔的列表。
deplistdeplist是一個模式限定依賴關係中用逗號分隔的列表。
樣本
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就會包含更新失敗的數量。