ALTER EXTRACT
Utilizzare ALTER EXTRACT per i seguenti scopi:
-
Per modificare gli attributi di un gruppo Extract creato con il comando
ADD EXTRACT; -
incrementare un trail al file successivo della sequenza;
-
eseguire l'upgrade a una configurazione di acquisizione integrata;
-
eseguire il downgrade da una configurazione di acquisizione integrata;
-
posizionare il diario Db2 per i specificato in corrispondenza di un numero di sequenza diario specifico.
Prima di utilizzare questo comando, arrestare Extract con il comando STOP EXTRACT group_name.
Sintassi
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
Di seguito sono riportate le opzioni ALTER EXTRACT supportate per Db2 per i per posizionare Extract per un diario specificato:
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]]
Queste opzioni IBM per i consentono di posizionare l'estrazione specifica del diario dopo il punto di inizio globale impostato con ADD EXTRACT. La posizione diario specifica impostata con ALTER EXTRACT non ha effetto sull'eventuale posizione globale impostata in precedenza con ADD EXTRACT o ALTER EXTRACT; tuttavia, una posizione globale impostata con ALTER EXTRACT sostituisce tutte le posizioni di diario specifiche impostate precedentemente nella stessa configurazione Extract.
Nota: SEQNO, se utilizzato con un giornale in `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
Nome del gruppo Extract da modificare.
{BEGIN {NOW |
Tyyyy-mm-dd[ hh:mi:[ss[.cccccc]]]Z} |
NOW
Per tutti i database ad eccezione di Db2 LUW, NOW specifica quando è stato eseguito il comando ALTER EXTRACT.
NOW specifica l'ora di esecuzione del comando ALTER EXTRACT.
Per Db2 LUW, solo i record di commit e di fine delle transazioni contengono gli indicatori orari e pertanto la posizione iniziale di Extract può essere calcolata solo rispetto a tali indicatori orari. Si tratta di un limite dell'interfaccia API utilizzata da Oracle GoldenGate. È tuttavia necessario tenere presente che il posizionamento in base all'indicatore orario non è accurato e può anche richiedere molto tempo. Quando è possibile, si consiglia di utilizzare le opzioni LRI o EOL.
YYYY-MM-DDThh:mm:ssZ
Data e ora (indicatore orario) nel formato specificato. Ad esempio, 2017-07-14T14:54:45Z.
yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]
Data e ora (indicatore orario) nel formato specificato. Per Oracle Extract in modalità integrata, il valore dell'indicatore orario deve essere successivo al valore dell'indicatore orario di registrazione di Extract con il database.
Il posizionamento in base all'indicatore orario in un log delle transazioni di SQL Server è condizionato dalle caratteristiche di SQL Server riportate di seguito.
-
Gli indicatori orari registrati nel log delle transazioni di SQL Server utilizzano una granularità di 3,3333 microsecondi (ms). Questo livello di granularità potrebbe non consentire il posizionamento in base al tempo tra due transazioni, se le transazioni hanno avuto inizio nello stesso intervallo di tempo 3,3333 ms.
-
Gli indicatori orari non vengono registrati in ogni record di log di SQL Server, ma solo nei record che iniziano la transazione e ne eseguono il commit e in altri record che non contengono dati.
-
Gli indicatori orari di SQL Server non provengono dal clock di sistema, ma da un clock interno specifico dei singoli processori in uso. Questo clock viene aggiornato più volte al secondo, ma tra gli aggiornamenti potrebbe non essere sincronizzato con il clock di sistema. Ciò riduce ulteriormente la precisione del posizionamento in base al tempo.
-
Gli indicatori orari registrati per i file di backup del log potrebbero non corrispondere esattamente alle ore registrate all'interno del backup (l'imprecisione è tuttavia inferiore a un secondo).
Il posizionamento su un numero LSN è preciso.
Il posizionamento in base all'indicatore orario in PostgreSQL prevede gli scenari riportati di seguito.
-
Scenario 1
Se l'impostazione di
track_commit_timestampèoff, all'avvio del processo Extract verrà visualizzato l'output seguente, indipendentemente dal metodo di posizionamento utilizzato:2020-04-29 02:15:54 INFO OGG-01517 Position of first record processed LSN: 0/2222C20, Jan 1, 1970 12:00:00 PM. -
Scenario 2
Se l'opzione
track_commit_timestampviene abilitata prima di registrare Extract, l'indicatore orario corretto verrà visualizzato dopo l'elaborazione del PUSH dei record nel database di origine, come indicato nell'esempio seguente:2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
Scenario 3
se la funzione
track_commit_timestampviene abilitata dopo la registrazione di Extract, può essere possibile che i record meno recenti siano disponibili nel log per il quale l'indicatore orario di commit non viene creato con l'ID transazione (transaction ID) associato. In questo caso, se non ottiene l'indicatore orario, il processo Extract eseguirà il fallback utilizzando l'indicatore orario indicato nello Scenario 1. Il risultato sarà analogo a quanto riportato di seguito.020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
Non è possibile specificare un indicatore orario passato se lo slot di replica è stato spostato altrove.
START
Valido per PostgreSQL.
Aggiunge un processo Extract senza specificare BEGIN NOW o LSN. Il processo Extract verrà avviato in modo automatico dalla posizione di riavvio dello slot di replica.
ADD_EXTRACT_attribute
È possibile modificare qualsiasi attributo specificato con il comando ALTER EXTRACT, con le eccezioni seguenti:
-
Modifica di un Extract specificato con l'opzione
EXTTRAILSOURCE. -
Modifica del numero di thread RAC specificato con l'opzione
THREADS.
Per queste eccezioni, eliminare il gruppo Extract e aggiungerlo di nuovo.
Se si utilizza l'opzione BEGIN, non combinare altre opzioni nell'istruzione. Eseguire istruzioni separate, ad esempio:
ALTER EXTRACT exte, BEGIN 2019-01-01
ALTER EXTRACT exte, ETROLLOVER
ALTER EXTRACT exte, SCN 789000
Se si utilizza l'opzione SCN o BEGIN per Integrated Extract, è necessario eseguire il comando DBLOGIN e il valore SCN o dell'indicatore orario specificato non può essere inferiore al primo SCN o dell'indicatore orario il server in uscita. Per individuare il primo SCN del server in uscita, eseguire il comando seguente:
INFO EXTRACT group_name, SHOWCH DETAIL
Il valore del primo SCN viene elencato come mostrato nell'esempio seguente:
Integrated Extract outbound server first scn: 0.665884 (665884)
EXTRBA offset_number
Valido per Db2 z/OS.
Specifica l'indirizzo byte relativo all'interno di un log delle transazioni in corrispondenza del quale iniziare l'acquisizione dei dati.
Il formato richiesto è 0Xnnn, dove nnn rappresenta un valore esadecimale di 1 e 20 cifre (il primo carattere è il numero zero e il secondo carattere può essere la lettera x maiuscola o minuscola).
EOL
Valido per Db2 per i, Db2 LUW, MySQL, PostgreSQL e SQL Server.
Configura l'elaborazione in modo che abbia inizio alla fine dei file di log (o dei diari) in cui verrà scritto il record successivo. Le eventuali transazioni attive non verranno acquisite.
Per Db2 LUW, configura l'elaborazione in modo che abbia inizio nella corrispondenza del valore LRI attivo nei file di log. il valore LRI attivo è la posizione alla fine dei file in cui verrà scritto il record successivo. Le eventuali transazioni attive non verranno acquisite.
Per PostgreSQL, il comando DBLOGIN è obbligatorio per la posizione in base a EOL.
Per MySQL, trova la posizione corrispondente alla fine del file e inizia a leggere le transazioni da tale posizione. La posizione EOL non è esatta se i dati vengono scritti in modo costante nel log binario.
TRANLOG LRI LRI_number
(Db2 LUW) È possibile utilizzare questa opzione per i sistemi Db2 LUW per specificare il valore del record LRI per il log delle transazioni di checkpoint.
Per PostgreSQL, il comando DBLOGIN è obbligatorio per la posizione in base a EOL.
REPORT file_name
Specifica il nome percorso completo di un file report Extract in una posizione diversa dall'impostazione predefinita dirrpt all'interno della directory di Oracle GoldenGate.
SCN value
Valido per Oracle.
Avvia Extract in corrispondenza della transazione del redo log con il numero SCN (System Change Number) specificato. Per Extract, il valore SCN deve essere maggiore del numero SCN di registrazione di Extract con il database. Per l'esecuzione dell'opzione SCN o BEGIN, è necessario utilizzare il comando DBLOGIN e il valore SCN o dell'indicatore orario specificato non può essere inferiore al primo SCN o all'indicatore orario specificato del server in uscita.
LSN value
Valido per Db2 z/OS, PostgreSQL e SQL Server.
Specifica il numero LSN di transazione in corrispondenza della quale avviare l'acquisizione dei dati. Un alias per questa opzione è EXTLSN.
Per Db2 z/OS, il valore LSN può essere una serie di cifre esadecimali o decimali. Se è in formato esadecimale, deve avere il prefisso 0X o 0x seguito da 1 a 20 cifre esadecimali: 0-9, a-g o A-G. Se è in formato decimale, non ha alcun prefisso ed è composto da 1 a 25 cifre decimali comprese tra 0 e 9.
Per PostgreSQL, il valore LSN può essere hi o lo. Impostare il valore hi per il punto di inserimento del file di log. Lo è l'offset nel file di log. La posizione di LSN deve trovarsi tra la posizione di riavvio dello slot di replica e quella corrente dello slot di immissione suggerita. Se la posizione specificata stessa si trova nell'intervallo indicato, Extract restituirà un errore.
Per SQL Server, LSN specifica il numero LSN di transazione in corrispondenza della quale avviare l'acquisizione dei dati. Un alias per questa opzione è EXTLSN.
Il valore di LSN specificato deve esistere come tran_begin_lsn valido reperibili nella tabella di sistema cdc.lsn_time_mapping, altrimenti Extract tenterà di eseguire il posizionamento dopo il valore LSN fornito.
Le specifiche LSN valide per SQL Server sono costituite da:
-
stringa esadecimale separata da due punti (8:8:4) con zeri iniziali aggiunti e il prefisso 0X, ad esempio 0X00000d7e:0000036b:0001;
-
stringa esadecimale separata da due punti con il prefisso 0X e senza zeri iniziali, ad esempio 0Xd7e:36b:1;
Per trovare il valore LSN minimo disponibile eseguire una query:
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
Gli esempi seguenti mostrano l'uso del valore LSN per Db2 z/OS:
Esempio 1:
ALTER EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
Esempio 2:
ALTER EXTRACT extn TRANLOG, LSN 22216433159121980904448
Gli esempi seguenti mostrano il valore LSN per SQL Server:
ALTER EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LOGNUM
Valido per MySQL.
Il numero del file di log. Ad esempio, se il nome di file di log necessario è test.000034, il valore di LOGNUM è 34. Extract cercherà questo file di log. Nota: nell'architettura dei microservizi il comando ALTER EXTRACT non riuscirà se il valore di LOGNUM è precedente a zeri. Ad esempio, ALTER EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0 non riuscirà. Per la buona riuscita di questo esempio, impostare LOGNUM su 1.
LOGPOS
Valido per MySQL.
Valore di offset di un evento nel file di log che identifica un record di transazione specifico. I valori di offset degli eventi vengono memorizzati nella sezione dell'intestazione di un record di log. Per posizionare all'inizio di un file binlog, impostare LOGPOS su 0.
ETROLLOVER
Utilizzare questa opzione per le situazioni di recupero manuale che richiedono il riposizionamento e la rigenerazione dei file di trail per un Extract primario e l'upgrade di Oracle GoldenGate da una versione precedente.
Induce Extract a creare una nuova copia del file di trail e passa al file successivo nella sequenza trail al riavvio, richiedendo il riposizionamento manuale dei processi di lettura quali Data Pump o Replicat sul nuovo numero della sequenza trail.
Con ETROLLOVER, Extract acquisisce tutti i record dopo l'SCN specificato con cui Extract viene avviato, che siano o meno già stati acquisiti e scritti o meno nel trail. Senza ETROLLOVER, Extract ignorerà l'acquisizione dei record già acquisiti e scritti nel trail.
A partire dalla release 19c, durante l'elaborazione del servizio di distribuzione vengono effettuate le operazioni elencate di seguito.
-
Se si eseguisce l'upgrade dell'Extract primario della distribuzione
ETROLLOVERcon la directory di trail di destinazione, il servizio theDistribution rileva automaticamente il fileETROLLOVERdi trail origine e inizia la lettura dal file della traccia di input successivo. Si tratta di un comando uguale a quello di Data PumpALTER EXTRACT groupname EXTSEQNO seqno+1 EXTRBA 0. -
Dopo l'upgrade, il servizio di distribuzione esegue automaticamente il comando
ETROLLOVERper il file del trail di output al riavvio e scrive in modo corretto il file del trail successivo. Questo funzionamento è uguale a quello del comandoALTER EXTRACT groupname ETROLLOVERdi Data Pump.
DESC ‘description’
Specifica una descrizione del gruppo, ad esempio 'Extracts account_tab on Serv1'. Racchiudere la descrizione tra apici. È possibile utilizzare la parola chiave abbreviata DESC o la parola completa DESCRIPTION.
ENCRYPTIONPROFILE
Specifica il nome del profilo di cifratura per Extract. Questo nome fa distinzione tra maiuscole e minuscolo per il nome, è necessario utilizzare il nome esatto immesso con ADD EXTRACT.
GTIDSET gtidset
Valido per MySQL.
Specifica il posizionamento iniziale di Extract utilizzando l'opzione relativa al tipo di posizione del set GTID per l'acquisizione basata su GTID per MySQL. Le origini MySQL supportate per il set GTID sono MySQL Server 8.0, MySQL Server 5.7 e MySQL Database Service (MDS). La dimensione massima supportata per il set GTID è 64 KB.
Sintassi:
ALTER EXTRACT extract_name, TRANLOG, GTIDSET gtidset
L'esempio seguente include tutte le combinazioni dei formati validi del set GTID.
Esempio 1:
ALTER EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
Esempio 2:
ALTER EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
Esempio 3:
ALTER EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
Esempio 4:
ALTER EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
Nota: come mostrato nell'esempio 4, quando il set GTID contiene più uuid, per formare una richiesta API REST, questo set GTID viene suddiviso in più set GTID utilizzando il separatore di virgole.
CRITICAL
Indica se il processo è di importanza critica per la distribuzione.
PROFILE
Nome del profilo di avvio automatico. Questo nome fa distinzione tra maiuscole e minuscolo per il nome, è necessario utilizzare il nome esatto immesso con ALTER EXTRACT.
AUTOSTART
Specifica se il processo gestito deve essere avviato in modo automatico all'avvio del servizio di amministrazione. Il valore predefinito è YES.
RETRIES
Numero massimo di tentativi per il riavvio del task prima di annullare gli sforzi di nuovi tentativi. Questa opzione è facoltativa.
WAITSECONDS
Il periodo di tempo, in secondi, durante il quale vengono contati i nuovi tentativi.
RESETSECONDS
Reimposta il periodo di tempo durante il quale vengono contati i nuovi tentativi.
DISABLEONFAILURE
Quando l'impostazione è TRUE, il task viene disabilitato all'esaurimento del numero dei nuovi tentativi consentiti.
INFO EXTRACT group-name, SHOWCH DETAIL
Il valore del primo SCN viene elencato come mostrato nell'esempio seguente:
Integrated Extract outbound server first scn: 0.665884 (665884)
Esempi
Il comando seguente modifica il gruppo Extract per avviare l'elaborazione dei dati dal 1°gennaio 2019.
ALTER EXTRACT exte, BEGIN 2019-01-01
Il comando seguente modifica il gruppo Extract per avviare l'elaborazione in corrispondenza di una posizione specifica nel trail.
ALTER EXTRACT exte, EXTSEQNO 26, EXTRBA 338
Il comando seguente modifica il gruppo Extract in un ambiente SQL Server per l'avvio in corrispondenza di un LSN specifico.
ALTER EXTRACT exte, LSN 0Xd7e:36b:1
Il comando seguente modifica il gruppo Extract per passare al file successivo nella sequenza del trail.
ALTER EXTRACT exte, ETROLLOVER
Il comando seguente modifica il gruppo Extract per eseguire l'upgrade all'acquisizione integrata.
ALTER EXTRACT exte, UPGRADE INTEGRATED TRANLOG
Il seguente comando utilizza ETROLLOVER per impedire che i record duplicati siano filtrati con l'SCN precedente, 778899.
ALTER EXTRACT exte, SCN 778899
ALTER EXTRACT exte ETROLLOVER
START EXTRACT exte
Se non si utilizza ETROLLOVER e si modifica Extract usando il valore SCN precedente, i record duplicati non verranno elaborati. Di seguito è riportato il comando che consente di modificare Extract in modo da filtrare i record duplicati:
ALTER EXTRACT exte, SCN 778899
START EXTRACT exte
Nell'esempio seguente è illustrato ALTER EXTRACT per un punto iniziale di diario per IBM per i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn
Nell'esempio seguente è illustrato ALTER EXTRACT per un punto iniziale di diario e ricezione per IBM per i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
Nell'esempio seguente viene modificato un gruppo Extract in un sistema Db2 LUW.
ALTER EXTRACT exte, TRANLOG LRI 8066.322711
Nell'esempio seguente vengono mostrate le opzioni di ALTER EXTRACT utilizzate con PostgreSQL:
ALTER EXTRACT exte, EOL
ALTER EXTRACT POSTEXT, LSN 0/156784
ALTER EXTRACT POSTEXT, BEGIN 2022-02-18T14:50:43.4230Z