Первое, вы фиксируете это изменение? Если нет, вы можете просто отправить rollback
, чтобы вернуть свои изменения.
Предполагая, что вы зафиксировали свои изменения, другие пользователи одновременно изменяют таблицу? Нужно ли сохранять изменения, внесенные другими, и только отменить изменения, внесенные вами в транзакцию? Или вы можете восстановить всю таблицу до момента, прежде чем ваши изменения были сделаны?
Если вы можете восстановить всю таблицу в момент времени
FLASHBACK TABLE <<table name>>
TO TIMESTAMP(systimestamp - interval '10' minute)
возвращает таблицу в состояние, которое было 10 минут назад, предполагая, что UNDO
нужно сделать так, остается доступным (вы только имеют ограниченное время после совершения ошибки, чтобы иметь возможность воспроизвести эту ошибку). Для того, чтобы выдать FLASHBACK TABLE
, вы также должны убедиться, что
- таблица позволила движение строки
ALTER TABLE <<table name>> ENABLE ROW MOVEMENT
- Вы должны
FLASHBACK
привилегии на столе или FLASHBACK ANY TABLE
системную привилегию.
Всегда полезно указать точную версию Oracle, которую вы используете вместе с изданием (т. Oracle 11.2.0.1 Enterprise Edition). Такие вещи существенно меняются от выпуска до выпуска, а разные версии имеют разную функциональность. Я сделал некоторые догадки, поскольку время имеет существенное значение (многие подходы полагаются на присутствие «UNDO», который, в зависимости от вашей конфигурации, может дать вам только окно в несколько минут). Но чем конкретнее, тем лучше. –