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 *
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.
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)
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;
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.