Banco de Dados Firebird Corrompido
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:
>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
Curtidas 0
Melhor post
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))
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
18/10/2004
Já tentou usar o GFix?
GOSTEI 0
Neoramza
18/10/2004
Sim, ja tentei e deu exatamente o mesmo erro.
GOSTEI 0
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+
1) gfix -v -f
2) gfix -m -i -g -l
3) bakup/restore
?? e ainda não corrigiu ??
T+
GOSTEI 0
Afarias
18/10/2004
ok, e depois continuando o processo (demais etapas)??
T+
T+
GOSTEI 0
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).
>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
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+
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
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))
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
18/10/2004
ok, consegue fazer o backup depois disso?
T+
T+
GOSTEI 0
Neoramza
18/10/2004
Não, no meio do backup da o sweguinte erro:
internal gds software consistency check (wrong record length (183)).
internal gds software consistency check (wrong record length (183)).
GOSTEI 0
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+
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
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.
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
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+
ela possui algun índice?? vc pode se desfazer deles
T+
GOSTEI 0
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
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. :(
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
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
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