[firebase-br] OAT Travada

Carlos H. Cantu listas em warmboot.com.br
Seg Abr 7 17:42:50 -03 2014


Sugiro que vc faça alguns testes:

1) Atualize para o FB 2.5.2

2) A ODS dessa base é 11.1, ou seja, ela foi criada com o FB 2.1. Faça
um backup/restore pra atualizar pra 11.2

3) Tenha certeza que está rodando essas consultas nas tabelas de
monitoramento acessando a base como SYSDBA

4) Compare os PIDs observados nas tabelas de monitoramento com os
processos do Firebird em execução no SO. Pode ser que haja um processo
pendurado que está segurando a OAT e não está respondendo as ASTs.

5) Ao invés de usar o gstat pra pegar o numero das transações, faça a
consulta em mon$database usando a mesma transação que vc fez a
consulta na mon$transactions.

PS: Dicas de Vlad Khorsun.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

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


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

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


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


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





RGdS> Em 7 de abril de 2014 11:04, Carlos H. Cantu
RGdS> <listas em warmboot.com.br> escreveu:
RGdS>  
RGdS> A única situação onde vc poderia ter uma OAT que não aparece na tabela
RGdS>  mon$transaction, é quando a transação (considerada como a OAT) já foi
RGdS>  commitada, mas depois disso nenhuma outra transação foi iniciada.
RGdS>  
RGdS>  Isso porque o número da OAT no header só é atualizado quando uma nova
RGdS>  transação é iniciada.
RGdS>  
RGdS>  PS: Lembre-se que consultas em tabelas de monitoramento são snapshots
RGdS>  do estado da base de dados no momento em que ela foi executada, e não
RGdS>  mudam mais enquanto a transação associada a consulta não for encerrada.
RGdS>  
RGdS>  []s
RGdS>  Carlos H. Cantu
RGdS>  www.FireBase.com.br - www.firebirdnews.org
RGdS>  www.warmboot.com.br - blog.firebase.com.br
RGdS>  
 RGdS>> Bom dia...
RGdS>  
 RGdS>> Alguém sabe de algum motivo no qual posso ter uma OAT travada no banco de
 RGdS>> dados?
RGdS>  
 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>  
 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>  
 RGdS>> Existe alguma forma de achar oq gerou esta OAT presa, ou fazer o servidor
 RGdS>> limpar ela sem precisar reiniciar ele por completo?
RGdS>  






Mais detalhes sobre a lista de discussão lista