Créer l’extension emaj dans une base de données

Si une extension existe déjà dans la base de données, mais dans une ancienne version d’E-Maj, il faut la mettre à jour.

La façon standard d’installer E-Maj consiste à créer un objet EXTENSION (au sens de PostgreSQL). Pour ce faire, l’utilisateur doit être connecté à la base de données en tant que super-utilisateur.

Pour les environnements pour lesquels il n’est pas possible de procéder ainsi (cas des installations minimales), on peut exécuter un script psql.

Opération préliminaire facultative

Les tables techniques de l’extension sont créées dans le tablespace par défaut. Si l’administrateur E-Maj veut stocker les tables techniques dans un tablespace dédié, il peut le créer si besoin et le définir comme tablespace par défaut pour la session :

SET default_tablespace = <nom.tablespace>;

Création standard de l’extension emaj

L’extension E-Maj peut maintenant être créée dans la base de données, en exécutant la commande SQL :

CREATE EXTENSION emaj CASCADE;

Après avoir vérifié que la version de PostgreSQL est supérieure ou égale à la version 11, le script crée le schéma emaj avec ses tables techniques, ses fonctions et quelques autres objets.

Prudence

Le schéma emaj ne doit contenir que des objets liés à E-Maj.

S’ils n’existent pas déjà, les 2 rôles emaj_adm et emaj_viewer sont également créés.

Enfin, le script d’installation examine la configuration de l’instance. Le cas échéant, il affiche un message d’avertissement concernant le paramètre max_prepared_transactions.

Création de l’extension par script

Lorsque la création de l’objet EXTENSION emaj n’est pas permise, il est possible de créer tous les composants nécessaires par un script psql

\i <répertoire_emaj>/sql/emaj-<version>.sql

où <répertoire_emaj> est le répertoire issu de l’installation du logiciel et <version> la version courante d’E-Maj.

Prudence

Il n’est pas indispensable d’avoir le droit super-utilisateur pour exécuter ce script d’installation. Mais si ce n’est pas le cas, le rôle utilisé devra disposer des droits nécessaires pour créer les triggers sur les tables applicatives des futurs groupes de tables.

Dans ce mode d’installation, toutes les optimisations des rollbacks E-Maj ne sont pas disponibles, conduisant à un niveau de performance dégradé sur ces opérations.

Adaptation du fichier de configuration postgresql.conf

Deux paramètres de configuration peuvent devoir être modifiés dans le fichier postgresql.conf :

  • max_locks_per_transaction, pour gérer des groupes de tables comprenant un nombre élevé de tables. Les fonctions principales d’E-Maj posent un verrou sur chacune des tables des groupes traités. Si une opération E-Maj échoue et retourne un message d’erreur indiquant que toutes les entrées de la table des verrous sont utilisées, la valeur de ce paramètre doit être augmentée. Sa valeur par défaut est de 64.

  • max_prepared_transactions, pour pouvoir utiliser l’outil de rollback E-Maj parallélisé. Par défaut, la valeur du paramètre est 0, bloquant l’utilisation de transactions préparées. La valeur du paramètre doit être au moins égale au nombre de rollbacks E-Maj parallélisés concurrents.

La modification de ces paramètres nécessite un arrêt-relance de l’instance.

Paramétrage d’E-Maj

Un certain nombre de paramètres influence le fonctionnement d’E-Maj. Le détail des paramètres est présenté ici.

Cette étape de valorisation des paramètres est optionnelle. Leur valeur par défaut permet à E-Maj de fonctionner correctement.

Néanmoins, si l’administrateur E-Maj souhaite bénéficier du suivi des opérations de rollback, il est nécessaire de valoriser le paramètre dblink_user_password dans la table emaj_param et de donner au rôle utilisé par l’adminstrateur E-Maj le droit d’exécuter la fonction dblink_connect_u. Plus de détails…

Test et démonstration

Il est possible de tester le bon fonctionnement des composants E-Maj installés et d’en découvrir les principales fonctionnalités en exécutant un script de démonstration. Sous psql, il suffit d’exécuter le script emaj_demo.sql fourni avec l’extension

\i <répertoire_emaj>/sql/emaj_demo.sql

Si aucune erreur n’est rencontrée, le script affiche ce message final

### This ends the E-Maj demo. Thank You for using E-Maj and have fun!

L’examen des messages affichés par l’exécution du script permet de découvrir les principales fonctionnalités de l’extension. Après l’exécution du script, l’environnement de démonstration est laissé en l’état. On peut alors l’examiner et jouer avec. Pour le supprimer, exécuter la fonction de nettoyage qu’il a généré

SELECT emaj.emaj_demo_cleanup();

Ceci supprime le schéma emaj_demo_app_schema et les deux groupes de tables emaj demo group 1 et emaj demo group 2.