У меня такая странная проблема со вчерашнего дня.Я попробовал несколько вариантов, и я фактически переустановил 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, но я не могу выбрать SELECT по ней?
CREATE TABLE MYTABLE (Foo NUMBER) TABLESPACE MYTABLESPACE
Возвращает: ORA-00604: ошибка произошла на рекурсивном SQL-уровне 1 ORA-00001: уникальное ограничение (SYS.I_OBJ2) нарушено
Я не понимаю эту ошибку.Но лучшее еще впереди.
SELECT * FROM MYTABLE
Удивительно, но вышеприведенный запрос (точная копия третьего запроса) возвращает несколько записей сейчас!Более того, я заметил, что столбец Foo отсутствует: таблица, которую я сейчас вижу, является моей исходной таблицей, в которой были другие столбцы.
DROP TABLE MYTABLE
Я сейчас пытаюсь удалить таблицу и получаю следующие ошибки:
ORA-00604: ошибка произошла на уровне рекурсивного SQL 1 ORA-00942: таблица или представление не существует ORA-06512: в строке 19
SELECT * FROM MYTABLE
Еще больше запутаночем когда-либо, я пытаюсь выполнить приведенный выше запрос и, к удивлению, таблица больше не существует.
Я не понимаю этого: таблица находится в USERTABLES, но я не могу выбрать SELECT по ней, однако, если я создаюновая таблица с тем же именем, я получаю сообщение об ошибке, но теперь я могу ВЫБРАТЬ поверх предыдущей версии этой таблицы с несколькими записями.
Есть мысли?Мне действительно нужна ваша помощь: (
РЕДАКТИРОВАТЬ - Я проверил сейчас: я не могу удалить ЛЮБУЮ таблицу. Это может быть просто новый симптом.
Решение
Проблема заключалась в том, что таблица MDSYS.SDO_GEOR_SYSDATA_TABLE отсутствовала, и триггер события отбрасывания пытался получить к ней доступ, генерируя ошибку. Решением было восстановление этой таблицы.