Tại sao trong Oracle 11gR2 tôi không thể bỏ chế độ xem cụ thể hóa với cùng một người dùng đã tạo ra nó?


11

Tôi đã tạo một chế độ xem cụ thể với DI_TEST_ALngười dùng, hãy đặt tên cho nó MY_MVIEW. Nó xuất hiện trong USER_OBJECTSbảng như MATERIALIZED VIEW, tôi cố gắng thả nó, tôi nhận được một thông báo thành công, nhưng đối tượng vẫn còn đó. Trong thực tế nếu tôi cố gắng tạo lại nó, tôi gặp một lỗi như "đối tượng đã tồn tại".

Tôi thấy rằng có một bảng có cùng tên thuộc về lược đồ khác. Tôi cho rằng điều đó không gây ra vấn đề, nhưng tôi cảm thấy muốn đề cập đến nó.

Đây là đầu ra 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> 

Tôi đã kiểm tra lại sự cho phép của mình và DROP ALL MATERIALIZED VIEWSđược cấp cho DI_TEST_ALngười dùng.


DO_OPP_SEARCH_MVIEW
Jack nói hãy thử topanswers.xyz

Nếu bạn muốn loại bỏ chế độ xem cụ thể hóa MY_MVIEW, hãy thả nó như vậy: DROP MATERIALIZED XEM XEM MY_MVIEW. ATM, bạn đang đánh rơi thứ gì đó khác và điều đó có thể rất quan trọng ...
Kerri Shotts

1
Tôi đang cố gắng bỏ MY_MVIEW, tôi đã thay đổi tên trong ví dụ cho ngắn gọn nhưng tôi quên mất bit đó ... Có ý tưởng nào để gỡ lỗi này không? Tại sao oracle nói nó bị rớt nhưng không phải vậy? Chúc mừng
basilikode

Bạn có hợp đồng hỗ trợ không? Có một số lỗi 10g gây ra những gì bạn đang nhìn thấy, có lẽ chúng vẫn ở xung quanh. Tôi đã cố gắng sao chép so với 11gR2 nhưng không thể. Có lẽ cung cấp một kịch bản hoàn chỉnh từ bảng ban đầu và MV mà những người khác có thể cố gắng sao chép.
Matthew Watson

Cố gắng đưa STATUSvào lựa chọn trên ALL_OBJECTS. Tôi cũng có vấn đề này, và đối với tôi, trạng thái trên quan điểm cụ thể hóa là INVALID.
sợ

Câu trả lời:


10

Kết nối dưới dạng sysdba và kiểm tra xem có bất kỳ mục nhập nào trong dba_summaries cho MV không. Nếu có chạy,

drop summary <OWNER>.<MV_NAME>;`

Cảm ơn người bạn đời, điều đó đã ngăn chặn hoàn toàn quan điểm cụ thể hóa ...
basilikode

Tôi có vấn đề chính xác này, và MV đã được liệt kê trong dba_summaries. Vấn đề là khi tôi cố chạy DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, tôi gặp lỗi ORA-00950 ... tùy chọn DROP không hợp lệ .
kinh ngạc

@awe cố gắng kết nối cơ sở dữ liệu của bạn dưới dạng / sysdba. Sau đó, bạn có thể sử dụng lệnh DROP SUMMARY.
Atilla Ozgur

0

Tôi đã đối mặt với vấn đề tương tự khi tôi cố gắng bỏ chế độ xem cụ thể hóa, nó nói View không tồn tại. Nếu tôi cố gắng tạo nó, nó nói Tên đã tồn tại. Đây là một lỗi trong Oracle.

Trước khi bỏ chế độ xem, truy vấn trên bảng all_objects.

SQL: CHỌN * TỪ ALL_OBJECTS WHERE OBarget_NAME = 'MY_MVIEW'; Nó sẽ trả về 2 bản ghi, ojbect_type = TABLE và Object_type = XEM MATERIALIZED.

Nhưng nếu nó chỉ hiển thị một bản ghi với Object_type = Table thì hãy bỏ bảng đó khỏi cơ sở dữ liệu

Bỏ bảng MY_MVIEW;

Và cố gắng tạo lại quan điểm cụ thể hóa. Nó nên hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.