Deadlocks do Oracle DB

1

Temos uma situação em que um banco de dados está "desacelerando". As operações de banco de dados que normalmente demoram um segundo ou dois levam dez vezes mais tempo. Parece haver um grande número de bloqueios no banco de dados quando isso está acontecendo. Poderia um grande número de deadlocks estar criando uma lentidão ampla no DB?

    
por jeffspost 17.09.2009 / 21:58

3 respostas

3

Deadlocks são um tipo particular de situação em que a transação A tem um bloqueio e, em seguida, tenta bloquear algo que está atualmente bloqueado pela transação B e tem que esperar. Em seguida, a transação B tenta bloquear o item atualmente bloqueado pela transação A. O banco de dados 'avisa' que a situação não pode resolver naturalmente, portanto, comete uma das transações e força a reversão.

Como outros afirmaram, isso é incomum e eu espero que você tenha tido relatos de erros levantados para o aplicativo em relação aos impasses.

Em vez disso, estou supondo que "algo" mudou. Pode ser bloqueios, mas pode ser que você tenha muito mais coisas bloqueadas porque as transações estão demorando mais (e, portanto, os bloqueios são mantidos por mais tempo).

Se você estiver em 10g / 11g com AWR / ASH (Diagnostics / Tuning Pack), o OEM deverá ser capaz de ajudar a diagnosticar a situação.

Se não, veja a V $ SESSION e veja se você tem muitas sessões com o conjunto BLOCKING_SESSION. Isso indica que eles estão esperando por bloqueios. Você só precisa se preocupar com bloqueios se as sessões estiverem aguardando, então use isso em vez do número de bloqueios. Se isso não indicar um problema, vá até v $ session_event e veja quais entradas wait_class são responsáveis pela maior parte do tempo.

    
por 18.09.2009 / 00:38
1

Pode ser deadlocks, mas os bancos de dados geralmente podem informar quando há deadlocks e, nesse caso, eliminarão as conexões com uma exceção de deadlock.

Eu vi isso acontecer no meu banco de dados oracle, e isso pode acontecer quando os recursos estão acabando, e o banco de dados está ficando sem memória e tem que trocar para o disco.

Isso é especialmente verdadeiro se vários trabalhos estiverem aguardando na fila pelo mesmo recurso para liberar.

    
por 17.09.2009 / 22:38
1

Os bloqueios são registrados nos arquivos de rastreamento para que você possa dizer facilmente se esse é o problema. Primeiro analise para os suspeitos usuais. Consulta explicar plano, índices, estatísticas e tal.

    
por 17.09.2009 / 23:13