Arquivo do mês: janeiro 2012

Load-Oriented Waits

Saudações pessoal, segue breves explicações sobre waits no Oracle RAC:

gc current block congested
gc cr block congested
gc current grant congested
gc cr grant congested

Indica que ocorreu um delay de processamento no GCS, geralmente causado por uma saturação de CPU.
Possíveis soluções:
– Aumentar a quantidade/poder de processamento de CPU’s no DB Server
– Implementar balanceamento do cluster no nível de serviço
– Adição de mais nós no cluster

O tempo de espera desse evento engloba, desde o momento que a sessão inicia a wait, até o recebimento do bloco.Sempre que a requisição por um block/message transfer, demorar mais que 1ms na internal queue, o Oracle irá considerar um overload.
Isso pode acontecer quando o processo background LMS não consegue realizar todo processamento da sua fila de solicitações. Um possível workaround é aumentar o número de processos background LMS. Para isso, é necessário aumentar o parâmetro GCS_SERVER_PROCESSES.O calculo da quantidade de processos LMS é baseado na quantidade de core dividido por dois. Se um servidor possui oito cores, então o parâmetro GCS_SERVER_PROCESSES será 4 (8 cores/2).Então, teremos quatro processos background LMS.
A view X$KJMSDP mantém informações preciosas quanto a carga de trabalho dos processos LMS.
Em um ambiente RAC bem balanceado, raramente veremos esses tipos de espera.

Referência: Gopalakrishnan, K . Oracle Database 11g. Oracle Real Application Clusters Handbook Second Edition. Oracle Press, 2011.

Contention-Oriented Waits

Saudações pessoal, terça feira chuvosa na cidade de São Paulo, fora o calor. Hoje estou postando mais eventos de esperas que podem ocorrer no Oracle RAC.

– gc current bock busy
– gc cr block busy
– gc current buffer busy

Essas esperas indicam que o envio de um bloco foi adiado porque alguma alteração no bloco não foi liberado para disco, ou, devido a alta concorrência no bloco sendo requisitado.
Isso pode acontecer quando uma instância está alterando um bloco de indice, e outra sessão está aguardando a liberação desse bloco para inserir ou atualizar o bloco. Nesse caso a espera “gc current block busy” pode ser seguida das esperas “gc current split” ou “gc buffer busy”.
Um buffer pode também estar estar em status busy na instância local, ou, por uma sessão que iniciou uma operação do tipo cache fusion e, está aguardando a conclusão da operação quando outra sessão, no mesmo nó, solicita o bloco para ler ou modifica-lo.
Isso pode ocorrer no Oracle RAC 11g, quando um processo foreground está esperando por um antilock broadcast, para atualizar um objeto que é alterado frequentemente.
O evento “block busy” significa que uma sessão está solicitando acesso a um bloco , que no momento é considerado busy em um outro nó remoto. A espera “buffer busy”, indica que várias sessões estão aguardando por um bloco que é considerado busy em um nó remoto.

Abração, e até próxima.

Referência: Gopalakrishnan, K . Oracle Database 11g. Oracle Real Application Clusters Handbook Second Edition. Oracle Press, 2011.

Message-Oriented Waits

Saudações pessoal, uma breve explicação sobre as esperas abaixo.

-gc current grant 2-way
-gc current grant 3-way
-gc cr grant 2-way
-gc cr grant 3-way

Essas esperas indicam que nenhum bloco foi recebido porque o bloco não estava em memória. Em vez disso, uma permissão de leitura (grant global) foi enviado para a instância que solicitou o bloco, para ler ou modica-lo em disco. Essas esperas podem ser seguidas das waits “db file sequential read” e “db file scattered read”. Elas podem indicar gargalo de I/O (cr grant), ou muitas inserções de dados que necessitam encontrar e formatar novos blocos (current grant).

Fonte: Gopalakrishnan, K . Oracle Database 11g. Oracle Real Application Clusters Handbook Second Edition. Oracle Press, 2011.

Block-Oriented Waits

Saudações pessoal, uma breve explicação referente ao eventos de espera abaixo.

– gc current block 2-way
– gc current block 3-way
– gc cr block 2-way
– gc cr block 3-way

São os eventos mais comuns de espera em um ambiente em RAC. Essa estatística significa que o bloco solicitado foi servido por outra instância que não aquela onde foi solicitada. O tempo dessa espera é determinado pelo processamento na camada de rede, o tempo para o processamento na instância que servirá o bloco, e por fim, o tempo de processamento pelo processo que solicitou o bloco quando ele chegar. Normalmente a causa para essas esperas podem ser  interconnect , cargas ou  execuções de SQL.

Fonte: Gopalakrishnan, K . Oracle Database 11g. Oracle Real Application Clusters Handbook Second Edition. Oracle Press, 2011.