Administrando uma Configuração de Replicat Coordenado
Esta seção contém instruções para coordenar threads e reparticionar a carga de trabalho entre threads novos ou diferentes. Um Replicat coordenado deve ser interrompido corretamente com o comando STOP REPLICAT antes de fazer modificações nas especificações de partição nas cláusulas THREAD ou THREADRANGE das instruções MAP. Uma parada limpa garante que todos os fios, que podem estar em locais diferentes na trilha em qualquer ponto, terminem seu trabalho e cheguem a um local de trilha comum.
Na inicialização, o Replicat emitirá um erro e será encerrado se detectar que o último shutdown não foi limpo e que o particionamento nas instruções MAP foi alterado para conter outro número de threads (os threads foram adicionados ou removidos). No entanto, se os mesmos threads forem mantidos no arquivo de parâmetros, mas simplesmente reorganizados entre diferentes instruções MAP, o Replicat emitirá uma advertência, mas não será interrompido. Isso pode resultar em registros ausentes ou duplicados, porque não há como garantir a continuidade das alocações de thread para carga de trabalho da execução anterior.
Veja a seguir um exemplo desta condição.
A seguir está o esquema de particionamento original:
MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);
O seguinte reparticionamento do esquema original produz apenas um aviso:
MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);
Esta seção fornece instruções para fazer shutdown correto do Replicat antes de executar um novo particionamento, bem como instruções para tentar recuperar a continuidade do Replicat quando um novo particionamento é executado após um shutdown impuro.
As tarefas a seguir podem ser executadas para um grupo Replicat no modo coordenado.
Executando um Reparticionamento Planejado da Carga de Trabalho
Um reparticionamento planejado ocorre quando o Replicat tem permissão para fazer shutdown corretamente antes de ser iniciado novamente com um novo arquivo de parâmetros que contém o particionamento de thread atualizado. Um shutdown limpo permite que todos os threads cheguem a uma posição de checkpoint comum na trilha. Nesse ponto, o novo esquema de particionamento pode ser aplicado na próxima execução.
-
Execute o Admin Client.
-
Interrompa o Replicat.
STOP REPLICAT *group*
- Abra o arquivo de parâmetros para edição.
EDIT PARAMS *group*
-
Faça as alterações necessárias nas especificações
THREADouTHREADRANGEnas instruçõesMAP. -
Salve e feche o arquivo de parâmetros.
-
Iniciar Replicação.
START REPLICAT *group*
Recuperando o Replicat Após um Reparticionamento Não Planejado
Um reparticionamento não planejado ocorre quando o Replicat não tem permissão para fazer shutdown corretamente antes de ser iniciado novamente com um novo arquivo de parâmetros que contém o particionamento de thread atualizado. Neste cenário, alguns ou todos os fios antigos não foram capazes de terminar o seu trabalho e chegar a um ponto de verificação comum. Ao reiniciar, o thread do coordenador tenta aplicar o esquema de particionamento antigo e o Replicat termina com um erro. Você pode recuperar o grupo Replicat coordenado dessa condição de uma das seguintes maneiras:
-
Usar a cópia salva automaticamente do arquivo de parâmetros
-
Reprocessar a partir da marca d'água baixa com
HANDLECOLLISIONS
Reprocessamento a partir da marca d'água baixa com HANDLECOLLISIONS
Neste procedimento, você reposiciona todos os threads na posição marca d'água baixa. Esta é a primeira posição de checkpoint executada entre todos os threads. Para afirmar de outra forma, a posição de marca d'água baixa é o último registro processado pelo thread mais lento antes da parada impura. Quando você inicia o Replicat, os threads reprocessam as operações que estavam processando antes da interrupção do Replicat, e o parâmetro HANDLECOLLISIONS trata qualquer erro de registro duplicado e de registro ausente que ocorra como as operações de reprocessamento de threads mais rápidas aplicadas antes da interrupção imunda.
-
Adicione o parâmetro
HANDLECOLLISIONSao arquivo de parâmetros Replicat. Não é necessário usar nenhuma opçãoTHREADS. -
Emita o comando
INFO REPLICATpara o grupo Replicat como um todo (o thread coordenador). Faça um registro da RBA do checkpoint. Este é o valor da marca d'água baixa. Essa saída também mostra os IDs de thread ativos na colunaGroup Name. Faça um registro desses também.
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>
- Emita o comando
INFO REPLICATpara cada ID de thread de processamento e registre a posição de RBA de cada thread. Anote a RBA mais alta. Esta é a marca d'água superior do 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>
- Emita o comando
ALTER REPLICATpara o thread coordenador (Replicat como um todo, sem qualquer ID de thread) e posicione-o na RBA baixa marca d'água que você registrou.
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
- Iniciar Replicação.
START REPLICAT *group*
- Emita o comando
INFO REPLICATbásico até que ele mostre um RBA maior que a marca d'água alta registrada. OHANDLECOLLISIONStrata todas as colisões que ocorrem devido a transações aplicadas anteriormente.
INFO REPLICAT *group*
- Interrompa o Replicat.
STOP REPLICAT *group*
-
Remova ou comente o parâmetro
HANDLECOLLISIONS. -
Iniciar Replicação.
START REPLICAT *group*
Usando o Arquivo de Parâmetros Salvos Automaticamente
Uma cópia do arquivo de parâmetros original é salva sempre que o arquivo de parâmetros é editado antes de fazer shutdown do Replicat corretamente. Você pode reverter para esse arquivo de parâmetros e, em seguida, ressincronizar os threads para que todos eles alcancem o thread que tinha a posição de checkpoint mais recente. Depois que os threads forem sincronizados, você poderá alternar para o novo arquivo de parâmetros e, em seguida, iniciar o Replicat.
-
Salve o novo arquivo de parâmetros com outro nome e renomeie o arquivo de parâmetros original salvo com o nome correto (igual ao nome do grupo). O arquivo de parâmetros salvo tem um sufixo
.backupe é armazenado no subdiretóriodirprmdo diretório de instalação do Oracle GoldenGate. -
Emita o comando a seguir para sincronizar os threads de Replicat com a posição máxima do checkpoint. Esse comando inicia automaticamente o Replicat e executa os threads até que eles atinjam a posição máxima do checkpoint.
SYNCHRONIZE REPLICAT *group*
- Execute o comando
STATUS REPLICATaté mostrar que o Replicat foi interrompido corretamente.
STATUS REPLICAT *group*
-
Salve o arquivo de parâmetros original em outro nome e, em seguida, renomeie o novo arquivo de parâmetros para o nome do grupo.
-
Iniciar Replicação.
START REPLICAT *group*