重建物化视图的一些问题

浏览: 2815

因为业务需求,需要对一张物化视图做修改,新增一个字段。再找了一圈发现并没有什么方法可以再不用删除视图的情况下去修改,只能删除视图重建。

下面是我这次操作遇到的问题,因为之前都没有做过,所以这次之后记录下。


第一步先DROP掉视图

Clipboard Image.png


然后我是直接Edit物化视图,做了修改新增字段,这边语句自带了REFRESH FORCE ON DEMAND 快速刷新,问题也是出在这边

Clipboard Image.png


执行创建便报了错误,ORA-12033:不能使用“”上实体化视图日志中的过滤器列

Clipboard Image.png


由于没有经验,一开始以为是物化视图日志的问题便去删除了日志-。-

Clipboard Image.png

之后执行创建视图语句,报了找不到日志。。

由于没有之前创建物化视图日志的语句,参考了其他视图日志 重新创建了日志,这边日志基于ROWID  而不是主键

SEQUENCE里面的内容 是看你语句中有几个外键吧,似乎是这样。。。

Clipboard Image.png

如果日志基于主键创建,执行创建物化视图会报 ORA-12032:不能使用“”上实体化视图日志中的ROWID列

Clipboard Image.png

绕了一圈,又回到了第一步的错误-。-

然后经过梁总的指导,找到了解决办法:

创建物化视图语句时候,去掉 REFRESH FORCE ON DEMAND 

Clipboard Image.png

因为 语句中包含 distinct, group by 不支持快速刷新

完美解决。

推荐 1
本文由 黄金阳 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

其实是可以使用group by 的查询语句创建快速刷新的物化视图的,起查一下物化视图重写功能吧。很好用,我就是用这个来对BIEE查询进行优化的。
好的 谢谢。

要回复文章请先登录注册