В случае, если у вас случайно удалились данные в таблице
Можно воспользоваться таким методом продемонстрированном в примере (для Oracle 9i и выше):
CREATE TABLE q (a NUMBER);
INSERT INTO q VALUES(10);
INSERT INTO q VALUES(15);
SELECT * FROM q ;
---------------
10
15
COMMIT;
-- выдерживаем паузу в несколько минут
DELETE FROM q;
SELECT * FROM q AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' MINUTE) where rownum=1;
----------------
10
Интервал можно задать до 4-х дней (около 6000 минут). Для большего интервала выскочит ошибка. Но реально можно вытянуть только те данные, которые сохранились в сегментах отката. Соответственно, если данные были удалены через truncate table, то их вытянуть будет невозможно, так как они не записываются в roolback при этой операции. То же самое будет и в ситуации, если на сервере интенсивно идут операции update / insert / delete и удалённые данные вытеснятся новыми операциями.