DROP MATERIALIZED VIEW MV_TEST;
以下のようなエラーが発生しました。
ORA-03113: 通信チャネルでend-of-fileが検出されました
再度接続しなおして、実行してみると今度は以下のようなエラーが発生しました。
ORA-12003: マテリアライズド・ビュー"SCOTT"."MV_TEST"は存在しません。
しかし、ちゃんと消えていたのかと思い再作成してみると、
CREATE MATERIALIZED VIEW MV_TEST AS SELECT ... ;
以下のようなエラーが発生します。
ORA-00955: すでに使用されているオブジェクト名です。
やっぱり消えていないようです。
ディクショナリを参照してみました。
SELECT * FROM USER_OBJECTS; OBJECT_NAME OBJECT_TYPE -------------------- -------------------- MV_TEST TABLE
なぜか同名のテーブルが存在します。
そこでこのテーブルの削除を試みました。
DROP TABLE MV_TEST;
すると以下のようなエラーが発生しました。
ORA-12083: "SCOTT"."MV_TEST"の削除には、DROP MATERIALIZED VIEWを使用する必要があります。
通常、マテリアライズド・ビューをディクショナリで参照すると、以下のように同じ名前でOBJECT_TYPEが"TABLE"と"MATERIALIZED VIEW"のオブジェクトができるようなのですが、
OBJECT_NAME OBJECT_TYPE -------------------- -------------------- MV_TEST TABLE MV_TEST MATERIALIZED VIEW
このうちの"MATERIALIZED VIEW"のほうだけが消えた状態のようです。
この"MV_TEST"をSELECT文で問い合わせるとちゃんとデータも返ってきます。
うーん、どうやったら消えてくれるのでしょう...
ユーザーごと削除したら消えるでしょうか?
DROP USER SCOTT CASCADE;
ダメです。
ORA-00604: 再帰SQLレベル1でエラーが発生しました。
ORA-12083: "SCOTT"."MV_PDF"の削除には、DROP MATERIALIZED VIEWを使用する必要があります。
消えません。
しかたないので名前を変えておきましょうか...
RENAME MV_TEST TO BK_MV_TEST
ダメです。
ORA-32318: マテリアライズド・ビューの名前を変更できません。
変えれません。
どうしても消したければインスタンスごと作り直さなければならないのでしょうか...
開発環境だからまぁ別にいいんですが...