Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL DB2 FORUM DB2 F.A.Q DB2 TUTORIELS DB2 TUTORIELS SQL LIVRES DB2


DB2-400 - Configuration du Data Propagator

29 août 2004

Par Fabien CelaiaFadace

Sommaire

Installation de l'environnement de réplication

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.

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:

Sur la machine source

Commande OS400Descriptif
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

Sur la machine cible

Commande OS400Descriptif
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

Ajout d'une table source

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 OS400Descriptif
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

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 publication, 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

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)

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

Commandes OS400

CommandeDescription
ADDDPRREGAjout d'une publication
ADDDPRSUBAjout d'une souscription
ADDDPRSUBMAjout d'un membre dans un paquet de souscriptions
ANZDPRLancement de l'analyseur
CHGDPRCAPAModification des attributs de capture
CRTDPRTBLCréation des tables système initiales
ENDDPRAPYArrêt du modificateur de cible
ENDDPRCAPArrêt de la capture de source
GRTDPRAUTOctrois des droits
INZDPRCAPRéinitialisation de la capture
OVRDPRCAPAEcrasement des paramètres de capture
RMVDPRREGSuppression d'une publication
RMVDPRSUBSuppression d'une souscription
RMVDPRSUBMSuppresion d'un paquet de souscriptions
RVKDPRAUTSuppresion de droits
STRDPRAPYDémarrage du modificateur de cible
STRDPRCAPDémarrage de la capture de source
WRKDPRTRCUtilisation des traces

Documentations

  • Documentation officielle d'IBM
  • Copyright © Fadace. 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

    Responsable bénévole de la rubrique DB2 : jab - Contacter par EMail :
    Vos questions techniques : forum d'entraide DB2 - Publiez vos articles, tutoriels et cours
    et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
    Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.