[firebase-br] OAT Travada

Rodrigo Gomes da Silva rodrgomes em gmail.com
Seg Abr 7 16:46:35 -03 2014


Cantu,
Também achava isto, só que não é o que acontece... embaixo uma parte das
estatísticas do banco e uma parte do mon$transaction ordenado por id

Database header page information:
        Flags                   0
        Checksum                12345
        Generation              660465595
        Page size               8192
        ODS version             11.1
        Oldest transaction      620866911
        Oldest active           620866912
        Oldest snapshot         620866912
        Next transaction        659308127

select mon$transaction_id TRANS_ID, mon$attachment_id AT_ID, mon$timestamp,
       mon$top_transaction TOP_TRANS, mon$oldest_transaction OLDEST_TRANS,
       mon$oldest_active OLDEST_ACTIVE, mon$isolation_mode from
mon$transactions
order by mon$transaction_id

TRANS_ID AT_ID MON$TIMESTAMP TOP_TRANS OLDEST_TRANS OLDEST_ACTIVE
MON$ISOLATION_MODE
654252405 1150537 7/4/2014 08:08:55 654252405 620866911 620866912 2
654253780 1150561 7/4/2014 08:10:49 654253780 620866911 620866912 2
654253855 1150559 7/4/2014 08:10:55 654253855 620866911 620866912 2
...
659519666 1151330 7/4/2014 16:42:15 659519666 620866911 620866912 2
659519668 1155304 7/4/2014 16:42:15 659519668 620866911 620866912 2

Como da pra ver a transação mais antiga da tabela é de hoje com id de 650
milhoes, só que o OAT ta em 620 milhoes. A dias já ta assim, então ja teve
outras transações aonde o engine deveria ter atualizado o OAT no header.
Ele só volta a atualizar se reiniciar o serviço do banco.



Em 7 de abril de 2014 11:04, Carlos H. Cantu <listas em warmboot.com.br>escreveu:

> A única situação onde vc poderia ter uma OAT que não aparece na tabela
> mon$transaction, é quando a transação (considerada como a OAT) já foi
> commitada, mas depois disso nenhuma outra transação foi iniciada.
>
> Isso porque o número da OAT no header só é atualizado quando uma nova
> transação é iniciada.
>
> PS: Lembre-se que consultas em tabelas de monitoramento são snapshots
> do estado da base de dados no momento em que ela foi executada, e não
> mudam mais enquanto a transação associada a consulta não for encerrada.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>
> RGdS> Bom dia...
>
> RGdS> Alguém sabe de algum motivo no qual posso ter uma OAT travada no
> banco de
> RGdS> dados?
>
> RGdS> A situação que estou tento é o seguinte... em um certo cliente que
> tem um
> RGdS> uso grande do banco de dados esta acontecendo frequentemente alguma
> RGdS> situação em que a OAT fica travada, consequentemente a OIT tb
> gerando gap
> RGdS> de milhões de garbage em relação a next transaction. Isto poderia
> ser uma
> RGdS> causa simples, de ser algum programa com transação aberta a dias,
> mas se
> RGdS> olho pelas tabelas de monitoramento, mais especificamente pela
> RGdS> mon$transactions, não encontro a transação referenciada pela OAT, e
> RGdS> ordenado por transaction_id a mais antiga é uma do próprio dia, como
> seria
> RGdS> o para um uso correto do banco de dados.
>
> RGdS> A unica maneira que tenho resolver isto é reiniciando o firebird
> aonde ele
> RGdS> atualiza o OAT normalmente bastando um sweep pra tirar o GAP da OIT,
> porem
> RGdS> não é um procedimento que esta sendo visto com bons olhos pelo
> RGdS> administrador da rede.
>
> RGdS> Existe alguma forma de achar oq gerou esta OAT presa, ou fazer o
> servidor
> RGdS> limpar ela sem precisar reiniciar ele por completo?
>
>



Mais detalhes sobre a lista de discussão lista