http://www.anysql.net/oracle/drop_busy_materialized_view.html
几分钟前一网友问我如何删除一个实体化视图, 当然不是什么语法不会的问题了, 是发了Drop命令后一直挂着, 几个小时都没有结束, 你可以想想为什么? 先看一下创建的语法.
create materialized view user_order_mavi
build immediate
refresh on commit
enable query rewrite
as
select service_id,substr(user_isdn,1,7),
bill_type,follow_action,count(user_isdn)
from user_order
group by service_id,substr(user_isdn,1,7),
bill_type,follow_action
看到这个语句, 应当是刷新的类型那儿有问题, 在ON COMMIT刷新模式下, 如果基表的DML很频繁, 会造成刷新很频繁, 这可能是DROP语句一直挂起的原因. 建议先运行以下命令:
ALTER MATERIALIZED VIEW user_order_mavi
DISABLE QUERY REWRITE
REFRESH ON DEMAND;
由于新很频繁, 上面的ALTER语句也等了有半分多钟, 但最后成功执行了. 接下来再进行删除就没有任何问题了, 也很快!
如何用好物化视图, 也是一门不小的学问!