Pular para o conteúdo
WaitScope Entrar Solicitar acesso (por e-mail) Menu

Troca de blocos entre instâncias do RAC

O achado CLUSTER aparece quando os eventos gc pesam bastante no tempo total: instâncias do RAC disputando os mesmos blocos, e como reduzir as trocas.

Vale para: Traces 10046 com esperas (nível 8 ou 12), em RAC

Em RAC, cada instância tem o seu buffer cache. Quando a sessão precisa de um bloco cuja versão está em outra instância, ela espera a troca pelo interconnect: são os eventos gc. Muito tempo neles quer dizer que as instâncias disputam os mesmos blocos.

Sintomas

No Diagnóstico, aparece o achado Troca de blocos entre instâncias do RAC (CLUSTER). O texto diz quanto do tempo total ficou na classe de espera Cluster, em percentual e em segundos, lista os eventos da classe que pesaram e termina com Ver perfil por classe.

O achado aparece quando a classe Cluster pesa bastante no tempo total: em RAC, alguma troca de blocos é normal. A severidade é sempre média. Entram na classe os eventos gc, como gc cr block 2-way, gc current block busy e gc buffer busy acquire.

O cartão de cada evento gc, que abre ao clicar no nome dele no perfil, explica os nomes: cr é leitura consistente e current é a versão atual do bloco, para alterar; 2-way e 3-way contam as instâncias envolvidas; grant é a permissão para ler do disco; busy quer dizer que o bloco estava em uso no outro nó.

Causa

  • A mesma parte da aplicação roda em mais de uma instância e altera os mesmos blocos: cada alteração leva o bloco de uma instância para a outra.
  • Blocos quentes: índice com chave crescente (sequence, data), sequence com order ou cache pequeno, tabela pequena de controle que todas as sessões atualizam.
  • Interconnect lento ou instância remota sobrecarregada: cada troca demora, e pesam os eventos com busy e congested no nome.

Resolução

Ver quais eventos pesam e quanto dura cada troca

No perfil, compare Ocorrências e Média (s) dos eventos gc. O cartão do evento considera normal pouco tempo por bloco, abaixo de 1 ms com interconnect bom. Muitas trocas rápidas apontam para disputa dos mesmos blocos; poucas trocas lentas, para o interconnect ou para a carga da outra instância.

Concentrar o serviço numa instância

O cartão Sessão e ambiente, no Resumo, mostra a Instância e o Serviço do trace. Veja em que instâncias estão as sessões de cada serviço:

select service_name, inst_id, count(*) as sessoes
  from gv$session
 where type = 'USER'
 group by service_name, inst_id
 order by service_name, inst_id;

Se o mesmo serviço roda em todas as instâncias e as sessões dele alteram as mesmas tabelas, configure o serviço com uma instância preferida e as outras como disponíveis: a carga fica numa instância, e as outras assumem só na falha. A documentação da Oracle sobre serviços no RAC descreve a configuração.

Desfazer os blocos quentes

  • Sequence: cache maior e noorder, para cada instância usar a sua faixa de números (alter sequence exemplo.pedido_seq cache 1000 noorder;).
  • Índice com chave crescente: índice reverse key ou particionado por hash, como em inserção concorrente no mesmo bloco.
  • Tabela pequena que todos atualizam: separe as linhas por instância ou por sessão.

Interconnect e instância remota

Com média alta por troca, o problema está fora da sessão: a rede do interconnect ou a CPU da outra instância, onde os processos LMS atendem os pedidos de bloco. Leve ao DBA a média dos eventos gc e o Período do trace.

Como confirmar

  1. Aplique uma mudança por vez: serviço com instância preferida, sequence com cache ou índice novo.
  2. Ligue o trace da mesma operação com esperas, na instância em que ela roda agora (ligar o trace com o DBMS_MONITOR).
  3. Envie o arquivo novo e abra o relatório.
  4. Compare a linha Cluster em Por classe de espera e os eventos gc no perfil.

Resultado: a classe Cluster deixa de pesar no tempo total e o achado some do Diagnóstico. Com a carga numa instância só, as Ocorrências dos eventos gc caem; com o interconnect resolvido, cai a Média (s).

No relatório

O relatório de exemplo não tem espera da classe Cluster; os links abrem as mesmas seções nele.

Numa coleta com sessões de instâncias diferentes, a tabela Sessões da coleta mostra a instância de cada sessão (coleta).

Atualizado em 29/10/2026. Relatar erro nesta página