Banco de Dados Firebird Corrompido

Firebird

18/10/2004

Estou com um problema com uma base de dados do firebird 1.5. Em uma determinada tabela quando tenta-se ler os seus registros tem-se o seguinte erro:

>Unsuccessful execution caused by a system error that precludes
>successful execution of subsequent statements.
>internal gds software consistency check (can´t continue after bugcheck).

Não é possivel nem mesmo realizar um backup com o gbak, pois quando vai ler os dados da determinada tabela acontece esse mesmo erro. Ao tentar passar o validation ocorre novamente o mesmo erro.

quando tenta-se fazer algum delete acontece o seguinte erro:

>Unsuccessful execution caused by a system error that precludes
>successful execution of subsequent statements.
>internal gds software consistency check (wrong record length (183)).

Já não sei mais o q fazer. Alguem saberia? :roll:


Neoramza

Neoramza

Curtidas 0

Melhor post

Neoramza

Neoramza

18/10/2004

Fazendo ´gfix -v -f ´ dá o seguinte erro:

I/O error for file ´C:\SOARES.GDB´
-Error while trying to read from file
-Final do arquivo alcanþado.

-internal gds software consistency check (cannot find tip page (165))


GOSTEI 1

Mais Respostas

Gandalf.nho

Gandalf.nho

18/10/2004

Já tentou usar o GFix?


GOSTEI 0
Neoramza

Neoramza

18/10/2004

Sim, ja tentei e deu exatamente o mesmo erro.


GOSTEI 0
Afarias

Afarias

18/10/2004

vc tentou assim foi::

1) gfix -v -f

2) gfix -m -i -g -l

3) bakup/restore


?? e ainda não corrigiu ??


T+


GOSTEI 0
Afarias

Afarias

18/10/2004

ok, e depois continuando o processo (demais etapas)??



T+


GOSTEI 0
Neoramza

Neoramza

18/10/2004

2) gfix -m -i -g -l :

>invalid swich -g

3) bakup

Quando chega na tabela com problema dá o seguinte erro e não continua o backup:

>Unsuccessful execution caused by a system error that precludes
>successful execution of subsequent statements.
>internal gds software consistency check (can´t continue after bugcheck).


GOSTEI 0
Afarias

Afarias

18/10/2004

vc tem q realizar o GFIX -M para poder fazer o bakup,

gfix -m -i


o comando q passei deu erro pq na realidade os comandos -l e -g devem ser passados no GBAK durante backup, desculpe o equívoco.


T+


GOSTEI 0
Neoramza

Neoramza

18/10/2004

Ao tentar fazer o ´gfix -m -i´ ocorreu um outro erro:

I/O error for file ´C:\soares.GDB´
-Error while trying to read from file
-Final do arquivo alcanþado.

-internal gds software consistency check (cannot find tip page (165))


GOSTEI 0
Afarias

Afarias

18/10/2004

ok, consegue fazer o backup depois disso?


T+


GOSTEI 0
Neoramza

Neoramza

18/10/2004

Não, no meio do backup da o sweguinte erro:

internal gds software consistency check (wrong record length (183)).


GOSTEI 0
Afarias

Afarias

18/10/2004

ops! ai é problema.

1) vc tem um backup para substituir a base atual??
2) qual o tamanho dessa base??
3) os dados são de produçào?? são informações importantes??
4) vc pode exportar os dados para um txt (para serem importados em uma base nova)??


T+


GOSTEI 0
Neoramza

Neoramza

18/10/2004

1) Os backups que eu tenho são antigos
2) 90MB
3) São informações importantes sim.
4) Só não posso exportar os dados dessa tabela em especifico que ta com problema, pois ao tentar ler acontece o erro que eu havia dito.


GOSTEI 0
Afarias

Afarias

18/10/2004

essa tabela q dá o erro é importante?? vc pode apenas ter q se desfazer dela (ou parte dos registros dela)

ela possui algun índice?? vc pode se desfazer deles


T+


GOSTEI 0
Gandalf.nho

Gandalf.nho

18/10/2004

Essa tabela específica tem um campo BLOB por acaso? Me aconteceu esse erro uma vez e era por causa de um campo BLOB. Resolvi o problema lendo todos os campos da tabela (com execeção do BLOB) e exportando para outra tabela; depois criei um código para ir lendo o campo BLOB registro por registro e copiando, ao dar erro, um MsgBox retornava a chave primária do registro com problema, daí eu só pulava o registro e continuava. No fim, só perdi a informação do campo em 2 registros...


GOSTEI 0
Neoramza

Neoramza

18/10/2004

Eu ja tinha excluido todos os indices, depencias e chaves que a tabela possuia.

Na tabela nao tem nenhum campo blob e todas as consultas sql dao erro mesmo restringindo-a pesquisando por apenas um dos campos e usando crausulas where. :(


GOSTEI 0
Sremulador

Sremulador

18/10/2004

Amigo eu já enfrentei muito esses erros eu criei uma rotina em um bat para corrigir estes erros até que tem dado certo...

veja este artigo

Diagnosticando e Reparando Corrupcao em Bases de Dados
Alguns tipos de corrupção em bases de dados podem ser reparados com utilitários do Interbase como o gfix e o gbak. Contudo em cados raros existe a possiblidade de um ficheiro de bases de dados estar corrompido para além da capacidade dos utilitários para reparar o ficheiro.

A causa mais frequente de corrupção é a perda repentina de energia no servidor de bases de dados, mesmo numa máquina Windows com uma bases de dados Local Interbase. Desligando a corrente quando uma aplicação está em processo de escrita num ficheiro (como é o caso de uma base de dados) pode resultar na escrita errada ou incompleta de dados no ficheiro.

O utilizador da bases de dados deve utilizar todos os meios ao seu alcance para prevenir tais perdas de energia.

Os vários tipos de corrupção em bases de dados que podem ser corrigidos podem na maior parte dos casos ser reparados com o utilitário gfix. Trabalhe sempre numa cópia da base de dados e nunca na base de dados em produção.

Utilize o sistema operativo para realizar uma cópia da base de dados. É necessário o acesso exclusivo à base de dados para realizar este comando.

Unix

$ cp atlas.gdb atlas_test.gdb

Windows

copy atlas.gdb atlas_test.gdb

Verificar a corrupção da base de dados. É necessário o acesso exclusivo à base de dados para realizar este comando, mas como estamos a trabalhar com uma cópia da bases de dados isto não constitui um problema .

gfix –v -f atlas_test.gdb

Corrigir a corrupção na base de dados. Só efectuar este comando se o comando anterior reportar corrupção da base de dados.

gfix –m -i atlas_test.gdb

Verificar se a corrupção na base de dados foi corrigida.

gfix –v -f atlas_test.gdb

Se o utilitário gfix ainda reportar corrupção na base de dados, vai ser necessário tomar outras medidas para reparar a base de dados. O procedimento de backup/restore irá criar uma nova base de dados, sem versões antigas de registos, sem fragmentação de páginas, índices e histórico de transações recém criados.

gbak -g –b –z –v atlas_test.gdb atlas.gbk

Se existir corrupção em registos de transações não terminadas, deve-se incluir a opção –l ao comando anterior para ignorar transações não finalizadas.

Criar uma nova base de dados do backup. Isto irá criar uma nova base de dados, sem versões antigas de registos, sem fragmentação de páginas, índices e histórico de transações recém criados.

gbak -g –b –z –v atlas.gbk atlas_new.gdb

Verificar se existe corrupção na base de dados.

gfix –v -f atlas_new.gdb


GOSTEI 1
POSTAR