Saya membuat tampilan terwujud dengan DI_TEST_AL
pengguna, sebut saja MY_MVIEW
. Itu muncul di USER_OBJECTS
tabel 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 VIEWS
diberikan kepada DI_TEST_AL
pengguna.
oracle-11g-r2
materialized-view
basilikode
sumber
sumber
DO_OPP_SEARCH_MVIEW
?STATUS
di pilih aktifALL_OBJECTS
. Saya juga memiliki masalah ini, dan bagi saya, status pada tampilan terwujud adalahINVALID
.Jawaban:
Hubungkan sebagai sysdba dan periksa apakah ada entires di dba_summaries untuk MV. Jika ada yang dijalankan,
sumber
dba_summaries
. Masalahnya adalah ketika saya mencoba menjalankanDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;
, saya mendapatkan kesalahan ORA-00950 ... opsi DROP tidak valid .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.
sumber