Thursday, June 28, 2007

Быстро сфлэшбэчиться 2 (to before drop;)

В продолжение своей темки "Быстро сфлэшбэчиться" провел тестики с "корзиной" при удалении тестовой таблички adm_office на основе "Using Oracle's recycle bin, by Natalka" и "Ретроспективная (Flashback) таблица", где Arup неплохо вставил - "В некоторых случаях этим пользователем-неудачником можете оказаться и вы – АБД!". С чем я согласен :)

drop table adm_office; -- случайное удаление таблицы
select * from tab; -- видим строку с переименованной таблицей в системную
select * from recyclebin; --удостоверимся, что это наша удаленная таблица
--если в sqlplus, то можно SQL> show recyclebin
flashback table adm_office to before drop; -- сфлэшбэчим удаленную табличку

Итак я представил, что кто-то из юзеров удалил таблицу в своей схеме и позвонил мне. Я зашел под system'ом и не увидел удаленной таблицы в recyclebin. Тогда делаю запрос
select owner, object_name, original_name, type, droptime, can_undrop, can_purge from dba_recyclebin;
и вижу то, что нужно - схему, имя таблицы, время ее удаления и возможность восстановления!
Можно проверить эту табличку запросом к переименованной табличке, например:
select * from СХЕМА."BIN$kffqEdSnQd2u6rEnet3Pzg==$0"
Теперь осталось сфлэшбэчить данную табличку с указанием ее схемы-владельца
flashback table СХЕМА.adm_office to before drop;

No comments: