FLASHBACK DATA ARCHIVE

Noto anche come Oracle Total Recal.

La colonna TUNED_UNDORETENTION della vista V$UNDOSTAT indica per quanto tempo è conservato un undo nel tablespace di riferimento. Questo parametro è visibile anche dalla seguente query:
select * from v$parameter where name like '%undo%'; 
oppure
show parameter undo;

Di default i parametri di inizializzazione del database sono impostati come segue:

UNDO_MANAGEMENT='AUTO'
UNDO_TABLESPACE='UNDOTBS1'
UNDO_RETENTION=900 (secondi)

Dopo quel tempo, i dati di undo sono in stato "expired" e quindi possono essere sovrascritti dal database, con nuovi dati di undo, se non c'è spazio nel tablespace undo, a meno che in fase di creazione del tablespace undo si utilizzi la clausola RETENTION GUARANTEE che assicura che non vengono cancellati i dati di undo "expired" a scapito del fallimento di nuove transazioni . 
Per fare questo però occorre creare un flashback data archive.

1) Creare un archivio, ad esempio, che usa 1 GB del tablespace tbs01 e i dati hanno un tempo di retention di 1 anno.
CREATE FLASHBACK ARCHIVE fla01
TABLESPACE tbs01
[ QUOTA 1G ]
RETENTION 1 YEAR;

2) Abilitare una tabella ad essere tracciata nell'archivio.
ALTER TABLE emp_1  FLASHBACK ARCHIVE fla01;

3) Visualizzare lo storico dei dati.
SELECT  *
FROM emp_1
AS OF TIMESTAMP TO_TIMESTAMP ('2018-10-09 12:39:00', 'YYYY-MM-DD HH:MI:SS')

where DEPARTMENT_ID = 100;

4) Disabilitate il data archive di una tabella.
ALTER TABLE emp_1  NO FLASHBACK ARCHIVE;

Quando termina lo spazio del flashback data archive compare il messaggio ORA-55617 e ORA-55623 e può essere risolto aumentando la quota o estendendo il tablespace usato.

ALTER FLASHBACK ARCHIVE fla01
ADD TABLESPACE tbs01 QUOTA 1 GB;

- Modificare il tempo di retention.
ALTER FLASHBACK ARCHIVE fla01 MODIFY RETENTION 2 YEAR;

Se ad esempio il tempo di retention era 5 anni, vengono cancellati tutti i dati più vecchi di 2 dal flashback archive fla01.

- Cancellare i dati più vecchi di due giorni dall'archivio fla01.
ALTER  FLASHBACK ARCHIVE fla01 PURGE BEFORE TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' day);

- Cancellare l'archivio fla01; questa azione non cancella il tablespace.
DROP FLASHBACK ARCHIVE fla01;


Di seguito alcune tabelle utili per i controlli.

select * from dba_flashback_archive

select * from dba_flashback_archive_ts

select * from user_flashback_archive_tables

Il processo di backgroud oracle - FBDA - scrive nell'archive lo stato delle righe delle tabelle monitorare che subiscono una modifica che termina con la commit. Quindi salva il loro valore prima della modifica. Inoltre gestisce in automatico lo spazio dell'archive, la retention e l'organizzazione del tablespace.

Sulla tabelle archiviate non è possibile effettuare le seguenti operazioni
truncate table, drop, rename e comandi alter per dropppare, modificare e rinominare una colonna.


Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database