Às vezes não é possível eliminar uma linha de banco de dados Oracle usando Django

votos
1

Eu tenho um teste de unidade que contém a seguinte linha de código

Site.objects.get(name=UnitTest).delete()

e isso tem funcionado muito bem até agora. No entanto, essa afirmação está pendurado. Vai sentar-se lá para sempre tentar executar o delete. Se eu apenas dizer

print Site.objects.get(name=UnitTest)

então ele funciona, então eu sei que ele pode recuperar o local. Nenhum outro programa está ligado a Oracle, por isso não é como há dois desenvolvedores pisando em si de alguma forma. Presumo que algum tipo de bloqueio de tabela não foi liberada.

Tão curto de encerrar o banco de dados Oracle e trazê-lo de volta, como faço para liberar o bloqueio ou o que está me bloqueando? Eu gostaria de não recorrer a um desligamento banco de dados porque no futuro, que pode ser prejudicial para alguns dos outros desenvolvedores.

EDIT: Justin sugeriu que eu olhar para os DBA_BLOCKERSe DBA_WAITERSmesas. Infelizmente, eu não entendo essas tabelas em tudo, e eu não tenho certeza do que eu estou procurando. Então aqui está a informação que pareceu relevante para mim:

A DBA_WAITERStabela tem 182 entradas com tipo de bloqueio DML. A DBA_BLOCKERStabela tem 14 entradas cujos IDs sessão toda corresponder ao nome de usuário utilizado pelo nosso código do aplicativo.

Uma vez que este precisa ser resolvido, eu vou apenas reiniciar o servidor web, mas eu ainda gostaria de receber quaisquer sugestões sobre o que fazer se este problema se repete. Eu sou um verdadeiro novato quando se trata de administração Oracle e têm na maior parte apenas usado MySQL no passado, então eu definitivamente estou fora do meu elemento.

EDIT # 2: Acontece que, apesar do que eu pensava, outro programador foi de fato acessando o banco de dados, ao mesmo tempo que eu. Então, qual é a melhor maneira de detectar isso no futuro? Talvez eu devesse ter desligado o meu programa e, em seguida, questionaram a DBA_WAITERSe DBA_BLOCKERStabelas para se certificar de que eles estavam vazios.

Publicado 15/10/2008 em 16:19
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

A partir de uma sessão separada, você pode consultar os DBA_BLOCKERS e DBA_WAITERS dados tabelas de dicionário e postar os resultados? Isso vai dizer se a sessão está sendo bloqueada por um bloqueio mantido por alguma outra sessão, bem como o que outra sessão está mantendo o bloqueio.

Respondeu 15/10/2008 em 16:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more