sexta-feira, 26 de outubro de 2012

Internal gds consistency check como resolver ??



Inicialmente faça uma cópia da base
cp BASE.GDB BASE2.GDB

Sete as permissões para o arquivo do banco.
  chown BASE2.GDB firebird:firebird
  chmod 770 BASE2.GDB




Valide o banco de dados
Opção -v para localizar e liberar páginas alocadas e não atribuídas a nenhuma estrutura e também estruturas corrompidas.
 /opt/firebird/bin/./gfix -v -full base2.GDB -user SYSDBA -pass senha

Se aparecer algo parecido como oque está abaixo, a base está corrompida

Summary of validation errors
Number of record level errors : 1
Number of database page errors : 49


Se corrompido
 Faça uma validação com o parâmetro -mend que vai marcar registros corrompidos como idisponíveis
 /opt/firebird/bin/./gfix  -mend -full BASE2.GDB -user SYSDBA -pass senha 

 Após terminar execute novamente para verificar erros com o comando

 /opt/firebird/bin/./gfix -v -full base2.GDB -user SYSDBA -pass senha

 Se ainda continuar com erros, faça um backup, com a opção -i para ignorar erros de checksum
   /opt/firebird/bin/./gbak -b -i base2.GDB base3.GDB -user SYSDBA -pass senha

Se não estiver corrompido
 Faça apenas um  backup
  /opt/firebird/bin/./gbak -b  base2.GDB base3.GDB -user SYSDBA -pass senha 

Se acaso estiver ou não comrrompido, restaure
  Utilize a opção
   -r para informar ao Firebird que é um restore
  
   /opt/firebird/bin/./gbak -r  base3.GDB base4.GDB  -user SYSDBA -pass senha 
 
   Se acaso der algum erro como este

   gbak: ERROR:validation error for column CD_EMPRESA, value "*** null ***"
   gbak: ERROR: warning -- record could not be restored
   gbak:Exiting before completion due to errors


  Utilize
   -no_validity para não validar campos not null que é o caso acima. 
   -i para ignorar checksums,
   -REP para dar um replace na base4.GDB caso ela exista. 

   /opt/firebird/bin/./gbak -r -i -rep -no_validity base3.GDB base4.GDB  -user SYSDBA -pass senha  


Obrigado e até a próxima.
















Nenhum comentário:

Postar um comentário