日期:2014-05-16  浏览次数:20543 次

物化视图无法删除的解决方法

        刚开发组的兄弟跟我反馈,物化视图无法删除,drop table mv_test是报必须删除物化视图mv_test。以前碰到过这种情况,于是要他执行drop MATERIALIZED VIEW  mv_test ,虽然执行成功,但是在user_object 还是查到该物化视图,只是状态为invalid。

        在网上找了下资料,意见是用on prebuilt table的方式重建物化视图,于是执行下面的语句:

CREATE MATERIALIZED VIEW MV_TEST
on prebuilt table
REFRESH FORCE ON DEMAND
START WITH TO_DATE('28-08-2013 23:30:00', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE+1    
WITH ROWID 
AS
SELECT A.FNO
  FROM SECCOND A, COMMON COMM
 WHERE A.FID = COMM.FID;

     重建不成功,报mv_test这个对象已存在。在pl/sql  developer的MATERIALIZED VIEW中可以看到mv_test,有报错的标记,找不到定义。

      1. 于是用SYS的账号登陆,在obj$中找到物化视图并删除(这里大家一定要注意,删除之前一定要备份哦,要保证每一步的操作是可逆的)。

      2. 执行上面重建的语句。

      3. drop MATERIALIZED VIEW   mv_test;    

          drop table  mv_test;

      搞定!

   


1楼Mad_AB前天 16:38
^_^ 嘿嘿 都是我干的好事,删除大数据物化视图,太慢中途取消了