Fórum Perda de Transações já comitadas #420644

27/07/2012

0

Olá

Utilizamos firebird 2.5 classic na nossa empresa com o SO Linux (CentOS).

Estamos enfrentando um problema onde estão sumindo transações já comitadas. Já fizemos todos os testes com logs para comprovar que os dados realmente foram comitados e gravados. E não possuímos rotinas no nosso sistema que possam excluir estes registros. Eventualmente quando consultamos a base, notamos que alguns registros de nota fiscal não estão mais gravados mas constam na impressora fiscal e nos nossos logs de controle. Somem todos os registros de uma ou mais notas fiscais já gravadas (toda a transação da gravação da nota e suas integridades. Produtos, pagamentos, etc). Somem sem deixar rastros, como se nunca tivessem sido incluídas.

Este problema já ocorreu 5 vezes. Com intervalos de semanas.

Temos certeza que não existe ninguém que esteja excluindo estes registros manualmente.

As rotinas de backup são feitas diariamente(automaticamente), porém os restores são feitos apenas mensalmente.

Apenas o usuário firebird no linux tem acesso ao arquivo da base.

A opção forced_writes está ativada.

A impressão que temos é que parece que a base de dados está voltando no tempo. Como se tivesse sido copiado uma base mais antiga por cima da atual. Mas não conseguimos explicar pois isto está acontecendo durante o dia e com a base em uso, e não temos relatos de que a base tenha ficado fora do ar durante o dia e nem relatos de perda de conexão com a base (média de 30 usuários conectados ao mesmo tempo).

Qualquer ajuda ou sugestão será muito bem vinda.

Obrigado
Diego Zanelatto

Diego Zanelatto

Responder

Posts

27/07/2012

Anderson

Olá Diego, qual o número completo da versão do Firebird (2.5.xxxxx) e do CentOS Linux, e se são 32 ou 64 bits.

Poderia fazer um teste no banco de dados:

Buscar uma nota desaparecida utilizando índice:
SELECT * FROM NOME_DA_TABELA WHERE CAMPO_ID = 123456;

e depois

Buscar uma nota desaparecida sem utilizar índice:
SELECT * FROM NOME_DA_TABELA WHERE CAMPO_ID+0 = 123456;

Substitua o NOME_DA_TABELA e CAMPO_ID (campo com o número da nota) pelos nomes equivalentes na sua base de dados. Troque o 123456 pelo número de uma das notas desaparecidas. Também procure algo comum entre estes registros desaparecidos (data, hora, usuário, terminal, ...)

Abraços,

Anderson:.

Responder

Gostei + 0

30/07/2012

Diego Zanelatto

Bom dia Anderson. Obrigado pela dica.

Porém, fiz o teste sem utilizar os indices e mesmo assim ele não encontra a nota sumida.

O firebird instalado no linux é o FirebirdCS-2.5.1.26351-0.i686.tar.gz.

Sobre padrões para o erro ocorrer.. Bom, sempre estava ocorrendo alguns minutos (20 a 30) após os backups automáticos. Mas a última vez que ocorreu não tinha executado backup ainda.
Responder

Gostei + 0

01/08/2012

Anderson

De uma olhada nesta informação, em especial o item 4.3.4

Link:
http://www.firebirdsql.org/en/some-solutions-to-old-problems/


Abraços,

Anderson:.
Responder

Gostei + 0

01/08/2012

Anderson

Desculpe, o item a checar é o 4.3.3 Use Roll-Forward Logs

Abraços,

Anderson:.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar