Administración de una configuración de Coordinated Replicat

Esta sección contiene instrucciones para coordinar threads y volver a particionar la carga de trabajo entre threads nuevos o diferentes. Un Replicat coordinado se debe parar correctamente con el comando STOP REPLICAT antes de realizar modificaciones en las especificaciones de partición en las cláusulas THREAD o THREADRANGE de las sentencias MAP. Una parada limpia garantiza que todos los hilos, que pueden estar en diferentes lugares del sendero en cualquier punto dado, terminen su trabajo y lleguen a una ubicación de sendero común.

Al iniciar, Replicat emite un error y finaliza de forma anormal si detecta que el último cierre no estaba limpio y que la partición en las sentencias MAP se cambió para contener un número diferente de threads (se agregaron o eliminaron threads). Sin embargo, si los mismos threads se mantienen en el archivo de parámetros, pero simplemente se reorganizan entre diferentes sentencias MAP, Replicat emite una advertencia pero no finaliza de forma anormal. Esto puede provocar que falten registros o estén duplicados, ya que no hay forma de garantizar la continuidad de las asignaciones de subproceso a carga de trabajo de la ejecución anterior.

A continuación, se muestra un ejemplo de esta condición.

A continuación se muestra el esquema de partición original:

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

La siguiente nueva partición del esquema original solo produce una advertencia:

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

En esta sección, se proporcionan instrucciones para cerrar Replicat sin problemas antes de realizar una nueva partición, así como instrucciones para intentar recuperar la continuidad de Replicat cuando se realiza una nueva partición después de un cierre sin limpiar.

Las siguientes tareas se pueden realizar para un grupo de Replicat en modo coordinado.

Realización de una Nueva Partición Planificada de la Carga de Trabajo

Una nueva partición planificada se produce cuando se permite que Replicat se cierre correctamente antes de que se vuelva a iniciar con un nuevo archivo de parámetros que contiene la partición de thread actualizada. Un cierre limpio permite que todos los threads lleguen a una posición de punto de control común en la pista. En ese momento, el nuevo esquema de partición se puede aplicar en la siguiente ejecución.

  1. Ejecute el cliente de administración.

  2. Pare Replicat.

STOP REPLICAT *group*
  1. Abra el archivo de parámetros para editarlo.
EDIT PARAMS *group*
  1. Realice los cambios necesarios en las especificaciones THREAD o THREADRANGE en las sentencias MAP.

  2. Guarde y cierre el archivo de parámetros.

  3. Iniciar Replicación.

START REPLICAT *group*

Recuperación de Replicat después de una Nueva Partición No Planificada

Una repartición no planificada se produce cuando no se permite que Replicat se cierre correctamente antes de que se vuelva a iniciar con un nuevo archivo de parámetros que contiene la partición de subprocesos actualizada. En este escenario, algunos o todos los hilos antiguos no pudieron terminar su trabajo y llegar a un punto de control común. Al reiniciar, el thread del coordinador intenta aplicar el esquema de partición antiguo y Replicat termina de forma anormal con un error. Puede recuperar el grupo de Replicat coordinado de esta condición de una de las siguientes maneras:

Reprocesamiento desde la marca de agua baja con HANDLECOLLISIONS

En este procedimiento, puede cambiar la posición de todos los subprocesos a la posición low watermark. Esta es la primera posición de punto de control realizada entre todos los threads. Para decirlo de otra manera, la posición de marca de agua baja es el último registro procesado por el hilo más lento antes de la parada sucia. Cuando inicia Replicat, los threads vuelven a procesar las operaciones que estaban procesando antes de que se detuviera Replicat, y el parámetro HANDLECOLLISIONS maneja los errores de registro duplicado y de registro faltante que se producen a medida que los threads más rápidos vuelven a procesar las operaciones que aplicaron antes de la parada no limpia.

  1. Agregue el parámetro HANDLECOLLISIONS al archivo de parámetros Replicat. No es necesario utilizar ninguna opción THREADS.

  2. Emita el comando INFO REPLICAT para el grupo Replicat como un todo (el subproceso del coordinador). Registre el RBA del punto de control. Este es el valor de marca de agua baja. Esta salida también muestra los ID de thread activos en la columna Group Name. Haga un registro de estos, también.

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. Emita el comando INFO REPLICAT para cada ID de thread de procesamiento y registre la posición de RBA de cada thread. Anote el RBA mayor. Esta es la marca de agua superior del grupo 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. Ejecute el comando ALTER REPLICAT para el subproceso de coordinador (Replicat en su conjunto, sin ningún ID de subproceso) y coloque el RBA de lenta marca de agua que ha registrado.
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
  1. Iniciar Replicación.
START REPLICAT *group*
  1. Ejecute el comando INFO REPLICAT básico hasta que muestre un RBA que sea mayor que la marca de agua superior que registró. HANDLECOLLISIONS gestiona cualquier colisión que se produzca debido a transacciones aplicadas anteriormente.
INFO REPLICAT *group*
  1. Pare Replicat.
STOP REPLICAT *group*
  1. Elimine o comente el parámetro HANDLECOLLISIONS.

  2. Iniciar Replicación.

START REPLICAT *group*

Uso del archivo de parámetros guardado automáticamente

Se guarda una copia del archivo de parámetros original cada vez que se edita el archivo de parámetros antes de cerrar Replicat correctamente. Puede volver a este archivo de parámetros y, a continuación, volver a sincronizar los threads para que todos se pongan al día con el thread que tenía la posición de punto de control más reciente. Una vez sincronizados los threads, puede cambiar al nuevo archivo de parámetros y, a continuación, iniciar Replicat.

  1. Guarde el nuevo archivo de parámetros con un nombre diferente y, a continuación, cambie el nombre del archivo de parámetros original guardado por el nombre correcto (igual que el nombre del grupo). El archivo de parámetros guardado tiene un sufijo .backup y se almacena en el subdirectorio dirprm del directorio de instalación de Oracle GoldenGate.

  2. Ejecute el siguiente comando para sincronizar los threads de Replicat con la posición de punto de control máxima. Este comando inicia Replicat automáticamente y ejecuta los threads hasta que alcanzan la posición de punto de control máxima.

SYNCHRONIZE REPLICAT *group*
  1. Ejecute el comando STATUS REPLICAT hasta que muestre que Replicat se ha parado correctamente.
STATUS REPLICAT *group*
  1. Guarde el archivo de parámetros original con un nombre diferente y, a continuación, cambie el nombre del nuevo archivo de parámetros por el nombre del grupo.

  2. Iniciar Replicación.

START REPLICAT *group*