DBMS_ALERT lento para acionar no RAC

2

Eu fiz uma pergunta anteriormente sobre se o DBMS_ALERT funciona no RAC. A resposta foi sim, e eu configurei um ambiente de teste VMWare e o confirmei.

No entanto, parece haver um longo atraso entre quando a chamada SIGNAL () é feita e o WAITONE () retorna quando eles são caixas diferentes.

Meus testes são os mesmos encontrados no link

Se eu executar o script WAIT na minha caixa RAC2 e, em seguida, SIGNAL no RAC1, o acionamento pode acontecer de 0,5 a 5 segundos depois.

Estranhamente, se vários scripts WAIT estão sendo executados simultaneamente no RAC2, então SIGNAL no RAC1, os scripts WAIT nem todos são acionados simultaneamente. Eles variam entre 0,5 a 5 segundos.

Alguém conhece algum parâmetro de ajuste ou qualquer detalhe de como o DBMS_ALERT funciona que possa ajudar nisso?

Estou usando o Oracle Database 10g Enterprise Edition versão 10.2.0.4.0 - 64bi.

    
por ftkalcevic 26.10.2011 / 01:50

1 resposta

0

Problema resolvido.

Uma faísca brilhante aqui notou que nos registros o tempo entre a espera por um sinal e o acionamento era sempre múltiplo de 5. Isto é devido aos métodos DBMS_ALERT.Wait usando polling quando em modo compartilhado (que é o que um controle remoto RAC instância do banco de dados é). Embora a documentação do oracle diga que o tempo de polling é de 1 segundo, na verdade são 5 segundos.

O uso de DBMS_ALERT.SET_DEFAULT (1) reduziu o tempo para 1 segundo no máximo.

Bom o suficiente.

    
por 02.11.2011 / 06:03