Replicação entre servidores
Como atualizar uma sequência manualmente quando o node de replicação está sem comunicação com seu master?
RTREPLICATOR.FAQ-12497
Caso um node replicado ficar sem sequência por falta de comunicação com o node master, é possível criar um novo range manualmente da seguinte forma:
Consumir uma faixa de sequência no node master
A primeira coisa a ser feita é consumir um range do node master. Isso pode ser feito através do Serviço de replicação de sequências que pode ser disparado por uma URL tipo:
http://.../ELIGO2/app/UtlSequenceRange?P_SEQUENCE={nome-da-sequencia}&P_RANGE={quantidade-a-ser-consumida}&P_HASH={hash-de-autenticacao}&P_ORIGIN={nome-servidor}
Substituir os valores:
- {nome-da-sequência} - Nome da sequência que se deseja consumir.
- {quantidade-a-ser-consumida} - Número de valores a serem consumidos da sequência.
- {hash-de-autenticacao} - Senha de conexão que deverá ser passada ao serviço. Esta senha pode ser consultada pela preferencia SEQUENCE.UTL_SEQUENCE_RANGE.PASSWORD_HASH.
- {nome-servidor} - Nome do servidor que está consumindo a sequência. Este é o nome que é apresentado como nome global em Rede de replicação ou pelo Consulta status da replicação (no slave).
Ao consumir a sequência, deve ser recebido um retorno assim:
Status=OK
NEXT_VALUE=6259922
Anotar este número.
Registrar manualmente um range de sequência no node slave:
Para registrar o range no node slave, executar um DML como o exemplo abaixo:
update sequences
set next_range_min_value=6259922
, next_range_max_value=6259922+{quantidade-a-ser-consumida}-1
where sequence = 'SEQ_ATIVIDADES';
;