Traçabilité des opérations¶
Toutes les opérations réalisées par E-Maj et qui modifient d’une manière ou d’une autre un groupe de tables sont tracées dans une table nommée emaj_hist.
La structure de la table emaj_hist est la suivante.
Colonne | Type | Description |
---|---|---|
hist_id | BIGSERIAL | numéro de série identifiant une ligne dans cette table historique |
hist_datetime | TIMESTAMPTZ | date et heure d’enregistrement de la ligne |
hist_function | TEXT | fonction associée à l’événement |
hist_event | TEXT | type d’événement |
hist_object | TEXT | nom de l’objet sur lequel porte l’événement (groupe, table, séquence,…) |
hist_wording | TEXT | commentaires complémentaires |
hist_user | TEXT | rôle à l’origine de l’événement |
hist_txid | BIGINT | numéro de la transaction à l’origine de l’événement |
La colonne hist_function peut prendre les valeurs suivantes.
Valeur | Signification |
---|---|
ALTER_GROUP | modification d’un groupe de tables |
ALTER_GROUPS | modification de plusieurs groupes de tables |
CLEANUP_RLBK_STATE | nettoyage du code état des opérations de rollback récemment terminées |
COMMENT_GROUP | positionnement d’un commentaire sur un groupe |
COMMENT_MARK_GROUP | positionnement d’un commentaire sur une marque |
CONSOLIDATE_RLBK_GROUP | consolide une opération de rollback tracé |
CREATE_GROUP | création d’un groupe de tables |
DBLINK_OPEN_CNX | ouverture d’une connexion dblink pour un rollback |
DBLINK_CLOSE_CNX | fermeture d’une connexion dblink pour un rollback |
DELETE_MARK_GROUP | suppression d’une marque pour un groupe de tables |
DISABLE_EVENT_TRIGGERS | désactivation des triggers sur événements |
DROP_GROUP | suppression d’un groupe de tables |
EMAJ_INSTALL | installation ou mise à jour de la version d’E-Maj |
ENABLE_EVENT_TRIGGERS | activation des triggers sur événements |
FORCE_DROP_GROUP | suppression forcée d’un groupe de tables |
FORCE_STOP_GROUP | arrêt forcé d’un groupe de tables |
GEN_SQL_GROUP | génération d’un script psql pour un groupe de tables |
GEN_SQL_GROUPS | génération d’un script psql pour plusieurs groupes de tables |
LOCK_GROUP | pose d’un verrou sur les tables d’un groupe |
LOCK_GROUPS | pose d’un verrou sur les tables de plusieurs groupes |
LOCK_SESSION | pose d’un verrou sur les tables d’une session de rollback |
PROTECT_GROUP | pose d’une protection contre les rollbacks sur un groupe |
PROTECT_MARK_GROUP | pose d’une protection contre les rollbacks sur une marque d’un groupe |
PURGE_HISTORY | suppression dans la table emaj_hist des événements antérieurs au délai de rétention |
RENAME_MARK_GROUP | renommage d’une marque pour un groupe de tables |
RESET_GROUP | réinitialisation du contenu des tables de log d’un groupe |
ROLLBACK_GROUP | rollback des mises à jour pour un groupe de tables |
ROLLBACK_GROUPS | rollback des mises à jour pour plusieurs groupes de tables |
ROLLBACK_SEQUENCE | rollback d’une séquence |
ROLLBACK_TABLE | rollback des mises à jour d’une table |
SET_MARK_GROUP | pose d’une marque pour un groupe de tables |
SET_MARK_GROUPS | pose d’une marque pour plusieurs groupes de tables |
SNAP_GROUP | vidage des tables et séquences d’un groupe |
SNAP_LOG_GROUP | vidage des tables de log d’un groupe |
START_GROUP | démarrage d’un groupe de tables |
START_GROUPS | démarrage de plusieurs groupes de tables |
STOP_GROUP | arrêt d’un groupe de tables |
STOP_GROUPS | arrêt de plusieurs groupes de tables |
UNPROTECT_GROUP | suppression d’une protection contre les rollbacks sur un groupe |
UNPROTECT_MARK_GROUP | suppression d’une protection contre les rollbacks sur une marque d’un groupe |
La colonne hist_event peut prendre les valeurs suivantes.
Valeur | Signification |
---|---|
BEGIN | début |
END | fin |
EVENT TRIGGERS DISABLED | triggers sur événements désactivés |
EVENT TRIGGERS ENABLED | triggers sur événements activés |
LOG DATA TABLESPACE CHANGED | tablespace pour la table de log modifié |
LOG INDEX TABLESPACE CHANGED | tablespace pour l’index de log modifié |
LOG SCHEMA CHANGED | schéma de log modifié |
MARK DELETED | marque supprimée |
NAMES PREFIX CHANGED | préfixe des noms E-Maj modifié |
NOTICE | message d’information issu d’un rollback |
SCHEMA CREATED | schéma secondaire créé |
SCHEMA DROPPED | schéma secondaire supprimé |
TABLE ATTR CHANGED | attributs E-Maj pour la table modifiés |
WARNING | message d’avertissement issu d’un rollback |
Le contenu de la table emaj_hist peut être visualisé par quiconque dispose des autorisations suffisantes (rôles super-utilisateur, emaj_adm ou emaj_viewer)
Deux autres tables internes conservent également des traces des opérations effectuées :
- emaj_alter_plan liste les actions élémentaires réalisées lors de l’exécution d’opérations de modification de groupes de tables,
- emaj_rlbk_plan liste les actions élémentaires réalisées lors de l’exécution d’opérations de rollback E-Maj.
A chaque démarrage de groupe (fonction emaj_start_group()) et suppression des marques les plus anciennes (fonction emaj_delete_before_mark_group()), les événements les plus anciens de la table emaj_hist sont supprimés. Les événements conservés sont ceux à la fois postérieurs à un délai de rétention paramétrable, postérieurs à la pose de la plus ancienne marque active et postérieurs à la plus ancienne opération de rollback non terminée. Par défaut, la durée de rétention des événements est de 1 an. Mais cette valeur peut être modifiée à tout moment en insérant par une requête SQL le paramètre history_retention dans la table emaj_param. La même rétention s’applique aux contenus des tables qui historisent les actions élémentaires des opérations de modification ou de rollback de groupes de tables.