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

Datapropagator : resynchronisation manuelle d'une table

Date de publication : 2.12.2006 , Date de mise à jour : 20.1.2007

Par fadace (Fabien Celaia)
 

Procédure permettant 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.

I. Problématique
II. Hypothèse
III. Etapes
IV. Contrôles


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.

warning 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
ADDPRREG
Créer la subscription et son membre sur le fichier cible, toujours depuis DVPHOST1
ADDPRSUBM
Désactiver l'option full refresh pour chaque table source.
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
INZDPRCAP JRN(LIBJRN/JRNSRC)
Modifier les points de synchronisation de la table de PRUNE pour chaque membre de la subscription
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
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
SAVRSTOBJ
Marquer les souscriptions comme chargées
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
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.
update asn.ibmsnap_register
set disable_refresh = 0
where source_owner = 'LIBSRC'
and source_table = 'FILESRC' ;
Démarrer l'applyer
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, ...)



Valid XHTML 1.1!Valid CSS!

Copyright © 2006 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.