1. 程式人生 > >ORACLE物化檢視-不能刪除物化檢視的解決辦法

ORACLE物化檢視-不能刪除物化檢視的解決辦法

 幾分鐘前一網友問我如何刪除一個實體化檢視, 當然不是什麼語法不會的問題了, 是發了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語句也等了有半分多鐘, 但最後成功執行了. 接下來再進行刪除就沒有任何問題了, 也很快!

    如何用好物化檢視, 也是一門不小的學問!