2012-03-22 39 views
5

Tôi gặp sự cố lạ này kể từ hôm qua. Tôi đã thử một số tùy chọn và tôi thực sự cài đặt lại ORACLE và bản thân DB.Oracle - Bảng Zombie

Đây là vấn đề: Tôi có bảng này là một số loại zombie. Dưới đây là các triệu chứng:

SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='MYTABLE' 

Trả về bản ghi, có nghĩa là bảng tồn tại.

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'MYTABLE' 

Trả về tất cả các cột của MYTABLE. Cho đến nay rất tốt, bảng tồn tại.

SELECT * FROM MYTABLE 

Returns ORA-00.942: bảng hoặc xem không tồn tại. Tại thời điểm này tôi khá bối rối: bảng dường như tồn tại trên USERTABLES nhưng tôi không thể SELECT qua nó?

CREATE TABLE MYTABLE (Foo NUMBER) TABLESPACE MYTABLESPACE 

Returns: ORA-00.604: lỗi xảy ra ở cấp SQL đệ quy 1 ORA-00001: hạn chế duy nhất (SYS.I_OBJ2) vi phạm

Tôi không hiểu lỗi này. Nhưng điều tốt đẹp nhất vẫn chưa tới.

SELECT * FROM MYTABLE 

Đáng ngạc nhiên, truy vấn trên (bản sao chính xác của truy vấn thứ 3) trả về nhiều bản ghi ngay bây giờ! Hơn nữa, tôi nhận thấy rằng cột Foo không có mặt: bảng tôi bây giờ thấy là bảng ban đầu của tôi có các cột khác.

DROP TABLE MYTABLE 

bây giờ tôi cố gắng thả bàn và tôi nhận được các lỗi sau đây:

ORA-00.604: lỗi xảy ra ở cấp SQL đệ quy 1 ORA-00.942: bảng hoặc xem không tồn tại ORA -06.512: tại dòng 19

SELECT * FROM MYTABLE 

More bối rối hơn bao giờ hết, tôi cố gắng truy vấn ở trên, và sự ngạc nhiên bất ngờ, bàn không còn tồn tại.

Tôi không undestand này: bảng là trên USERTABLES nhưng tôi không thể SELECT trên nó, tuy nhiên, nếu tôi tạo một bảng mới có cùng tên, tôi nhận được một lỗi nhưng bây giờ tôi có thể SELECT trên phiên bản trước bảng đó với nhiều bản ghi.

Mọi suy nghĩ? Tôi thực sự cần giúp đỡ của bạn :(

EDIT - Tôi đã kiểm tra tại:.. Tôi không thể thả BẤT CỨ Bảng này chỉ có thể là một triệu chứng mới

Giải pháp

Vấn đề là rằng bảng MDSYS.SDO_GEOR_SYSDATA_TABLE bị thiếu và trình kích hoạt sự kiện thả đã cố gắng truy cập vào nó, tạo ra lỗi. Giải pháp đã khôi phục bảng đó.

+0

Có vẻ như bạn cần xem bảng thực - tránh vấn đề đồng nghĩa, v.v. Khi bạn chạy truy vấn để xem bảng có tồn tại không, bạn đã kết nối với ai? Đó có phải là người dùng hoặc hệ thống thông thường hay không? Chọn OWNER, TABLE_NAME trong truy vấn đầu tiên. Và cố gắng chỉ định tên đầy đủ, như trong OWNER.TABLE_NAME để xem bạn có nghĩ điều gì đang xảy ra thực sự là những gì đang xảy ra hay không. – MJB

+0

Bạn có chắc chắn 100% là _exactly_ ''MYTABLE'' chứ không phải' MyTable'' hay bất cứ thứ gì như thế. – Ben

+0

@MJB Tốt, nhưng tôi đã thử điều đó. USER_TABLES không có cột CHỦ SỞ HỮU, nhưng ALL_TABLE có. Tôi đã kiểm tra OWNER trên ALL_TABLE và tôi đã kết nối với người dùng đó. Tôi cũng đã cố gắng xác định tên đầy đủ nhưng không may mắn. – jpaires

Trả lời

1

Nếu có quyền, hãy thử truy vấn này:

SELECT * 
    FROM dba_objects 
WHERE object_name = 'MYTABLE'; 

Và xem những gì đối tượng tồn tại với tên đó. Nó có thể chỉ cho bạn đi đúng hướng.

+0

Kết quả của truy vấn đó trả về hai bản ghi Có hai bảng khác nhau với tên đó cho hai chủ sở hữu khác nhau (một trong số đó là Tôi là kết nối với, nhưng tôi không thể thả bảng khác). Tôi đã mong đợi rằng (hai bảng có cùng tên cho các chủ sở hữu khác nhau), không có gì ngạc nhiên ở đây. Bất kỳ ý tưởng nào khác – jpaires

1

Bạn không đủ điều kiện tên lược đồ khi cố gắng chọn và thả. CURRENT_SCHEMA phiên của bạn có thể khác với người dùng đăng nhập. Kiểm tra bằng cách thử

select SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual; 

Thay vì mô tả đầu ra là gì, bạn có thể sao chép/dán đầu ra hoàn chỉnh cho chúng tôi không?

Cuối cùng, bạn có thể loại trừ người nào đó đã làm sai từ điển không? Bạn biết đấy, SYSDBA có thể làm bất cứ điều gì ....

+2

Cảm ơn sự giúp đỡ, tôi đã phát hiện ra sự cố. Bảng MDSYS.SDO_GEOR_SYSDATA_TABLE bị thiếu và trình kích hoạt sự kiện thả đang cố truy cập nó. – jpaires

Các vấn đề liên quan