您可以使用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 | 刷新所有 |
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 | 刷新所有依赖 |
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就会包含更新失败的数量。