Этот вопрос относится к вопросу , который я выложил вчера , но с дополнительными последствиями.
Ситуация такова: я не могу сбросить ЛЮБУЮ таблицу. Вот пример:
SQL> CREATE TABLE FOO (BAR NUMBER) TABLESPACE SYSTEM
/
Table created.
SQL> SELECT COUNT(1) FROM FOO;
COUNT(1)
----------
0
SQL> DROP TABLE FOO;
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
ORA-06512: at line 19
Итак, таблица, кажется, существует, но я не могу ее уронить.
Обратите внимание на ошибку ORA-00604: ошибка произошла на рекурсивном уровне SQL 1 . Если я пытаюсь удалить несуществующую таблицу, эта ошибка не появляется:
SQL> DROP TABLE NON_EXISTING_TABLE
ERROR at line 1:
ORA-00942: table or view does not exist
Каким-то образом система не может найти таблицу в время отбрасывания .
Установка Oracle и сама БД новая (однажды).
РЕДАКТИРОВАТЬ - я повторил этот тест, используя другое табличное пространство и пользователя (я только что создал), и я получил немного другое поведение: используя SYS
, после того как я получил ошибку DROP
, я все еще могу ВЫБРАТЬ из таблицы. Однако, используя этого нового пользователя, после того как я получил ошибку DROP
, я больше не могу ВЫБРАТЬ из таблицы.
Решение
Мы обнаружили проблему: отсутствует MDSYS.SDO_GEOR_SYSDATA_TABLE, что препятствует операции удаления. Решением является восстановление этой таблицы. Вот полное решение от Gaurav Soni (кстати, большое спасибо).
Запустите скрипт catmd.sql (находится в каталоге $ ORACLE_HOME / md / admin).
Сценарий catmd.sql - это сценарий, который загружает все объекты, необходимые пространственному пространству Oracle, в базу данных. Затем удалите пользователя.
Вы также можете обратиться к оракулу металинкс
Шаги для ручной установки опции пространственных данных Oracle
Удаление пользовательских результатов в ORA-942 против SDO_GEOM_METADATA_TABLE