Flashback query

Co to jest?

Flashback query (FQ dla skrótu) to rodzaj zapytania sql pozwalający na obejrzenie danych na określony moment czasu. FQ wykorzystuje tak zwane segmenty undo .

Kiedy flashback query może się przydać

Użytkownik SCOTT wykasował dane z tabeli employees i zatwierdził transakcję. Ponieważ transakcja jest zatwierdzona danych nie można już odzyskać w normalny sposób. Pechowa transakcja została dokonana ok 40 minut temu. Z pomocą przychodzi nam wtedy 'flashback query'.

Jak to się robi

Zapytanie o jedną godzinę wstecz:

select * from
(  select  * from employees )
AS OF TIMESTAMP SYSDATE  -(1/24) ;

Kiedy flashback query nie zadziała

Niestety w sytuacji gdy dokonamy operacji DDL, np DROP, ALTER czy CREATE, FQ nie pomoże. Nie będziemy w stanie uzyskać danych sprzed takiej operacji

ORA-01466: nie można odczytać danych - definicja tabeli jest zmieniona

Jeżeli nasze zapytanie będzie dotyczyło stanu tabeli sprzed zbyt długiego czasu dostaniemy błąd

ORA-08180: nie znaleziono migawki opartej na podanym czasie