[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