DB2-400 - Configuration du Data Propagator

Fabien Celaia

- Titre : DB2-400 - Configuration du Data Propagator

- Auteur : Fabien Celaia

- Parution : 4 août 2004

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Fabien Celaia. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Installation de l'environnement de réplication

- I-A. Prérequis

- I-B. Configuration initiale

- I-B-1. Sur la machine source

- I-B-2. Sur la machine cible

- II. Ajout d'une table source

- II-A. Journalisation

- III. Ajout d'une table cible

- IV. Démarrage des processus de réplication

- V. Limitations

- VI. Commandes OS400

- VII. Documentation

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

VII - Documentation

- Documentation officielle d'IBM