Как удалить странную таблицу с именем «BIN $ c + eOnMB3RbKSEfg / rsxtAQ == $ 0» из базы данных Oracle? - PullRequest
3 голосов
/ 17 июня 2019

Я новичок в Oracle, и для практики я создал несколько таблиц (клиент, водители, оплата, бронирование, местоположение, площадь, работа, job_history) в Oracle 11g, и после утверждения select * from cat я нашел странную таблицу с другимисозданные таблицы с именем "BIN $ c + eOnMB3RbKSEfg / rsxtAQ == $ 0". Я не знаю, почему эта таблица создана.

Я пытался удалить эту таблицу через

drop table BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0;

, новыдает ошибку:

удалить таблицу BIN $ c + * eOnMB3RbKSEfg / rsxtAQ == $ 0

ОШИБКА в строке 1: ORA-00933: команда SQL неверназакончилась

что мне сделать, чтобы удалить его?

1 Ответ

8 голосов
/ 17 июня 2019

То, что вы видите, является удаленной таблицей в RECYCLEBIN

Вы можете получить оригинальное имя таблицы с этим запросом

SELECT original_name FROM RECYCLEBIN where OBJECT_NAME = 'BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0';

Обратите внимание, что (с настройкой вашего параметра), если вы УДАЛИТЕ таблицу, она не будет полностью удалена, но переместится в корзину.

Вы можете пропустить это, используя опцию PURGE.

DROP TABLE xxx PURGE;

Чтобы удалить таблицу из корзины, вы должны заключить имя в двойные кавычки (так как это недопустимое имя) и использовать оператор PURGE (не DROP - который вызовет ORA-38301: can not perform DDL/DML over objects in Recycle Bin) .

PURGE TABLE "BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0"

В качестве альтернативы вы можете использовать original_name, полученный с помощью запроса выше:

PURGE TABLE {your_original_name};

Чтобы полностью очистить корзину, используйте это утверждение (с пользователем таблицы propper)

PURGE RECYCLEBIN;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...