Administration d'une configuration de réplication coordonnée

Cette section contient des instructions pour la coordination des threads et le repartitionnement de la charge globale entre des threads nouveaux ou différents. Un processus Replicat coordonné doit être arrêté correctement avec la commande STOP REPLICAT avant d'apporter des modifications aux spécifications de partition dans les clauses THREAD ou THREADRANGE des instructions MAP. Un arrêt propre garantit que tous les threads, qui peuvent se trouver à différents endroits dans la piste à un moment donné, finissent tous leur travail et arrivent à un emplacement de piste commun.

Au démarrage, le processus Replicat génère une erreur et s'interrompt s'il détecte que le dernier arrêt n'a pas été nettoyé et que le partitionnement dans les instructions MAP a été modifié pour contenir un nombre différent de threads (les threads ont été ajoutés ou supprimés). Toutefois, si les mêmes threads sont conservés dans le fichier de paramètres mais simplement réorganisés entre différentes instructions MAP, le processus Replicat émet un avertissement mais n'abandonne pas. Cela peut entraîner des enregistrements manquants ou en double, car il n'existe aucun moyen d'assurer la continuité des allocations de thread à charge globale de l'exécution précédente.

Ce qui suit est un exemple de cette condition.

Voici le schéma de partitionnement d'origine :

MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);

Le repartitionnement suivant du schéma d'origine génère uniquement un avertissement :

MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);

Cette section fournit des instructions pour arrêter correctement le processus Replicat avant d'effectuer un repartitionnement, ainsi que des instructions pour tenter de récupérer la continuité du processus Replicat lorsqu'un repartitionnement est effectué après un arrêt incorrect.

Les tâches suivantes peuvent être effectuées pour un groupe de réplication en mode coordonné.

Répartitionnement planifié de la charge globale

Un repartitionnement planifié se produit lorsque le processus Replicat est autorisé à s'arrêter correctement avant d'être relancé avec un nouveau fichier de paramètres contenant le partitionnement de thread mis à jour. Un arrêt pur permet à tous les threads d'arriver à une position de point de reprise commune dans la trace. A ce stade, le nouveau schéma de partitionnement peut être appliqué lors de la prochaine exécution.

  1. Exécutez Admin Client.

  2. Arrêtez la réplication.

STOP REPLICAT *group*
  1. Ouvrez le fichier de paramètres pour le modifier.
EDIT PARAMS *group*
  1. Apportez les modifications requises aux spécifications THREAD ou THREADRANGE dans les instructions MAP.

  2. Enregistrez et fermez le fichier de paramètres.

  3. Démarrer la réplication.

START REPLICAT *group*

Récupérer le processus Replicat après un repartitionnement non planifié

Un repartitionnement non planifié se produit lorsque le processus Replicat n'est pas autorisé à s'arrêter correctement avant d'être redémarré avec un nouveau fichier de paramètres contenant le partitionnement de thread mis à jour. Dans ce scénario, tout ou partie des anciens threads n'ont pas pu terminer leur travail et arriver à un point de reprise commun. Au redémarrage, le thread du coordinateur tente d'appliquer l'ancien schéma de partitionnement et le processus Replicat s'interrompt avec une erreur. Vous pouvez récupérer le groupe Replicat coordonné à partir de cette condition de l'une des manières suivantes :

Retraitement à partir du filigrane bas avec HANDLECOLLISIONS

Dans cette procédure, vous repositionnez tous les threads en position faible filigrane. Il s'agit de la première position de point de reprise effectuée parmi tous les threads. Pour l'indiquer autrement, la position du filigrane bas est le dernier enregistrement traité par le fil le plus lent avant l'arrêt impur. Lorsque vous démarrez le processus Replicat, les threads retraitent les opérations qu'ils traitaient avant l'arrêt du processus Replicat, et le paramètre HANDLECOLLISIONS gère toutes les erreurs d'enregistrement en double et d'enregistrement manquant qui se produisent lorsque les threads plus rapides retraitent les opérations qu'ils ont appliquées avant l'arrêt incorrect.

  1. Ajoutez le paramètre HANDLECOLLISIONS au fichier de paramètres de réplication. Il n'est pas nécessaire d'utiliser les options THREADS.

  2. Exécutez la commande INFO REPLICAT pour le groupe de réplication dans son ensemble (le thread de coordinateur). Enregistrez l'adresse d'octet relative du point de reprise. Il s'agit de la valeur low watermark. Cette sortie affiche également les ID de thread actifs sous la colonne Group Name. Enregistrez-les également.

