У меня возникла эта странная проблема со вчерашнего дня. Я попробовал несколько опций, и я действительно переустановил ORACLE и сам БД.Oracle - Zombie Table
Вот проблема: у меня есть эта таблица, которая является чем-то зомби. Вот эти симптомы:
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, но я не могу выбрать ее, однако, если я создаю новую таблицу с тем же именем, я получаю сообщение об ошибке, но теперь я могу ВЫБРАТЬ над предыдущей версией эта таблица с несколькими записями.
Любые мысли? Мне очень нужна ваша помощь :(
EDIT - Я проверил в настоящее время:.. Я не могу отказаться от любой таблицы Это может быть просто новый симптом
Решение
Проблема была что таблица MDSYS.SDO_GEOR_SYSDATA_TABLE отсутствовала, и триггер события кавычки пытался получить к ней доступ, генерируя ошибку. Решение восстанавливало эту таблицу.
Похоже, вам нужно взглянуть на реальную таблицу - избежать проблемы с синонимом и т. Д. Поэтому, когда вы запускаете запрос, чтобы увидеть, существует ли таблица, с кем вы связаны? Это обычный пользователь или система, или что? Выберите OWNER, TABLE_NAME в первом запросе. И попробуйте указать полное имя, как в OWNER.TABLE_NAME, чтобы увидеть, происходит ли то, что вы ДУМАЕТ, действительно то, что происходит. – MJB
Вы на 100% уверены, что это _exactly_ '' MYTABLE'', а не '' MyTable'' или что-то в этом роде. – Ben
@ MJB Хорошая мысль, но я уже пробовал это. USER_TABLES не имеет колонки OWNER, но ALL_TABLE имеет. Я проверил ВЛАДЕЛЕЦ на ALL_TABLE, и я подключен к этому пользователю. Я также попробовал указать полное имя, но не повезло. – jpaires