ALTER EXTRACT
Utilisez ALTER EXTRACT pour les raisons suivantes :
-
Pour modifier les attributs d'un groupe d'extraction créé à l'aide de la commande
ADD EXTRACT. -
Faire passer une trace au fichier suivant dans la séquence.
-
Mettre à niveau vers une configuration de capture intégrée.
-
Revenir à la version antérieure à partir d'une configuration de capture intégrée.
-
Positionner un journal DB2 for i sur un numéro de séquence de journal précis.
Avant d'utiliser cette commande, arrêtez l'extraction à l'aide de La commande STOP EXTRACT group_name.
Syntaxe
ALTER EXTRACT group-name
[, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} |
| [, EXTRBA archive-offset-number]
| [, ADD_EXTRACT_attribute | SCN value]
| [, LSN
| [, EOL
| [, DESC
| [ CRITICAL [ YES | NO ] ]
| [ ENCRYPTIONPROFILE encryption-profile-name]
| [ PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos
Les options ALTER EXTRACT suivantes sont prises en charge pour Db2 afin que i puisse positionner l'extraction pour un journal précis :
ALTER EXTRACT {BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]Z]}
[JOURNAL journal_library/journal_name [JRNRCV receiver_library/
receiver_name]] |
, EOL [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]] |
, SEQNO sequence_number [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]]}
BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z} [JOURNAL journal_library/journal_name [JRNRCV receiver_library/ receiver_name]] | , EOL [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]] | , SEQNO sequence_number [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]]
Ces options IBM for i permettent d'activer l'extraction pour un journal précis après l'émission du point du départ global à l'aide de ADD EXTRACT. La position d'un journal précis définie à l'aide de la commande, ALTER EXTRACT, n'a aucune incidence sur les postes globaux définis antérieurement par, ADD EXTRACT ou ALTER EXTRACT. Toutefois, une position globale définie par, ALTER EXTRACT remplace toutes les postes de journal précis préalablement définies dans la même configuration d'extraction.
Remarque : SEQNO, lorsqu'il est utilisé avec un journal dans `ALTER
EXTRACT`, is the journal sequence number that is relative to that specific journal, not the system sequence number that is global across journals.
{: .infoboxnote}
group-name
Nom du groupe d'extraction à modifier.
{BEGIN {NOW |
Tyyyy-mm-dd[ hh:mi:[ss[.cccccc]]]Z} |
NOW
Pour toutes les bases de données à l'exception de Db2 LUW, NOW indique l'heure à laquelle la commande ALTER EXTRACT est émise.
NOW indique l'heure à laquelle la commande ALTER EXTRACT est émise.
Pour DB2 LUW, seuls les enregistrements de validation et d'arrêt de transaction contiennent des horodatages. La position de départ d'extraction ne peut donc être calculée que par rapport à ces horodatages. Il s'agit d'une limite de l'API utilisée par Oracle GoldenGate. Le positionnement en fonction de l'horodatage n'est pas précis et peut de plus prendre un certain temps. Il est recommandé d'utiliser les options LRI ou EOL dès que cela peut être possible.
YYYY-MM-DDThh:mm:ssZ
Date et heure (horodatage) au format indiqué. Par exemple, 2017-07-14T14:54:45Z.
yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]
Date et heure (horodatage) au format indiqué. Pour une extraction Oracle en mode intégré, la valeur d'horodatage doit être supérieure à l'horodatage de l'inscription de l'extraction auprès de la base de données.
Les caractéristiques suivantes de SQL Server ont une incidence sur le positionnement en fonction de l'horodatage dans un journal de transaction SQL Server :
-
L'horodatage enregistré dans le journal de transaction SQL Server affiche un degré de finesse de 3,3333 microsecondes (ms). Il est possible que ce degré de finesse ne permette pas d'effectuer un positionnement en fonction de l'heure entre deux transactions, si les transactions ont été lancées dans le même intervalle de 3,3333 ms.
-
Les horodatages ne sont pas enregistrés dans tous les enregistrements de journal SQL Server, seulement dans les enregistrements qui lancent et valident la transaction, ainsi que d'autres enregistrements ne contenant pas de données.
-
Les horodatages SQL Server ne proviennent pas de l'horloge système, mais d'une horloge interne qui est propre aux processeurs individuels employés. Cette horloge effectue plusieurs mises à jour par seconde, mais il est possible qu'elle ne soit pas synchronisée avec l'horloge système entre deux mises à jour. La précision du positionnement en fonction de l'heure en est donc réduite.
-
Les horodatages enregistrés pour les fichiers de sauvegarde de journal peuvent ne pas correspondre exactement aux heures enregistrées dans la sauvegarde (toutefois, cette imprécision est inférieure à une seconde).
Le positionnement à un numéro de séquence de journal est précis.
Le positionnement en fonction de l'horodatage dans PostgreSQL comprend les scénarios suivants :
-
Scénario 1
Si
track_commit_timestampest défini suroff, la sortie suivante sera affichée lorsque le processus d'extraction démarre, peu importe la méthode de positionnement employée :2020-04-29 02:15:54 INFO OGG-01517 Position of first record processed LSN: 0/2222C20, Jan 1, 1970 12:00:00 PM. -
Scénario 2
Si
track_commit_timestampest activé avant l'inscription de l'extraction, l'horodatage correct sera affiché une fois les enregistrements propagés dans la base de données source, comme indiqué dans l'exemple suivant :2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
Scénario 3
Si
track_commit_timestampest activé après l'inscription de l'extraction, il est possible que les anciens enregistrements soient disponibles dans le journal pour lequel l'horodatage de validation n'est pas créé avec l'élémenttransaction IDassocié. Dans ce cas, si l'extraction n'obtient pas l'horodatage, elle utilisera l'horodatage par défaut indiqué dans le scénario 1. Le résultat obtenu est semblable au résultat suivant :020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
Un horodatage passé ne peut pas être indiqué si l'emplacement de réplication a été déplacé.
START
Valide pour PostgreSQL.
Ajoute une extraction sans mentionner BEGIN NOW ou LSN. L'extraction démarrera automatiquement à partir de la position de redémarrage de l'emplacement de réplication.
ADD_EXTRACT_attribute
Vous pouvez modifier tous les attributs indiqués avec la commande ALTER EXTRACT, sauf les suivants :
-
Modification d'une extraction indiquée à l'aide de l'option
EXTTRAILSOURCE. -
Modification du nombre de threads RAC indiqué avec l'option
THREADS.
Pour ces exceptions, supprimez le groupe d'extraction, puis ajoutez-le à nouveau.
Si vous utilisez l'option BEGIN, ne combinez pas d'autres options dans l'instruction. Emettez des instructions distinctes, par exemple :
ALTER EXTRACT exte, BEGIN 2019-01-01
ALTER EXTRACT exte, ETROLLOVER
ALTER EXTRACT exte, SCN 789000
Si vous utilisez l'option SCN ou BEGIN pour une extraction intégrée, la commande a besoin d'une valeur DBLOGIN, et la valeur de num. SCN ou d'horodatage indiquée ne peut pas être inférieure au premier num. SCN ou horodatage du serveur sortant. Pour chercher le premier SCN de serveur sortant, émettez la commande suivante :
INFO EXTRACT group_name, SHOWCH DETAIL
La valeur du premier numéro SCN est répertoriée comme dans l'exemple suivant :
Integrated Extract outbound server first scn: 0.665884 (665884)
EXTRBA offset_number
Valide pour DB2 z/OS.
Indique l'adresse d'octet relative dans un journal de transaction à partir de laquelle démarrer la capture des données.
Le format requis est le suivant :0Xnnn, où nnn est un nombre hexadécimal de 1 à 20 chiffres (le premier caractère est le chiffre zéro, le deuxième peut être la lettre x majuscule ou minuscule).
EOL
Valide pour DB2 for i, DB2 LUW, MySQL, PostgreSQL et SQL Server.
Configure le traitement de sorte qu'il démarre à la fin des fichiers journaux (ou journaux) dans lesquels l'enregistrement suivant sera écrit. Les éventuelles transactions actives ne sont pas capturées.
Pour Db2 LUW, cette option configure l'exécution de sorte qu'elle démarre à la valeur LRI active dans les fichiers journaux. La valeur LRI active correspond à la position à la fin des fichiers journaux dans lesquels l'enregistrement suivant sera écrit. Les éventuelles transactions actives ne sont pas capturées.
Pour PostgreSQL, la commande DBLOGIN est requise pour la position en fonction de la valeurEOL.
Pour MySQL, cette option détecte la position correspondant à la fin du fichier et démarre la lecture des transactions à partir de ce point. La position EOL n'est pas parfaitement exacte si des données sont continuellement écrites dans le journal binaire.
TRANLOG LRI LRI_number
(DB2 LUW) Vous pouvez utiliser cette option avec les systèmes DB2 LUW afin d'indiquer la valeur d'enregistrement LRI pour le journal de transactions de point de reprise.
Pour PostgreSQL, la commande DBLOGIN est requise pour la position en fonction de la valeurEOL.
REPORT file_name
Indique le nom de chemin complet d'un fichier d'état Extract dans un emplacement autre que l'emplacement dirrpt par défaut du répertoire Oracle GoldenGate.
SCN value
Valide pour Oracle.
Démarre l'extraction au niveau de la transaction dans le fichier de journalisation correspondant au numéro de modification système (SCN) Oracle indiqué. Pour une extraction, la valeur du numéro SCN doit être supérieure au numéro SCN de l'inscription de l'extraction auprès de la base de données. Pour l'option SCN ou BEGIN, DBLOGIN est requise, et la valeur de num. SCN ou d'horodatage indiquée ne peut pas être inférieure au premier num. SCN ou horodatage du serveur sortant.
LSN value
Valide pour DB2 z/OS, PostgreSQL et SQL Server.
Indique la transaction LSN à laquelle démarrer la capture des données. L'alias de cette option est EXTLSN.
Pour Db2 z/OS, la valeur LSN peut être une série de chiffres hexadécimaux ou une série de chiffres décimaux. S'il est au format hexadécimal, le préfixe 0X ou 0x doit être suivi de 1 à 20 chiffres hexadécimaux (0-9, a-g ou A-G). Si la valeur est au format décimal, elle ne contient aucun préfixe, et comporte entre 1 et 25 chiffres décimaux (0-9).
Pour PostgreSQL, la valeur LSN peut être hi ou lo. Définissez la valeur sur hi pour le point d'entrée du fichier journal. Lo correspond à la position dans le fichier journal. la position LSN doit se situer entre la position du redémarrage d'emplacement de réplication et l'emplacement en cours de journal à écriture anticipée. Si la position indiquée existe dans la plage mentionnée, l'extraction génère une erreur.
Pour SQL Server, LSN indique la transaction LSN à laquelle démarrer la capture des données. L'alias de cette option est EXTLSN.
La valeur de LSN indiquée doit exister en tant que valeur de tran_begin_lsn valide dans la table système cdc.lsn_time_mapping, sinon l'extraction tentera d'effectuer le positionnement après la valeur LSN fournie.
Les spécifications LSN valides pour SQL Server sont les suivantes :
-
Chaîne hexadécimale séparée par des signes deux points (8:8:4) complétée par des zéros à gauche et ayant pour préfixe 0X. Exemple : 0X00000d7e:0000036b:0001
-
Chaîne hexadécimale séparée par des signes deux points ayant pour préfixe 0X sans zéros à gauche. Exemple : 0Xd7e:36b:1
Pour connaître la valeur LSN minimale disponible, effectuez la requête suivante :
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
Les exemples suivants illustrent l'utilisation de la valeur LSN pour Db2 z/OS :
Exemple 1 :
ALTER EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
Exemple 2 :
ALTER EXTRACT extn TRANLOG, LSN 22216433159121980904448
L'exemple suivant illustre la valeur LSN pour SQL Server :
ALTER EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LOGNUM
Valide pour MySQL.
Il s'agit du numéro de fichier journal. Par exemple, si le nom du fichier journal requis est test.000034, la valeur LOGNUM est 34. L'extraction recherchera ce fichier journal. Remarque : dans l'architecture de microservices, ALTER EXTRACT échoue si la valeur LOGNUM contient des zéros précédant la valeur. Par exemple, ALTER EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0 échouera. Définissez LOGNUM sur 1 pour que cet exemple aboutisse.
LOGPOS
Valide pour MySQL.
Il s'agit d'une valeur de position d'événement dans le fichier journal qui identifie un enregistrement de transaction spécifique. Les valeurs de position d'événement sont stockées dans la section d'en-tête d'un enregistrement de journal. pour vous positionner au début d'un fichier binlog, définissez LOGPOS sur 0.
ETROLLOVER
Utilisez cette commande en cas de récupération manuelle nécessitant le repositionnement et la régénération des fichiers trace pour une extraction principale et lors de la mise à niveau d'Oracle GoldenGate à partir d'une version antérieure.
Cette commande indique à l'extraction de créer une incarnation du fichier trace et de passer au fichier suivant dans la séquence de trace lors du redémarrage, ce qui requiert le repositionnement manuel des lecteurs (Data Pump ou réplication) sur le nouveau numéro de séquence de trace.
Avec ETROLLOVER, l'extraction capture tous les enregistrements après le SCN indiqué avec lequel elle démarre, qu'ils aient déjà été capturés et écrits dans la trace ou non. Sans ETROLLOVER, l'extraction ignore la capture des enregistrements qui ont déjà être capturés et écrits dans la trace.
A partir de la version 19c, les principes suivants s'appliquent lors du traitement du service de distribution :
-
Si l'extraction principale sur le déploiement source est mise à niveau avec un fichier trace cible
ETROLLOVER, le service theDistribution détecte automatiquement le fichier trace sourceETROLLOVERet commence la lecture à partir du fichier trace suivant. Il s'agit de la même commande que la commandeALTER EXTRACT groupname EXTSEQNO seqno+1 EXTRBA 0de Data Pump. -
Après la mise à niveau du service de distribution,
ETROLLOVERest automatiquement exécuté pour le fichier trace sortant lors de son redémarrage et le fichier trace suivant est écrit correctement. Il s'agit de la même commande que la commandeALTER EXTRACT groupname ETROLLOVERde Data Pump.
DESC ‘description’
Indique la description du groupe. Exemple : 'Extracts account_tab on Serv1'. Placez la description entre apostrophes. Vous pouvez employer le mot-clé abrégé DESC ou le mot complet DESCRIPTION.
ENCRYPTIONPROFILE
Indique le nom du profil de cryptage de l'extraction. Ce nom est sensible à la casse. Vous devez donc entrer exactement le nom que vous avez entré avec ADD EXTRACT.
GTIDSET gtidset
Valide pour MySQL.
Indique le positionnement initial de l'extraction à l'aide de l'option de type de position de l'ensemble de GTID pour la capture basée sur le GTID (MySQL). Les sources MySQL prises en charge pour l'ensemble de GTID sont MySQL Server 8.0, MySQL Server 5.7, MySQL Database Service (MDS). La taille d'ensemble de GTID maximale prise en charge est de 64 ko.
Syntaxe :
ALTER EXTRACT extract_name, TRANLOG, GTIDSET gtidset
Les exemples suivants incluent toutes les combinaisons de formats d'ensemble de GTID valides.
Exemple 1 :
ALTER EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
Exemple 2 :
ALTER EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
Exemple 3 :
ALTER EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
Exemple 4 :
ALTER EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
Remarque : comme indiqué dans l'exemple 4, lorsque le jeu GTID contient plusieurs uuids, pour former une demande d'API REST, ce jeu GTID est divisé en plusieurs jeux GTID à l'aide d'un séparateur de virgules.
CRITICAL
Indique si le processus est essentiel pour le déploiement.
PROFILE
Nom du profil de démarrage automatique. Ce nom est sensible à la casse. Vous devez donc entrer exactement le nom que vous avez entré avec ALTER EXTRACT.
AUTOSTART
Indique si le processus géré doit être démarré automatiquement lors du démarrage du service d'administration. La valeur par défaut est YES.
RETRIES
Nombre maximal de tentatives de redémarrage de la tâche avant d'annuler les nouvelles tentatives. Cette option est facultative.
WAITSECONDS
Durée (en secondes) au cours de laquelle le nombre de tentatives est compté.
RESETSECONDS
Réinitialise la durée au cours de laquelle le nombre de tentatives est compté.
DISABLEONFAILURE
Si la valeur TRUE est définie, la tâche est désactivée lorsque le nombre de tentatives est épuisé.
INFO EXTRACT group-name, SHOWCH DETAIL
La valeur du premier numéro SCN est répertoriée comme dans l'exemple suivant :
Integrated Extract outbound server first scn: 0.665884 (665884)
Exemples
L'exemple suivant modifie l'extraction afin de démarrer le traitement des données à partir du 1er janvier 2019.
ALTER EXTRACT exte, BEGIN 2019-01-01
L'exemple suivant modifie l'extraction afin de démarrer le traitement à partir d'un emplacement précis dans la trace.
ALTER EXTRACT exte, EXTSEQNO 26, EXTRBA 338
L'exemple suivant modifie l'extraction dans un environnement SQL Server afin de la faire démarrer à partir d'un numéro de séquence de journal précis.
ALTER EXTRACT exte, LSN 0Xd7e:36b:1
L'exemple suivant modifie l'extraction afin de la faire passer au fichier suivant dans la séquence de trace.
ALTER EXTRACT exte, ETROLLOVER
L'exemple suivant modifie l'extraction afin de la mettre à niveau vers la capture intégré.
ALTER EXTRACT exte, UPGRADE INTEGRATED TRANLOG
La commande suivante utilise ETROLLOVER pour empêcher que le filtrage des enregistrements en double dont le nom SCN antérieur à 778899.
ALTER EXTRACT exte, SCN 778899
ALTER EXTRACT exte ETROLLOVER
START EXTRACT exte
Si vous n'utilisez pas ETROLLOVER, lorsque vous modifiez l'extraction pour la modifier sur la valeur SCN précédente, les enregistrements en double ne seront pas traités. La commande permettant de modifier l'extraction pour filtrer les enregistrements en double est la suivante :
ALTER EXTRACT exte, SCN 778899
START EXTRACT exte
L'exemple suivant illustre ALTER EXTRACT pour un point de départ d'IBM for i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn
L'exemple suivant illustre ALTER EXTRACT pour un point de départ du journal IBM i et du journal IBM i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
L'exemple suivant modifie une extraction sur un système DB2 LUW.
ALTER EXTRACT exte, TRANLOG LRI 8066.322711
L'exemple suivant illustre les options ALTER EXTRACT utilisées avec PostgreSQL :
ALTER EXTRACT exte, EOL
ALTER EXTRACT POSTEXT, LSN 0/156784
ALTER EXTRACT POSTEXT, BEGIN 2022-02-18T14:50:43.4230Z