当前位置:Gxlcms > mysql > Oracle10g中dbms_mview.refresh()函数

Oracle10g中dbms_mview.refresh()函数

时间:2021-07-01 10:21:17 帮助过:9人阅读

dbms_mview.refresh(

  dbms_mview.refresh('表名', 'F') --快速刷新,也就是增量刷新
  dbms_mview.refresh('表名', 'C') --完全刷新
  我们常常利用物化视图来同步数据,或者迁移数据。在dbms_mview中的刷新过程,可以使用并行刷新的特性,可以有效的减少完全刷新的时间,下面是一个过程示例:
  create materialized view log on test; --创建物化视图日志
  create table mv_test as select * fromtest@lnk_testdb where 1=2; --创建与源表相同的表结构
  create materialized view mv_test on prebuilt table refresh fast as
  select * fromtest@lnk_testdb; --创建物化视图
  我们来看一下,我们常用的刷新过程参数含义:
PROCEDURE REFRESH
  Argument Name Type In/Out Default?
  ------------------------------ ----------------------- ------ --------
  TAB TABLE OF VARCHAR2(227) IN/OUT
  METHOD VARCHAR2 IN DEFAULT
  ROLLBACK_SEG VARCHAR2 IN DEFAULT
  PUSH_DEFERRED_RPC BOOLEAN IN DEFAULT
  REFRESH_AFTER_ERRORS BOOLEAN IN DEFAULT
  PURGE_OPTION BINARY_INTEGER IN DEFAULT
  PARALLELISM BINARY_INTEGER IN DEFAULT --这里是并行控制参数
  HEAP_SIZE BINARY_INTEGER IN DEFAULT
  ATOMIC_REFRESH BOOLEAN IN DEFAULT
  NESTED BOOLEAN IN DEFAULT
  比如说我们要全刷新一张mv_test物化视图:
begin
  dbms_mview.refresh(TAB=>'MV_TEST',METHOD=>'COMPLETE',PARALLELISM=>8);
end;
  增量刷新就不需要使用什么并行了,通常情况下,是没有那个必要的。
begin
  dbms_mview.refresh(TAB=>'MV_TEST',METHOD=>'FAST',PARALLELISM=>1);
end;
  如果只是在刷新的时候,指定此parallelism并行参数,,实际上并不能启用起并行,下面是文档中原文描述:
  At the outset, it appears that the PARALLELISM parameter will invoke a parallel refresh of the materialized view. However, it doesn’t. The dynamic performance views V$PX_PROCESS and V$PX_SESSION provide information on the parallel execution processes and the sessions using parallel execution respectively. When the above refresh process is running, if we query these views, we will see that there are no parallel execution processes in use.
  如果想在刷新的时候,启用并行,可以采用如下的三种办法:
  1.修改master表的并行度属性
  2.创建物化视图日志定义并行度属性
  3.创建物化视图时,使用hint

linux

人气教程排行