Mengapa di Oracle 11gR2 saya tidak bisa menghapus tampilan yang dibuat dengan pengguna yang sama yang membuatnya?


11

Saya membuat tampilan terwujud dengan DI_TEST_ALpengguna, sebut saja MY_MVIEW. Itu muncul di USER_OBJECTStabel sebagai MATERIALIZED VIEW, saya mencoba untuk menjatuhkannya, saya mendapatkan pesan sukses, tetapi objeknya masih ada. Bahkan jika saya mencoba membuatnya kembali, saya mendapatkan kesalahan seperti "objek sudah ada".

Saya melihat bahwa ada tabel dengan nama yang sama milik skema lain. Saya berasumsi bahwa seharusnya tidak menyebabkan masalah, tetapi saya merasa ingin menyebutkannya.

Berikut ini adalah output 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> 

Saya memeriksa izin saya dua kali lipat dan DROP ALL MATERIALIZED VIEWSdiberikan kepada DI_TEST_ALpengguna.


apa DO_OPP_SEARCH_MVIEW?
Jack bilang coba topanswers.xyz

Jika Anda ingin menjatuhkan tampilan MY_MVIEW terwujud, jatuhkan seperti: DROP MATERIALISED VIEW MY_MVIEW. ATM, Anda menjatuhkan sesuatu yang lain, dan itu mungkin penting ...
Kerri Shotts

1
Saya mencoba untuk menghapus MY_MVIEW, saya mengubah nama dalam contoh untuk singkatnya tapi saya lupa sedikit ... Ada ide bagaimana cara men-debug ini? Mengapa oracle mengatakan itu dijatuhkan tetapi tidak? Cheers
basilikode

Apakah Anda memiliki kontrak dukungan? ada beberapa bug 10g yang menyebabkan apa yang Anda lihat, mungkin mereka masih ada. Saya mencoba meniru 11gR2 tetapi tidak berhasil. Mungkin menyediakan skrip lengkap dari tabel awal dan MV yang dapat ditiru orang lain.
Matthew Watson

Coba sertakan STATUSdi pilih aktif ALL_OBJECTS. Saya juga memiliki masalah ini, dan bagi saya, status pada tampilan terwujud adalah INVALID.
awe

Jawaban:


10

Hubungkan sebagai sysdba dan periksa apakah ada entires di dba_summaries untuk MV. Jika ada yang dijalankan,

drop summary <OWNER>.<MV_NAME>;`

Terima kasih sobat, itu mencegah pandangan terwujud dihapus sepenuhnya ...
basilikode

Saya punya masalah persis ini, dan MV terdaftar di dba_summaries. Masalahnya adalah ketika saya mencoba menjalankan DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, saya mendapatkan kesalahan ORA-00950 ... opsi DROP tidak valid .
awe

@adalah mencoba menghubungkan database Anda sebagai / sysdba. Kemudian Anda dapat menggunakan perintah RINGKASAN DROP.
Atilla Ozgur

0

Saya menghadapi masalah serupa ketika saya mencoba untuk menjatuhkan tampilan terwujud yang mengatakan View tidak ada. Jika saya mencoba membuatnya, dikatakan Name sudah ada. Ini adalah bug di Oracle.

Sebelum menjatuhkan tampilan, kueri pada tabel all_objects.

SQL: SELECT * DARI ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; Ini harus mengembalikan 2 catatan, ojbect_type = TABLE dan Object_type = VIEW MATERIALISASI.

Tetapi jika hanya menampilkan satu catatan dengan Object_type = Tabel kemudian jatuhkan tabel itu dari database

Taruh tabel MY_MVIEW;

Dan cobalah untuk membuat kembali tampilan yang terwujud. Itu harus bekerja.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.