Ноя 032011
 

Начиная с версии 10g в ORACLE появляется т.н. корзина (recycle bin). Если она включена (по умолчанию), то при удалении таблицы с помощью конструкции DROP TABLE, таблица не удаляется, а просто переименовывается, оставаясь в табличном пространстве пользователя.
Посмотреть содержимое корзины можно так:

-- пользовательская корзина:
SELECT * FROM recyclebin;
-- все корзины:
SELECT * FROM dba_recyclebin;

Восстановить удалённую таблицу просто:

FLASHBACK TABLE my_dropped_table TO BEFORE DROP;

Навсегда удалить таблицу можно так:

-- либо при удалении указать опцию purge
DROP TABLE my_table PURGE;
-- либо в представлении recylebin 
-- найти её новое имя и сделать
PURGE TABLE "BIN$HGnf59/7rRPgQPeM/qQoRw==$0";

А вот так можно почистить корзину:

-- чистим свою
PURGE RECYCLEBIN;
-- чистим все
PURGE DBA_RECYCLEBIN;

Пользоваться корзиной или нет - личное дело каждого администратора. Если есть желание её отключить, то сделать это без перезапуска не получится:

ALTER SYSTEM SET recyclebin=OFF SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

Кроме того, поведением корзины можно управлять на уровне сессии:

ALTER SESSION SET recyclebin=OFF;

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)