Oracle Flashback

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:

  • Parametr UNDO_MANAGEMENT ustawiony na wartość AUTO
  • Parametr UNDO_RETENTION ma ustawioną wartość (domyslna wartość 900) - oznacza on przechowywania danych czas w sekundach,
  • Mamy utworzoną przestrzeń UNDO TABLESPACE wraz z parametrem RETENTION na wartość GUARANTEE (oznacza to gwarancje na zapisywanie danych w tablespace).


    Wypisanie parametrów

    select * from v$parameter where name like 'undo%'

    flashback1

    Wypisanie tablespaces

    select * from dba_tablespaces

    flashback2

    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
  • Tags: