Oracle 11gR2で、マテリアライズドビューを作成したのと同じユーザーでドロップできないのはなぜですか?


11

DI_TEST_ALユーザーでマテリアライズドビューを作成しましたMY_MVIEW。名前を付けましょう。USER_OBJECTSテーブルにと表示され、MATERIALIZED VIEWドロップしようとすると、成功メッセージが表示されますが、オブジェクトはまだそこにあります。実際、それを再作成しようとすると、「オブジェクトはすでに存在しています」などのエラーが発生します。

別のスキーマに属する同じ名前のテーブルがあることがわかります。それは問題を引き起こさないと思いますが、私はそれについて言及したいと思いました。

SQL * Plusの出力は次のとおりです。

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';  
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> DROP MATERIALIZED VIEW MY_MVIEW;
Materialized view dropped.

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> 

DROP ALL MATERIALIZED VIEWSは自分の許可を再確認し、DI_TEST_ALユーザーに付与されました。


なにDO_OPP_SEARCH_MVIEW
ジャックはtopanswers.xyzしようと言う

MY_MVIEWマテリアライズドビューを削除する場合は、DROP MATERIALIZED VIEW MY_MVIEWのようにドロップします。ATM、あなたは何か他のものを落としている、そしてそれは重要かもしれない...
Kerri Shotts

1
私はMY_MVIEWを削除しようとしています。簡潔にするために例の名前を変更しましたが、そのビットを忘れてしまいました...これをデバッグする方法はありますか?なぜオラクルはそれが削除されたと言いますが、そうではありませんか?乾杯
バジリコーデ

サポート契約はありますか?あなたが見ているものを引き起こすいくつかの10gのバグがあります、おそらくそれらは堅固です。11gR2に対して複製を試みましたが、できませんでした。おそらく、最初のテーブルとMVからの完全なスクリプトを提供して、他の人が複製しようとすることができます。
マシューワトソン

STATUSの選択に含めてみてくださいALL_OBJECTS。私にもこの問題があり、マテリアライズドビューのステータスはINVALIDです。
畏敬の念

回答:


10

sysdbaとして接続し、MVのdba_summariesにエントリがあるかどうかを確認します。走っているなら

drop summary <OWNER>.<MV_NAME>;`

おかげで、マテリアライズドビューを完全に削除できません
でした

私はこの正確な問題を抱えており、MVはにリストされていましたdba_summaries。問題は、実行しようとするとDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;、エラーORA-00950 ...無効なDROPオプションが表示されることです。
畏敬の念

@aweはデータベースを/ sysdbaとして接続しようとします。次に、DROP SUMMARYコマンドを使用できます。
Atilla Ozgur 2017

0

マテリアライズドビューを削除しようとしたときに、ビューが存在しないと表示され、同様の問題に直面しました。作成しようとすると、「名前はすでに存在します」と表示されます。これはOracleのバグです。

ビューを削除する前に、all_objectsテーブルに対してクエリを実行します。

SQL:SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; 2つのレコード、ojbect_type = TABLEおよびObject_type = MATERIALIZED VIEWを返す必要があります。

ただし、Object_type = Tableのレコードが1つだけ表示されている場合は、そのテーブルをデータベースから削除します

テーブルMY_MVIEWを削除します。

そして、マテリアライズドビューを再作成してみてください。うまくいくはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.