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
ADJUST_GROUP_PROPERTIES ajustement du contenu de la colonne group_has_waiting_changes de la table emaj_group
ALTER_GROUP modification d’un groupe de tables
ALTER_GROUPS modification de plusieurs groupes de tables
ASSIGN_SEQUENCE affectation d’une séquence à un groupe de tables
ASSIGN_SEQUENCES affectation de séquences à un groupe de tables
ASSIGN_TABLE affectation d’une table à un groupe de tables
ASSIGN_TABLES affectation de tables à un groupe 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
EXPORT_GROUPS export d’une configuration de groupes de tables
EXPORT_PARAMETERS export d’une configuration de paramètres E-Maj
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
IMPORT_GROUPS import d’une configuration de groupes de tables
IMPORT_PARAMETERS import d’une configuration de paramètres E-Maj
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
MODIFY_TABLE modification des propriétés d’une table
MODIFY_TABLES modification des propriétés de tables
MOVE_SEQUENCE déplacement d’une séquence vers un autre groupe de tables
MOVE_SEQUENCES déplacement de séquences vers un autre groupe de tables
MOVE_TABLE déplacement d’une table vers un autre groupe de tables
MOVE_TABLES déplacement de tables vers un autre groupe de tables
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
REMOVE_SEQUENCE suppression d’une séquence de son groupe de tables
REMOVE_SEQUENCES suppression de séquences de leur groupe de tables
REMOVE_TABLE suppression d’une table de son groupe de tables
REMOVE_TABLES suppression de tables de leur groupe de tables
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
SYNC_DEF_GROUP synchronisation de la table emaj_group_def
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
DELETED PARAMETER paramètre supprimé dans emaj_param
EMAJ_GROUP_DEF SYNCHRONIZED groupe de tables synchronisé dans emaj_group_def
END fin
EVENT TRIGGERS DISABLED triggers sur événements désactivés
EVENT TRIGGERS ENABLED triggers sur événements activés
GROUP_CREATED nouveau groupe de tables créé
INSERTED PARAMETER paramètre inséré dans emaj_param
LOG DATA TABLESPACE CHANGED tablespace pour la table de log modifié
LOG INDEX TABLESPACE CHANGED tablespace pour l’index de log modifié
LOG_SCHEMA CREATED schéma secondaire créé
LOG_SCHEMA DROPPED schéma secondaire supprimé
MARK DELETED marque supprimée
NOTICE message d’information issu d’un rollback
PRIORITY CHANGED priorité modifiée
SEQUENCE ADDED séquence ajoutée à un groupe de tables actif
SEQUENCE MOVED séquence déplacée d’un groupe à un autre
SEQUENCE REMOVED séquence supprimée d’un groupe de tables actif
TABLE ADDED table ajoutée à un groupe de tables actif
TABLE MOVED table déplacée d’un groupe à un autre
TABLE REMOVED table supprimée d’un groupe de tables actif
UPDATED PARAMETER paramètre modifié dans emaj_param
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.