Flashback Data Archive disponible en Standard Edition

Non … vous ne rêvez pas !
Suite à la modification du paramétrage FDA par défaut introduit en version 12c (compression et dédoublonnage), l’option Advanced compression qui était jusqu’alors obligatoire pour utiliser le FDA, ne l’est plus.
Flashback Data Archive est donc désormais disponible en Standard Edition, et ce à partir de la version 11.2.0.4.
FDA : Flashback Data Archive
 
Flashback Data Archive, également baptisé Total Recall lors de sa sortie en version Oracle 11gR2, permet d’archiver (ou d’historiser) toutes les modifications effectuées sur une table.
La consultation de ces données archivées peut être ensuite réalisée via une simple requête SQL aux airs de FLASHBACK QUERY comme par exemple :

SELECT * FROM HR.EMPLOYEES AS OF TIMESTAMP sysdate - 365 WHERE EMPLOYEE_ID = 196 ;

 
Bien que la consultation des données archivées ressemble étrangement au FLASHBACK QUERY, la très grande différence entre le FLASHBACK QUERY et l’usage du FLASHBACK DATA ARCHIVE, est que les données ne sont pas récupérées du tablespace UNDO mais d’un tablespace dédié auquel on peut associer un nom et une période de rétention, au delà de laquelle Oracle fera automatiquement la purge.
Du coup, non seulement nous disposons de la volumétrie que l’on souhaite (chaque table peut disposer de son propre tablespace d’archives), mais le moteur Oracle gère également pour vous toutes les problématiques de purge de ces données archivées de façon automatique et par rapport à la période de rétention souhaitée.
La création de ce tablespace d’archivage est aussi simple que ce qui suit (on crée un tablespace classique auquel on associera un nom qui sera utilisé pour stocker les archives des modifications de la table, ainsi qu’une période de rétention) :

CREATE TABLESPACE ARCHIVES_EMPLOYEES DATAFILE '+DATA' SIZE 500m AUTOEXTEND ON ;
CREATE FLASHBACK ARCHIVE FDA_EMPLOYEES TABLESPACE ARCHIVES_EMPLOYEES RETENTION 2 YEAR ;

Enfin, pour archiver les données de la (ou les) table(s) dans ce tablespace d’archives, et toujours avec la même simplicité :

ALTER TABLE HR.EMPLOYEES FLASHBACK ARCHIVE FDA_EMPLOYEES ;

Note : toutes ces commandes de mise en œuvre du flashback data archive nécessitent le privilège FLASHBACK ARCHIVE ADMINISTER pour pouvoir être exécutées.
Ca y est, votre système d’archivage est prêt à l’emploi et la purge du tablespace contenant les archives est assurée automatiquement par Oracle.
Cette nouvelle possibilité est apparue avec la version 12c car à partir de cette version, les données archivées sont par défaut stockées sans les options de compression et de déduplication.
Par conséquent, plus besoin de l’option Advanced Compression, et possibilité d’utiliser l’option en Standard Edition.
Vous pouvez toutefois compresser et dédoublonner les données archivées en utilisant la commande qui suit, mais dans ce cas vous ne pourrez l’utiliser qu’en version Enterprise et avec les options requises … comme avant   🙂

CREATE FLASHBACK ARCHIVE FDA_EMPLOYEES TABLESPACE ARCHIVES_EMPLOYEES RETENTION 2 YEAR  OPTIMIZE DATA  ;

Cette nouvelle fonctionnalité a également été introduite dans la version 11.2.0.4, et uniquement la version finale de 11gR2, ce qui veut dire que dans les versions 11.2.0.1, 11.2.0.2 et 11.2.0.3 vous ne bénéficiez pas de cette nouveauté.
N’hésitez donc pas à utiliser cette option qui est simple à utiliser et se contrôle assez facilement au travers des principales vues suivantes :
DBA_FLASHBACK_ARCHIVE                   : liste des « containers » (flashback archives) dans lesquels vous pouvez                                                                                         archiver  les modifications d’une ou plusieurs tables.
DBA_FLASHBACK_ARCHIVE_TS            : liste des tablespaces sur lesquels des flashback archives sont créés
DBA_FLASHBACK_ARCHIVE_TABLES  : liste des tables pour lesquelles vous avez décidé d’archiver les                                                                                                    modifications.
Attention :
Si vous cherchez à consulter une donnée en dehors de la période de rétention définie, vous aurez un message d’erreur vous le signalant :

ERROR at line 1:
ORA-08180: no snapshot found based on specified time
ORA-06512: at "SYS.TIMESTAMP_TO_SCN", line 1