Amministrazione della configurazione di un Replicat coordinato
Questa sezione contiene istruzioni per il coordinamento dei thread e il partizionamento del carico di lavoro tra thread nuovi o diversi. Un Replicat coordinato deve essere arrestato in modo pulito con il comando STOP REPLICAT prima di apportare modifiche alle specifiche della partizione nelle clausole THREAD o THREADRANGE delle istruzioni MAP. Una fermata pulita assicura che tutti i fili, che possono essere in diverse posizioni nel percorso in un dato punto, finiscano tutti il loro lavoro e arrivino a una posizione comune del sentiero.
All'avvio, Replicat genera un errore e si interrompe se rileva che l'ultimo arresto non è stato pulito e che il partizionamento nelle istruzioni MAP è stato modificato in modo da contenere un numero diverso di thread (i thread sono stati aggiunti o rimossi). Tuttavia, se gli stessi thread vengono mantenuti nel file dei parametri ma semplicemente riorganizzati tra diverse istruzioni MAP, Replicat emette un avviso ma non interrompe. Ciò può causare la mancanza o la duplicazione di record, poiché non è possibile garantire la continuità delle allocazioni thread-workload dall'esecuzione precedente.
Di seguito è riportato un esempio di questa condizione.
Di seguito è riportato lo schema di partizionamento originale.
MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);
Il seguente ripartizionamento del regime originale produce solo un avvertimento:
MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);
Questa sezione fornisce istruzioni per l'arresto pulito di Replicat prima di eseguire un nuovo partizionamento, nonché istruzioni per il tentativo di recuperare la continuità di Replicat quando viene eseguito un nuovo partizionamento dopo un arresto non corretto.
È possibile eseguire i task riportati di seguito per un gruppo Replicat in modalità coordinata.
Repartizionamento pianificato del carico di lavoro
Un nuovo partizionamento pianificato si verifica quando a Replicat è consentito chiudere in modo pulito prima che venga avviato di nuovo con un nuovo file di parametri contenente il partizionamento thread aggiornato. Un arresto pulito consente a tutti i thread di arrivare a una posizione di checkpoint comune nel trail. A quel punto, il nuovo schema di partizionamento può essere applicato nell'esecuzione successiva.
-
Esegui client di amministrazione.
-
Arrestare Replicat.
STOP REPLICAT *group*
- Aprire il file dei parametri per la modifica.
EDIT PARAMS *group*
-
Apportare le modifiche necessarie alle specifiche di
THREADoTHREADRANGEnelle istruzioniMAP. -
Salvare e chiudere il file dei parametri.
-
Avvia replica.
START REPLICAT *group*
Recupero di Replicat dopo un nuovo partizionamento non pianificato
Un ripartizionamento non pianificato si verifica quando Replicat non può essere arrestato in modo pulito prima di essere riavviato con un nuovo file dei parametri contenente il partizionamento thread aggiornato. In questo scenario, alcuni o tutti i vecchi thread non sono stati in grado di terminare il loro lavoro e arrivare a un checkpoint comune. Al riavvio, il thread del coordinatore tenta di applicare il vecchio schema di partizionamento e Replicat viene interrotto con un errore. È possibile recuperare il gruppo Replicat coordinato da questa condizione in uno dei modi riportati di seguito.
-
Utilizzare la copia salvata automaticamente del file dei parametri
-
Rielabora dalla filigrana bassa con
HANDLECOLLISIONS
Rielaborazione dalla filigrana bassa con HANDLECOLLISIONS
In questa procedura è possibile riposizionare tutti i thread nella posizione bassa filigrana. Questa è la prima posizione di checkpoint eseguita tra tutti i thread. Per dirlo in un altro modo, la posizione della filigrana bassa è l'ultimo record elaborato dal thread più lento prima dell'arresto impuro. Quando si avvia Replicat, i thread rielaborano le operazioni che stavano elaborando prima dell'arresto di Replicat e il parametro HANDLECOLLISIONS gestisce eventuali errori di record duplicati e record mancanti che si verificano quando i thread più veloci rielaborano le operazioni applicate prima dell'arresto non corretto.
-
Aggiungere il parametro
HANDLECOLLISIONSal file dei parametri Replicat. Non è necessario utilizzare alcuna opzioneTHREADS. -
Eseguire il comando
INFO REPLICATper l'intero gruppo Replicat (il thread del coordinatore). Creare un record dell'RBA del checkpoint. Il valore watermark basso. Questo output mostra anche gli ID dei thread attivi nella colonnaGroup Name. Registrare anche questi elementi.
INFO REPLICAT *group*
For example:
<pre class="copy"><code>OGG(slc03jgo) 3> 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>
- Eseguire il comando
INFO REPLICATper ogni ID thread di elaborazione e registrare la posizione RBA di ogni thread. Prendere nota dell'RBA più alto. Questo è il marchio con watermark massimo del gruppo 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>
- Eseguire il comando
ALTER REPLICATper il thread del coordinatore (Replicat nel suo complesso, senza alcun ID di thread) e posizionare l'RBA low watermark registrato.
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
- Avvia replica.
START REPLICAT *group*
- Eseguire il comando
INFO REPLICATdi base finché non viene visualizzato un RBA superiore al valore high watermark registrato.HANDLECOLLISIONSgestisce le collisioni che si verificano a causa di transazioni applicate in precedenza.
INFO REPLICAT *group*
- Arrestare Replicat.
STOP REPLICAT *group*
-
Rimuovere o commentare il parametro
HANDLECOLLISIONS. -
Avvia replica.
START REPLICAT *group*
Utilizzo del file dei parametri salvato automaticamente
Una copia del file dei parametri originale viene salvata ogni volta che il file dei parametri viene modificato prima di chiudere Replicat in modo pulito. È possibile ripristinare questo file di parametri e quindi risincronizzare i thread in modo che tutti raggiungano il thread con la posizione di checkpoint più recente. Una volta sincronizzati i thread, è possibile passare al nuovo file dei parametri e quindi avviare Replicat.
-
Salvare il nuovo file dei parametri con un nome diverso, quindi rinominare il file dei parametri originale salvato con il nome corretto (come il nome del gruppo). Il file dei parametri salvato ha un suffisso
.backupe viene memorizzato nella sottodirectorydirprmdella directory di installazione di Oracle GoldenGate. -
Eseguire il comando seguente per sincronizzare i thread Replicat con la posizione massima del checkpoint. Questo comando avvia automaticamente Replicat ed esegue i thread fino a raggiungere la posizione massima del checkpoint.
SYNCHRONIZE REPLICAT *group*
- Eseguire il comando
STATUS REPLICATfinché non viene visualizzato che Replicat è stato arrestato in modo pulito.
STATUS REPLICAT *group*
-
Salvare il file dei parametri originale con un nome diverso, quindi rinominare il nuovo file dei parametri con il nome del gruppo.
-
Avvia replica.
START REPLICAT *group*