Jeśli nie wykonamy polecenia COMMIT zmiany łatwo jest odwołać poleceniem ROLLBACK.
Jesli jednak użyjemy COMMIT to wtedy do przywrócenia zmian możemy użyć ORACLE FLASHBACK.
Wykorzystywany jest wtedy przestrzeń UNDO TABLESPACE oraz parametr UNDO_RETENTION określający minimalny czas przechowywania danych.
Ważnym pojęciem jest też REDO LOG czyli dziennik zmian transakcji.
Różnica między UNDO i REDO jest taka, że w UNDO przechowywane są dane krótkotrwale, a w REDO zawiera pełne wektory zmian zachowywane przez pełen okres istnienia bazy danych.
Istotnym pojęciem w kwestii przywracania danych jest SCN czyli System Change Number. Jest to rodzaj zegara wyznaczającego momenty zatwierdzania transakcji niepowiązany z ogólną datą i godziną w bazie danych.
SELECT
DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER
FROM DUAL;
Ustawienia bazy pod Oracle Flashback:
Wypisanie parametrów
select * from v$parameter where name like 'undo%'
Wypisanie tablespaces
select * from dba_tablespaces
Zmiana parametru RETENTION
alter tablespace undotbs1 retention guarantee
Pokazanie obrazu tabeli w danym momencie
SELECT * FROM TEST_TABLE
AS OF TIMESTAMP TO_TIMESTAMP('08-09-2023 17:16:40','dd-mm-yyyy hh24:mi:ss');
Oracle flashback query - weryfikowanie zmian w tabeli
SELECT
ID, name, num
, VERSIONS_STARTSCN
, VERSIONS_STARTTIME
, VERSIONS_ENDSCN
, VERSIONS_ENDTIME
, VERSIONS_XID
, VERSIONS_OPERATION
FROM TEST_TABLE
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;
VERSION_OPERATION:
- D - Delete
- I - Insert