查看: 3894|回复: 14

[讨论] 快速刷新物化视图-基于类似的表,一个可以创建,一个不能创建

[复制链接]
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
跳转到指定楼层
1#
发表于 2011-12-5 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
具体是这样的:
基于 f_rack_s 该表创建一个 REFRESH FAST ON COMMIT 方式的物化视图,但是却无法创建成功,但是,创建一个 f_rack_s该表的副本 f_rack_s_temp表,然后基于该表创建一个REFRESH FAST ON COMMIT 方式的物化视图,却成功了。不知为何,具体操作步骤如下:

CREATE MATERIALIZED VIEW log on f_rack_s WITH ROWID;
CREATE MATERIALIZED VIEW mv_rack REFRESH FAST ON COMMIT WITH ROWID AS
SELECT NAME,CODE FROM f_rack_s;
--提示ORA-12054:无法为实体化视图设置 on commit 刷新属性
通过dbms_mview.explain_mview来查看其错误,但是也看不出具体是什么错误
TRUNCATE TABLE mv_capabilities_table;
BEGIN dbms_mview.explain_mview('SELECT NAME,CODE FROM f_rack_s');END;
SQL> SELECT CAPABILITY_NAME,POSSIBLE, RELATED_TEXT,MSGTXT  FROM mv_capabilities_table;

CAPABILITY_NAME                POSSIBLE RELATED_TEXT      MSGTXT
------------------------------        --------      --------------- --------------------------------------------------------------------------------
PCT                                        N                                                                                         
REFRESH_COMPLETE               N                           主表中没有任何主键约束条件
REFRESH_FAST                       N                                                                                         
REWRITE                               Y                                                                                         
PCT_TABLE                            N        F_RACK_S           关系不是一个已分区的表
REFRESH_FAST_AFTER_INSERT      N                           忘记分析功能禁用的原因
REFRESH_FAST_AFTER_ONETAB_DML  N                           查看禁用 REFRESH_FAST_AFTER_INSERT 的原因
REFRESH_FAST_AFTER_ANY_DML     N                           查看禁用 REFRESH_FAST_AFTER_ONETAB_DML 的原因
REFRESH_FAST_PCT               N                           PCT 不可能在实体化视图中的任何从表上
REWRITE_FULL_TEXT_MATCH        Y                                                                                         
REWRITE_PARTIAL_TEXT_MATCH     Y                                                                                         
REWRITE_GENERAL                Y                                                                                         
REWRITE_PCT                    N                           无法进行一般重写, 或者 PCT 不可能在任何从表上
PCT_TABLE_REWRITE              N        F_RACK_S           关系不是一个已分区的表
-----------------------------------------------------------------------------------------------------------------------------------
如果创建一个表来源于f_rack_s该表,索引都与f_rack_s该表一致
CREATE TABLE f_rack_s_temp AS SELECT * FROM f_rack_s;
create index IDX_F_RACK_St_DEL on f_rack_s_temp (DELETETAG);
create index IDX_F_RACK_St_EDITDATE on f_rack_s_temp (GWM_EDITDATE);
create index IDX_F_RACK_St_FID on f_rack_s_temp (GWM_FID);
--然后用f_rack_s_temp该表创建一个可快速刷新的物化视图
CREATE MATERIALIZED VIEW log on f_rack_s_temp WITH ROWID;
CREATE MATERIALIZED VIEW mv_rack_temp REFRESH FAST ON COMMIT WITH ROWID AS
SELECT NAME,CODE FROM f_rack_s_temp;
--成功创建
实在想不明白为什么用f_rack_s这个表就不行,而基于该表创建的f_rack_s_temp这个表就可以创建快速刷新的物化视图。
f_rack_s_temp是f_rack_s的一个副本,按理结构上都一样。

论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
2#
 楼主| 发表于 2011-12-5 21:37 | 只看该作者
看了看木人啊

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
3#
发表于 2011-12-5 23:03 | 只看该作者
楼主请先仔细阅读 http://yangtingkun.itpub.net/post/468/14245
看看是否有违背原则的地方?

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
4#
发表于 2011-12-5 23:18 | 只看该作者
把原表的DDL导出,和副本比较一下看看哪里不同。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
46
ITPUB元老
日期:2011-08-06 00:48:09最佳人气徽章
日期:2012-03-13 17:39:18版主1段
日期:2013-03-07 02:21:02ITPUB季度 技术新星
日期:2011-11-18 16:54:31ITPUB伯乐
日期:2012-02-16 14:53:44ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:45会员2007贡献徽章
日期:2007-09-26 18:42:10玉石琵琶
日期:2012-02-21 15:04:38授权会员
日期:2007-01-26 09:19:03数据库板块每日发贴之星
日期:2011-08-04 01:01:01
5#
发表于 2011-12-6 14:25 | 只看该作者
REFRESH_COMPLETE               N                           主表中没有任何主键约束条件

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
6#
 楼主| 发表于 2011-12-6 20:36 | 只看该作者
lastwinner 发表于 2011-12-5 23:03
楼主请先仔细阅读 http://yangtingkun.itpub.net/post/468/14245
看看是否有违背原则的地方?

看过了。没有违背

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
7#
 楼主| 发表于 2011-12-6 20:43 | 只看该作者
outdo 发表于 2011-12-6 14:25
REFRESH_COMPLETE               N                           主表中没有任何主键约束条件

这个应该没有关系,我创建的是基于rowid的

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
8#
 楼主| 发表于 2011-12-6 20:44 | 只看该作者
newkid 发表于 2011-12-5 23:18
把原表的DDL导出,和副本比较一下看看哪里不同。

恩,明天去导出来对比下

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
9#
 楼主| 发表于 2011-12-7 10:12 | 只看该作者
newkid 发表于 2011-12-5 23:18
把原表的DDL导出,和副本比较一下看看哪里不同。

终于知道为啥了。谢谢版主的提醒。
通过ddl的导出查看,发现多了个空间索引。如果我也在F_RACK_S_TEMP加上空间索引后,也是一样的就无法基于该表创建可快速刷新的物化视图了。

看来快速刷新的物化视图创建的基表还不能包含空间索引哪

使用道具 举报

回复
论坛徽章:
25
奥运会纪念徽章:射击
日期:2013-01-28 09:12:182014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11马上有对象
日期:2014-03-20 16:14:11马上加薪
日期:2014-03-20 16:14:11喜羊羊
日期:2015-04-09 18:46:34秀才
日期:2016-03-24 09:20:52
10#
发表于 2011-12-7 11:05 | 只看该作者
空间索引 我还不知道呢

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表