I. Installation de l'environnement de réplication▲
I-A. Prérequis▲
Nous partons ici du principe que le Data Propagator (DPR) a été préalablement installé sur votre AS400. Son installation est facilement détectable : il suffit pour cela de vérifier l'existence de la bibliothèque ASN.
I-B. Configuration initiale▲
Comme je l'ai spécifié plus haut, l'installation initiale de DPR crée une bibliothèque ASN comprenant toutes les tables systèmes utiles. Si cette installation devait s'avérer corrompue ou incomplète, il est toujours possible de lancer manuellement l'ordre de création des tables système via la commande CRDDPRTBL (CReate DataPropagatoR TaBLes).
Ensuite, il faut donner à un utilisateur (vous-même ou un utilisateur générique, ici DPRUSR) les droits suffisants à l'exécution des ordres de réplication :
I-B-1. Sur la machine source▲
Commande OS400 | Descriptif |
CRTUSRPPRF USERPRF(DRPUSER) PASSWORD('******') TEXT('Utiliateur anonyme pour réplication') USRCLS(*SYSOPR) SPCAUT(*ALLOBJ *JOBCTL) | Création du profil utilisateur |
CRTSQLPKG PGM(QDP4/QZSNAPV2)
CRTSQLPKG PGM(QDP4/QZSNANZR) CRTSQLPKG PGM(QDP4/QZSNSQLF) RDB(HOST_SRC) OBJTYPE(*SRVPGM) |
Création des packages utiles |
GRTDPRAUT CAPCTLLIB(ASN)USER(DPRUSER) AUT(*REGISTRAR)
GRTDPRAUT CAPCTLLIB(ASN)USER(DPRUSER) AUT(*CAPTURE) GRTOBJAUT OBJ(ASN/ASNANZ801) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4A804) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4B704) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4C300) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4U804) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) |
Attribution des permissions nécessaires |
I-B-2. Sur la machine cible▲
Commande OS400 | Descriptif |
CRTUSRPPRF USERPRF(DRPUSER) PASSWORD('******') TEXT('Utiliateur anonyme pour réplication') USRCLS(*SYSOPR) SPCAUT(*ALLOBJ *JOBCTL) | Création du profil utilisateur |
CRTSQLPKG PGM(QDP4/QZSNAPV2)
CRTSQLPKG PGM(QDP4/QZSNANZR) CRTSQLPKG PGM(QDP4/QZSNSQLF) RDB(HOST_CIBLE) OBJTYPE(*SRVPGM) |
Création des packages utiles |
GRTDPRAUT CAPCTLLIB(ASN) USER(DPRUSER) AUT(*SUBSCRIBER)
GRTDPRAUT CAPCTLLIB(ASN) USER(DPRUSER) AUT(*APPLY) GRTOBJAUT OBJ(ASN/ASNANZ801) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4A804) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4B704) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4C300) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) GRTOBJAUT OBJ(ASN/ASN4U804) OBJTYPE(*SQLPKG) USER(DPRUSER) AUT(*OBJOPR *EXECUTE) |
Attribution des permissions nécessaires |
II. Ajout d'une table source▲
II-A. Journalisation▲
Pour que les modifications apportées sur une table puissent être répliquées, elles doivent pouvoir être traquées. Elles doivent donc être journalisées.
Commande OS400 | Descriptif |
CRTLIB LIB(REPLI) TEXT('Dévolue à la réplication DPR') | Création d'une bibliothèque dévolue à la réplication |
CRTJRNRCV JRNRCV(REPLI/RCPT_JRN) THRESHOLD(100000) TEXT('RECEPTEUR DE JOURNAL') | Création du récepteur de journal |
CRTJRN JRN(REPLI/JOURNAL) JRNRCV(REPLI/RCPT_JRN) MNGRCV(*SYSTEM) DLTRCV(*YES) | Création du journal |
STRJRNPF FILE(REPLI/T_SRC) JRN(REPLI/JOURNAL) IMAGES(*BOTH) OMTJRNE(*OPNCLO) | Attache du journal à la table source |
Il va falloir maintenant offrir cette table en pâture à la réplication. Dans le jargon de la réplication, ceci s'appelle Publier une table, car on accepte de rendre cette source de données publique à l'environnement de réplication. Ici, c'est la table T_SRC de la bibliothèque (ou base) REPLI qui s'ouvre à l'environnement.
Commande OS400 |
ADDDPRREG SRCTBL(REPLI/T_SRC) |
pour information, la commande supprimant une publication est la suivante :
Commande OS400 |
RMVDPRREG SRCTBL(REPLI/T_SRC) |
Elle ne peut cependant être effectuée que lorsqu'aucune souscription ne pointe sur la publication.
Commande OS400 |
RMVDPRREG SRCTBL(REPLI/T_SRC) |
… et pour lister les publications existantes, il suffit d'interroger la table système :
Commande DB2-400 |
SELECT SOURCE_OWNER, SOURCE_TABLE FROM ASN.IBMSNAP_REGISTER |
III. Ajout d'une table cible▲
Nous avons vu plus haut qu'une table s'offrant à la réplication le faisait à travers une publication. Si l'on désire souscrire à une de ces publications, on le fait au travers d'une… souscription :
Commande OS400 |
ADDDPRSUB APYQUAL(MON_QUALIF) SETNAME(TEST_NM) TGTTBL(REPLI/T_CIB) SRCTBL(REPLI/T_SRC) TIMING(*BOTH) |
Notons que :
- pour pouvoir créer une souscription sans spécifier de colonnes, une clé primaire doit exister ;
- le Qualifier doit avoir le nom spécifié lors du démarrage du processus d'application des modifications, déterminé plus haut ;
- la matérialisation de la table cible va se faire à l'insu de données qui auraient pu déjà exister dans cette table.
Pour information, la suppression d'une souscription se fait via la commande suivante :
Commande OS400 |
RMVDPRSUB APYQUAL(MON_QUALIF) SETNAME(TEST_NM) RMVMBRS(*YES) RMVREG(*YES) |
… et pour lister les souscriptions existantes, il suffit d'interroger la table système :
Commande DB2-400 |
SELECT APPLY_QUAL, SET_NAME, SOURCE_SERVER, TARGET_SERVER FROM ASN.IBMSNAP_SUBS_SET |
IV. Démarrage des processus de réplication▲
Sur le serveur source, nous allons démarrer le processus de capture des informations des journaux :
Commande OS400 |
STRDPRCAP |
Sur le serveur cible, nous démarrerons plus tard le processus d'application des modifications, car il n'est possible de démarrer ce processus que lorsqu'une souscription aura été créée... c'est à la limite du cercle vicieux...
Commande OS400 |
STRDPRAPY USER(DPRUSER) APYQUAL(MON_QUALIF) |
V. Limitations▲
- Les ordres DDL ne sont pas répliqués.
- En environnement OS400, pas d'interface graphique (pas de Replication Center).
- Une modification de DDL implique une modification de souscription.
- Matérialisation automatique intempestive en cas de crash => écrasement des données cibles : pas réellement problématique pour une réplication purement monodirectionnelle, mais les performances peuvent en souffrir.
VI. Commandes OS400▲
Commande | Description |
ADDDPRREG | Ajout d'une publication |
ADDDPRSUB | Ajout d'une souscription |
ADDDPRSUBM | Ajout d'un membre dans un paquet de souscriptions |
ANZDPR | Lancement de l'analyseur |
CHGDPRCAPA | Modification des attributs de capture |
CRTDPRTBL | Création des tables système initiales |
ENDDPRAPY | Arrêt du modificateur de cible |
ENDDPRCAP | Arrêt de la capture de source |
GRTDPRAUT | Octroi des droits |
INZDPRCAP | Réinitialisation de la capture |
OVRDPRCAPA | Écrasement des paramètres de capture |
RMVDPRREG | Suppression d'une publication |
RMVDPRSUB | Suppression d'une souscription |
RMVDPRSUBM | Suppression d'un paquet de souscriptions |
RVKDPRAUT | Suppression de droits |
STRDPRAPY | Démarrage du modificateur de cible |
STRDPRCAP | Démarrage de la capture de source |
WRKDPRTRC | Utilisation des traces |