日期: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;
搞定!