INFO REPLICAT *group*
For example:

<pre class="copy"><code>OGG(slc03jgo) 3&gt; info ra detail REPLICAT   RA       Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Coordinator                      MAXTHREADS 15Checkpoint Lag       00:00:00 (updated 00:00:07 ago)Process ID           11445Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000000001                     2013-05-02 07:49:45.975662  RBA 44704Lowest Log BSN value: (requires database login)Active Threads: ID  Group Name PID   Status   Lag at Chkpt  Time Since Chkpt1   RA001     11454 ABENDED  00:00:00      00:00:01    2   RA002     11455 ABENDED  00:00:00      00:00:04    3   RA003     11456 ABENDED  00:00:00      00:00:01    5   RA005     11457 ABENDED  00:00:00      00:00:02    6   RA006     11458 ABENDED  00:00:00      00:00:04    7   RA007     11459 ABENDED  00:00:00      00:00:04</code></pre>
  1. Exécutez la commande INFO REPLICAT pour chaque ID de thread de traitement et enregistrez la position RBA de chaque thread. Notez le meilleur RBA. Il s'agit du filigrane haut du groupe Replicat.
INFO REPLICAT *threadID*
For example:

<pre class="copy"><code>info ra002 REPLICAT   RA002    Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Replicat Thread                  Thread 2Checkpoint Lag       00:00:00 (updated 00:00:06 ago)Process ID           11455 Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000000001                     2013-05-02 07:49:15.837271  RBA 45603</code></pre>
  1. Exécutez la commande ALTER REPLICAT pour le thread de coordinateur (Replicat dans son ensemble, sans ID de thread) et positionnez-le sur le RBA low watermark que vous avez enregistré.
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
  1. Démarrer la réplication.
START REPLICAT *group*
  1. Exécutez la commande INFO REPLICAT de base jusqu'à ce qu'elle affiche un RBA supérieur au filigrane haut que vous avez enregistré. HANDLECOLLISIONS gère les collisions qui surviennent en raison de transactions précédemment appliquées.
INFO REPLICAT *group*
  1. Arrêtez la réplication.
STOP REPLICAT *group*
  1. Enlevez le paramètre HANDLECOLLISIONS ou mettez-le en commentaire.

  2. Démarrer la réplication.

START REPLICAT *group*

Utilisation du fichier de paramètres enregistré automatiquement

Une copie du fichier de paramètres d'origine est enregistrée chaque fois que le fichier de paramètres est modifié avant d'arrêter correctement Replicat. Vous pouvez revenir à ce fichier de paramètres, puis resynchroniser les threads afin qu'ils rattrapent tous le thread ayant la position de point de reprise la plus récente. Une fois les threads synchronisés, vous pouvez basculer vers le nouveau fichier de paramètres, puis démarrer Replicat.

  1. Enregistrez le nouveau fichier de paramètres sous un autre nom, puis renommez le fichier de paramètres d'origine enregistré sous le nom approprié (identique au nom du groupe). Le fichier de paramètres enregistré comporte un suffixe .backup et est stocké dans le sous-répertoire dirprm du répertoire d'installation d'Oracle GoldenGate.

  2. Exécutez la commande suivante pour synchroniser les threads de réplication à la position maximale du point de reprise. Cette commande démarre automatiquement le processus Replicat et exécute les threads jusqu'à ce qu'ils atteignent la position maximale du point de reprise.

SYNCHRONIZE REPLICAT *group*
  1. Exécutez la commande STATUS REPLICAT jusqu'à ce qu'elle indique que le processus Replicat s'est arrêté correctement.
STATUS REPLICAT *group*
  1. Enregistrez le fichier de paramètres d'origine sous un autre nom, puis renommez le nouveau fichier de paramètres en nom de groupe.

  2. Démarrer la réplication.

START REPLICAT *group*