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.

  1. Esegui client di amministrazione.

  2. Arrestare Replicat.

STOP REPLICAT *group*
  1. Aprire il file dei parametri per la modifica.
EDIT PARAMS *group*
  1. Apportare le modifiche necessarie alle specifiche di THREAD o THREADRANGE nelle istruzioni MAP.

  2. Salvare e chiudere il file dei parametri.

  3. 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.

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.

  1. Aggiungere il parametro HANDLECOLLISIONS al file dei parametri Replicat. Non è necessario utilizzare alcuna opzione THREADS.

  2. Eseguire il comando INFO REPLICAT per 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 colonna Group Name. Registrare anche questi elementi.

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. Eseguire il comando INFO REPLICAT per 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>
  1. Eseguire il comando ALTER REPLICAT per 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*
  1. Avvia replica.
START REPLICAT *group*
  1. Eseguire il comando INFO REPLICAT di base finché non viene visualizzato un RBA superiore al valore high watermark registrato. HANDLECOLLISIONS gestisce le collisioni che si verificano a causa di transazioni applicate in precedenza.
INFO REPLICAT *group*
  1. Arrestare Replicat.
STOP REPLICAT *group*
  1. Rimuovere o commentare il parametro HANDLECOLLISIONS.

  2. 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.

  1. 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 .backup e viene memorizzato nella sottodirectory dirprm della directory di installazione di Oracle GoldenGate.

  2. 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*
  1. Eseguire il comando STATUS REPLICAT finché non viene visualizzato che Replicat è stato arrestato in modo pulito.
STATUS REPLICAT *group*
  1. Salvare il file dei parametri originale con un nome diverso, quindi rinominare il nuovo file dei parametri con il nome del gruppo.

  2. Avvia replica.

START REPLICAT *group*