I. Problématique

La synchronisation d'une table source à une table cible en utilisant Data Propagator peut durer un temps certain lorsque l'on s'attaque à de gros volumes. Il se peut donc que ce temps soit en inadéquation avec des contrainres de production.

En fait, il y a deux moment durant lesquels ce problème de durée de synchronisation peut paraître.

  1. Lors de la première matérialisation de la table sur la cible, losque l'applyer est démarré pour la première fois
  2. Lorsque le DPR ne "retrouve pas ses petits" et qu'il essaie de resynchroniser la table.

Le point 2 ne peut être acceptable sur des tables à forte volumétrie en production : nous ne pouvons en fait accepter le risque qu'une table source soit totalement vidée en pleine activité en attendant une resynchronisation. C'est pour cette raison que sur ce type de table, le pocessus de Registration sera créé avec un mode Autorefresh à OFF.

Voici donc une procédure à effectuer pas-à-pas afin d'effectuer une resynchronisation manuelle en utilisant des commandes OS400 de copie, et en forçant le Data Propagator à considérer la synchronisaton comme acquise.

Dans le cas d'une subsciption à plusieurs membres, il faut appliquer cette procédure sur tous les membres. Dans le cs contraire, on risque de "pourrir" le point de synchronisation et de planter pour le coup le processus de capture (Asn).

II. Hypothèse

Objet Source Cible
AS400 DVPHOST1 DVPHOST2
Librairie LIBSRC LIBTRG
Fichier FILESRC FILETRG
Journal LIBJRN/JRNSRC LIBJRN/JRNTRG
Type de réplication Capture et applyers sur DVPHOST1
Nom de l'applyer APY_01
Nom du set A01_S01
Nom de la librairie contenant les tables de change ASNCD

III. Etapes

Créer la REGISTRATION sur le fichier source, depuis DVPHOST1

 
Sélectionnez
ADDPRREG 

Créer la subscription et son membre sur le fichier cible, toujours depuis DVPHOST1

 
Sélectionnez
ADDPRSUBM

Désactiver l'option full refresh pour chaque table source.

 
Sélectionnez
update asn.ibmsnap_register
set disable_refresh = 1
where source_owner = 'LIBSRC'
and source_table = 'FILESRC' ;

Réinitialiser la capture, en utilisant la commande inzdpr

 
Sélectionnez
INZDPRCAP JRN(LIBJRN/JRNSRC)

Modifier les points de synchronisation de la table de PRUNE pour chaque membre de la subscription

 
Sélectionnez
update asn.ibmsnap_pruncntl
set synchpoint = null, synchtime = null
where apply_qual = 'APY_01'
and set_name = 'A01_S01' ;

update asn.ibmsnap_pruncntl
set synchpoint = x'00000000000000000000', synchtime = CURRENT TIMESTAMP
where apply_qual = 'APY_01'
and set_name = 'A01_S01'  ;

Forcer un signal capstart dans la table afin de commencer la capture dans les tables de changement

 
Sélectionnez
insert into asn.ibmsnap_signal (SIGNAL_TIME, SIGNAL_TYPE, SIGNAL_SUBTYPE, SIGNAL_INPUT_IN, SIGNAL_STATE)
(select current timestamp, 'CMD', 'CAPSTART', MAP_ID, 'P'
 from asn.ibmsnap_pruncntl
 where source_owner = 'LIBSRC'
 and source_table = 'FILESRC'
 and apply_qual = 'APY_01'
 and set_name = 'A01_S01'
 and target_owner = 'LIBTRG'
 and target_table = 'FILETRG') ;

Exécuter la synchronisation via les commandes de l'iSerie, depuis la source

 
Sélectionnez
SAVRSTOBJ 

Marquer les souscriptions comme chargées

 
Sélectionnez
update asn.ibmsnap_subs_membr
set member_state = 'L'
where apply_qual = 'APY_01'
and set_name = 'A01_S01'  ;

Spécifier le point de synchronisation

 
Sélectionnez
update asn.ibmsnap_subs_set
set lastrun = current timestamp, lastsuccess = current timestamp, synchtime = current timestamp, synchpoint = null
where apply_qual = 'APY_01'
and set_name = 'A01_S01'
and activate = 1  ;

Au besoin (si l'option est active, pourquoi s'ennuyer avec cette procédure !), réactiver l'option full refresh pour chaque table source.

 
Sélectionnez
update asn.ibmsnap_register
set disable_refresh = 0
where source_owner = 'LIBSRC'
and source_table = 'FILESRC' ;

Démarrer l'applyer

 
Sélectionnez
STRDPRAPY APYQUAL(APY_01) TRACE(*ERROR)

IV. Contrôles

Vérifier le contenu de la table asnservice.ibmsna_sbs qui devrait comprendre les informations sur l'applyer.

Si nécessaire, stopper toutes autres activités de transfert (pgm, requêtes, ...)