Oracle 10g中dbms_mview.refresh()函数

[日期:2011-12-02]

来源:Linux社区

作者:Linux

[字体:大 中 小]

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 0b1331709591d260c1c78e86d0c51c18.png

Logo

更多推荐