[firebase-br] OAT Travada

Rodrigo Gomes da Silva rodrgomes em gmail.com
Seg Abr 7 10:55:45 -03 2014


Walter, Gladiston...

Pior que o que me esta atormentando é que não consigo nem confirmar que tem
uma transação em aberto. Estou consciente que quando acontece de alguem
mata uma aplicação, se tiver algo rodando de firebird em processamento que
demore para retornar algum registro, isto vai continuar rodando no
servidor. Só que nestes casos eu consigo ver o que esta rodando e a
transação em mon$statements e mon$transactions. Mesmo casos de uma
aplicação mal escrita que deixe a transação aberta com o sistema em idle,
esta transação vai aparecer no mon$transactions.

Meu problema é que o min(mon$transaction_id) do mon$transactions esta
dezenas de milhões acima do OAT e não sobe. Se chegar a reiniciar o
firebird, efetivamente fechando todas conexões ao banco, o OAT volta ao
normal, mas o administrador de rede não esta satisfeito com este
procedimento, nem eu, ainda mais que é a 3a vez que aconteceu em 2 meses.
Não consigo nem saber qual é a causa, muito menos como corrigir sem ter que
fazer este reinicio. Se souber que é alguma coisa na aplicação, ou mesmo
processo do firebird que travou aonde tenha que matar o pid manualmente
(estou usando classic) já seria pelo menos uma luz.


Em 7 de abril de 2014 10:20, Gladiston Santana <gladiston em vidy.com.br>escreveu:

> Cara é complicado, se fosse um processo de usuário, as vezes o camarada da
> um ctrl+alt+del e finaliza a aplicação e ela vaga pelo infinito no
> servidor, nas existem algo no FB que depois de algum tempo essa transação é
> fechada por timeout e faz-se um registro de log que poderá ser observado
> depois no servidor.
> Se isso não aconteceu é porque ainda pode estar em uso essa sua transação,
> lembrando que algumas podem ter sido realizadas pelo próprio servidor em
> seus processos internos.
> Você está fazendo backup? Se não tiver, recomendo que faça, muita coisa
> morre com um simples backup normal (sem aqueles parametros para manter
> limbo e coisas do tipo).
>
>
> Em 4 de abril de 2014 12:00, Rodrigo Gomes da Silva
> <rodrgomes em gmail.com>escreveu:
>
> > Bom dia...
> >
> > Alguém sabe de algum motivo no qual posso ter uma OAT travada no banco de
> > dados?
> >
> > A situação que estou tento é o seguinte... em um certo cliente que tem um
> > uso grande do banco de dados esta acontecendo frequentemente alguma
> > situação em que a OAT fica travada, consequentemente a OIT tb gerando gap
> > de milhões de garbage em relação a next transaction. Isto poderia ser uma
> > causa simples, de ser algum programa com transação aberta a dias, mas se
> > olho pelas tabelas de monitoramento, mais especificamente pela
> > mon$transactions, não encontro a transação referenciada pela OAT, e
> > ordenado por transaction_id a mais antiga é uma do próprio dia, como
> seria
> > o para um uso correto do banco de dados.
> >
> > A unica maneira que tenho resolver isto é reiniciando o firebird aonde
> ele
> > atualiza o OAT normalmente bastando um sweep pra tirar o GAP da OIT,
> porem
> > não é um procedimento que esta sendo visto com bons olhos pelo
> > administrador da rede.
> >
> > Existe alguma forma de achar oq gerou esta OAT presa, ou fazer o servidor
> > limpar ela sem precisar reiniciar ele por completo?
> >
> >
> > Abraços,
> > Rodrigo
>
>



Mais detalhes sobre a lista de discussão lista