Воссоздать таблицу 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, удалить его, обрезать его и т. Д. Даже если вы удалите его, вы можете заново создать его из тех же сценариев, что и в предыдущем.

Другие вопросы по тегам