+ -
当前位置:首页 → 问答吧 → 大家看看这个简单的sql语句 快速刷新物化视图如何建立???

大家看看这个简单的sql语句 快速刷新物化视图如何建立???

时间:2010-08-20

来源:互联网

如题
select distinct a,b from tab1;

在给定语句上建立快速刷新的物化视图 折腾好久
转换select a ,b,count(*) from tab1 group by a,b;报错说ORA-32401: "**.** 上的实体化视图日志没有新值

作者: tianshezi   发布时间: 2010-08-20

请你贴出详细的步骤


提示信息也很明确啊,说实体化视图日志上没有新的数据需要刷新的

作者: duolanshizhe   发布时间: 2010-08-20

本帖最后由 tianshezi 于 2010-08-20 10:11 编辑

首先感谢你如此快回复

步骤
create materialized log on tab1 with rowid;

ok!

create materialized mv_tab1 refresh fast on commit with rowid as select a,b,count(*) from tab1 group by a,b;
报错ora-32401

创建view时候就报错了

作者: tianshezi   发布时间: 2010-08-20

若使用primary key来更新 会有如下报错
SQL>  create materialized view log on tab1 with primary key;

Materialized view log created.

SQL>  create materialized view mv_tab1 refresh fast on commit with primary key as select a,b,count(*) from tab1 group by a,b;

                                                                                                                    *
ERROR at line 1:
ORA-12032: cannot use rowid column from materialized view log on
"SH"."PRODUCTS"

作者: tianshezi   发布时间: 2010-08-20

恩  针对楼主问题做个答复:

1、你的两个步骤中都少了view关键字:

2、报ora-32401的原因是,在快速刷新模式下不能使用聚合函数:

你可以试试这个:

create materialized mv_tab1 refresh fast on commit with rowid as select a,b from tab1;

作者: duolanshizhe   发布时间: 2010-08-20

SQL> create materialized view log on tab1
  2  with rowid,
  3  sequence(a,b)
  4  including new values;

Materialized view log created.

SQL> create materialized view mv_prod refresh fast on commit with rowid
  2  as select a,b,count(*) from tab1 group by a,b;

Materialized view created.


多谢楼上的热情相助 问题解决了 测试成功可以在commit提交后物化视图刷新

作者: tianshezi   发布时间: 2010-08-20



QUOTE:
恩  针对楼主问题做个答复:

1、你的两个步骤中都少了view关键字:

2、报ora-32401的原因是,在快速刷 ...
duolanshizhe 发表于 2010-08-20 10:19




   
1.哪儿少了view 关键字 没发现 ^_^
2.这样可以完成 但是和原来的sql语句表达意思不一致了.

作者: tianshezi   发布时间: 2010-08-20

恩   我说的是3楼的  不是后面的

作者: duolanshizhe   发布时间: 2010-08-20