2010-05-12 4 views

ответ

4

Возможно, вам стоит обратиться в службу поддержки 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; 

И никогда не EVER ничего менять в схеме SYS снова!

EDIT: Только что заметил дубликат от СЕГОДНЯ: https://stackoverflow.com/questions/2816478/recovering-dual-table-in-oracle - здесь добавлены предложения.

-1

Двойной стол - это фиктивная таблица в системном табличном пространстве. Как пользователь, у вас нет права его бросить. если у вас есть своя двойная таблица в вашей схеме, вы можете играть вокруг нее. U может выполнять dml, отбрасывать его, обрезать и т. Д. Даже если u drop, u может воссоздать его снова из тех же сценариев, что и предыдущий.