среда, 25 апреля 2012 г.

Использование FLASHBACK TABLE для восстановления данных


Что делать, если с таблицей что-то сделали не то и выполнили COMMIT?

В случае с Oracle нет ничего проще - достаточно просто откатить таблицу к нужному моменту времени с помощью команды FLASHBACK TABLE.

Рассмотрим откат на примере таблицы TEST_1

1. Проверяем есть ли право ROW MOVEMENT на нашу таблицу:
SELECT TABLE_NAME,ROW_MOVEMENT FROM USER_TABLES WHERE TABLE_NAME='TEST_1';


2. Если запрос выдает DISABLE - даем право командой:
ALTER TABLE TEST_1 ENABLE ROW MOVEMENT;

Если этого не сделать, то при выполнении команды FLASHBACK TABLE будем выходить на ошибку:
ORA-08189: cannot flashback row movement is not enabled

3. Самый интересный этап - восстанавливаем старое состояние таблицы TEST_1:
FLASHBACK TABLE TEST_1 TO TIMESTAMP 
      TO_TIMESTAMP('25.04.2012 12:00', 'DD.MM.YYYY HH24:MI')

4. Возвращаем права обратно, если надо:
ALTER TABLE TEST_1 DISABLE ROW MOVEMENT;

Комментариев нет:

Отправить комментарий