Воссоздать таблицу Oracle DUAL
Есть ли способ создать / воссоздать двойную таблицу в Oracle? Это было случайно уронено.
2 ответа
Возможно, вам следует обратиться в службу поддержки Oracle.
У вас есть резервная копия? Если это так, восстановите таблицу из резервной копии. В противном случае (и если связываться с Oracle не вариант для вас)...
У Oracle есть специальные оптимизации для DUAL, но я не знаю, есть ли что-то особенное в самой таблице. Я бы просто отнесся к этому как к обычному столу и посмотрю, что получится. Попробуй это:
Подключитесь как SYSDBA и затем выполните эти команды:
CREATE TABLE SYS.DUAL
(
DUMMY VARCHAR2(1 BYTE)
);
INSERT INTO SYS.DUAL VALUES ( 'X' );
COMMIT;
GRANT SELECT ON SYS.DUAL TO public WITH GRANT OPTION;
CREATE PUBLIC SYNONYM DUAL FOR SYS.DUAL;
И никогда НИКОГДА не меняйте ничего в схеме SYS!
РЕДАКТИРОВАТЬ: Только что заметил дубликата от СЕГОДНЯ: https://stackru.com/questions/2816478/recovering-dual-table-in-oracle - добавлены предложения здесь.
Oracle становится странным, если DUAL
случайно уронили.
SQLPlus говорит SP2-0575: Use of Oracle SQL feature not in SQL92 Entry Level.
если нет sys.DUAL
или текущий пользователь не имеет права выбирать из него.
Похоже, что Oracle определяет функции, связанные с версией, в соответствии с DUAL
.
Dual Table - фиктивная таблица в системном табличном пространстве. Как пользователь, у вас нет права на его удаление. Если у вас есть собственный двойной стол в вашей схеме, вы можете поиграть с ним. Вы можете выполнить dml, удалить его, обрезать его и т. Д. Даже если вы удалите его, вы можете заново создать его из тех же сценариев, что и в предыдущем.