oracle 10g中dbms_mview.refresh()函数
2011-12-01 22:14
381 查看
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
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
相关文章推荐
- oracle中to_number字符串转数字、max取最大值、dbms_random.value生成随机数及对小数做截取,四舍五入操作的函数
- Oracle 分析函数(10G)语法详解
- Oracle 分析函数(10G)语法详解
- [转]Oracle dbms_random函数用法快速生成多条测试数据
- oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了
- Oracle - DBMS_LOB函数和用法
- Oracle物化视图DBMS_MVIEW.EXPLAIN_MVIEW包的使用
- oracle 10g 学习之多表查询、分组函数(6)
- oracle 10g函数大全--转换函数
- oracle 10g 用dbms_xmlgen将数据表转成xml格式
- oracle 10g函数大全--分析函数
- Oracle 10g dbms_rowid 包源码
- 自己写的oracle dbms_sql 函数包例子
- 一个用作撕碎字符串的PL/SQL工具函数(Oracle 10g)
- Oracle 10g dbms_rowid 包源码
- oracle 10g 的dbms_workload_repository使用
- oracle 10g 学习之函数和存储过程(12)
- Oracle 10g dbms_rowid 包源码
- [Oracle]利用DBMS_METADATA.GET_DDL函数获取数据库对象的DDL语句
- Oracle 分析函数(10G)语法详解