Oracle – таблица зомби

У меня такая странная проблема со вчерашнего дня. Я попробовал несколько опций, и я действительно переустановил ORACLE и сам БД.

Вот проблема: у меня есть эта таблица, которая немного зомби. Вот симптомы:

SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='MYTABLE' 

Возвращает запись, что означает, что таблица существует.

 SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'MYTABLE' 

Возвращает все столбцы MYTABLE. Настолько хорошо, что таблица существует.

 SELECT * FROM MYTABLE 

Возвращает ORA-00942: таблица или представление не существует . На данный момент я совершенно смущен: таблица, похоже, существует на USERTABLES, но я не могу выбрать ее?

 CREATE TABLE MYTABLE (Foo NUMBER) TABLESPACE MYTABLESPACE 

Возвращает: ORA-00604: ошибка на рекурсивном уровне SQL 1 ORA-00001: нарушено уникальное ограничение (SYS.I_OBJ2)

Я не понимаю эту ошибку. Но лучшее еще впереди.

 SELECT * FROM MYTABLE 

Удивительно, что вышеупомянутый запрос (точная копия 3-го запроса) теперь возвращает несколько записей! Более того, я заметил, что столбец Foo отсутствует: таблица, которую я теперь вижу, это моя начальная таблица, в которой были другие столбцы.

 DROP TABLE MYTABLE 

Теперь я пытаюсь отказаться от таблицы, и я получаю следующие ошибки:

ORA-00604: ошибка на рекурсивном уровне SQL 1 ORA-00942: таблица или представление не существует ORA-06512: строка 19

 SELECT * FROM MYTABLE 

Более запутанный, чем когда-либо, я пробую вышеупомянутый запрос и, удивляя удивление, таблица больше не существует.

Я не объясняю это: таблица находится на USERTABLES, но я не могу выбрать ее, однако, если я создаю новую таблицу с тем же именем, я получаю сообщение об ошибке, но теперь я могу SELECT над предыдущей версией этой таблицы с несколькими записей.

Есть предположения ? Мне действительно нужна твоя помощь 🙁

EDIT – я проверил сейчас: я не могу отказаться от ЛЮБОЙ таблицы. Это может быть просто новым симптомом.

Решение

Проблема заключалась в том, что таблица MDSYS.SDO_GEOR_SYSDATA_TABLE отсутствовала, и триггер события переполнения пытался получить к ней доступ, породив ошибку. Решением было восстановление этой таблицы.

Если у вас есть привилегии, попробуйте этот запрос:

 SELECT * FROM dba_objects WHERE object_name = 'MYTABLE'; 

И посмотрите, какие объекты существуют с этим именем. Это может указывать на вас в правильном направлении.

При попытке выбрать и отбросить имена схемы не удалось. CURRENT_SCHEMA вашей сессии может отличаться от пользователя входа в систему. Проверьте, попробовав

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

Вместо того, чтобы описывать, что такое выход, не могли бы вы скопировать / вставить полный вывод для нас?

Наконец, вы можете исключить, что кто-то испортил словарь? Знаешь, SYSDBA может все что угодно …