Что делать, если с таблицей что-то сделали не то и выполнили 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;
Комментариев нет:
Отправить комментарий