Case Recuperacao Banco Dados Firebird

Fonte: Touch ERP
Saltar para a navegação Saltar para a pesquisa

Case_Backup_Banco_Dados_Firebird

Antes de iniciar a restauração de um banco de dados, é importante conhecer sua estrutura e entendê-la, até para tomar decisões posteriormente sobre como proceder após uma recuperação.

Saiba que os gerenciadores de Banco de dados (SGBD) trabalham arduamente para evitar problemas, com diversas tratativas de segurança. Quase todos os casos de corrupção de bancos, está relacionado a fatores externos, dentre eles (Por ordem de causa):

  • Problemas no HD. Verifique e valide seu HD, mesmo que seja novo. Execute programas para checar a saúde e a propensão a falhas do mesmo. Compre sempre HD's de boa qualidade e marcas conceituadas.
  • Erros de tratamento de instruções pelo sistema operacional. O SO pode, ao executar uma operação, encontrar um erro e travar. Muitas das vezes os problemas são bem localizados e invisíveis de forma geral, afetando páginas específicas do banco de dados.
  • Backups mal sucedidos ou programas que acabam por intervir no arquivo do banco. Utilize programas de gerenciamento de backup próprio para bancos de dados. Se usar cópia, pare o serviço do Firebird antes.
  • Desligamentos abruptos do computador, por exemplo em queda de energia.
  • Vírus ou outros softwares maliciosos.


Faça sempre backups regulares do banco de dados, ao menos uma vez ao dia, preferencialmente período noturno!

Conceitos

O banco de dados é como se fosse um livro. Neste livro, temos as páginas, e nas páginas os registros. Para facilitar a pesquisa, temos o sumário(índices). E para acessar páginas específicas, ir uma página para a outra, temos atalhos (Foreign Keys).

Como podemos ver, por se tratar de um livro, em corrupção parcial de dados, ela ocorre especificamente em uma página, ou até em um registro especifico. Não necessariamente você perderá o livro todo (Banco de dados). Se isso acontecer, é porque seu HD realmente possui uma falha geral, queimou boa parte do disco. Estes são casos mais raros, mas acontecem, por isso sempre a necessidade de ter backups. Na maioria dos casos, as falhas são pontuais.

Recuperação

Na recuperação, pode-se utilizar de 3 tentativas:

  • Utilizar os passos mais técnicos, descritos abaixo
  • Utilizar o Atualizador Touch Comp, no menu "Manutenção de Banco de dados" / "Backup e Restored Avançado"
  • Em caso de falhas nos dois acima, e na impossibilidade de restauração, utilizar serviços de uma empresa para tal, como por exemplo https://ib-aid.com/en/ibsurgeon-firstaid/

Prepare o ambiente

  1. Para facilitar, baixe o Firebird em arquivo zip, conforme a versão do banco de dados.
  2. Extraia os arquivos em C:\firebird, por exemplo, no caso do Windows. Extraia na raiz do diretório, não crie subpastas ou atente-se ao extrair.
  3. Coloque os bancos de dados em C:\Firebird\database para facilitar na hora de rodar os comandos. Não utilize espaços, caracteres especiais, por exemplo "C:\firebird 2!

Modos de utilização - Executáveis Firebird

  • Caminho completo

Você pode utilizar o caminho completo, C:\firebird\bin\gfix.exe ao executar os comandos citados abaixo.

  • Navegue até a pasta do Firebird

Rode o comando

cd C:\firebird\bin\

Agora dentro da pasta do Firebird, utilize normalmente os comandos abaixo.

  • Variável de ambiente

Adicione as variáveis de ambiente do Windows/Linux. Coloque o nome da variável FIREBIRD_HOME e o valor o C:\firebird. Aqui existe uma diferença entre Firebird 2.5 e 3.0 (Inclui superiores). No caso do 2.5, o valor da variável deve ser C:\firebird\bin, e no caso do 3.0 e superiores C:\firebird

Se tiver com o terminal/cmd/prompt/powershell aberto, feche e abra novamente. Continue os passos posteriores.

Caso utilize variável de ambiente, nos comandos você pode utilizar %FIREBIRD_HOME%\gfix.exe por exemplo, adicionando %FIREBIRD_HOME% para que o windows/linux localize o gfix/gback, principalmente se o windows ainda não localizar os arquivos

Caso ocorra mensagem de "Comando não conhecido", "Command unknow" verifique ou mude uma dos modos de utilização.

Passo 1 - Parar Firebird

Pare o Firebird. Copie o banco principal para um local apropriado. Para facilitar, copie diretamente para a pasta do Firebird, onde ficam os executáveis. Não copie o banco com o Firebird em execução. Alem de prejudicar mais a cópia, pode prejudicar ainda mais o banco principal.

Passo 2 - Verificar por erros e extensão dos mesmos

Verifique por erros. Execute o comando abaixo, para verificar a extensão dos danos:

gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database

Passo 3 - Mend

Se há registros corrompidos, os mesmos serão perdidos. Logo, podemos executar o comando abaixo, para que o Firebird marque estes registros como inativos, para permitir um backup e restauração do banco de dados. Observe que isso só é possível para corrupções parciais.

gfix.exe -mend -user SYSDBA -pass masterkey path_to_your_database

Passo 4 - Backup

Faça o backup do banco de dados, mesmo que sejam exibidos erros nos comandos acima. No caso, erros do banco, e não de comandos

gbak -b -v -user SYSDBA -pass masterkey path_to_your_database path_to_backup

Passo 5 - Restore

Restaure o banco de dados. Observe que erros podem acontecer, e que mesmo assim o banco será restaurado. Obviamente tanto os registros corrompidos quanto os registros ligados a ele não serão restaurados. Olhe atentamente o log para identificar quais e qual a extensão dos danos.

gbak -c -v -user SYSDBA -pass masterkey  path_to_backup path_to_your_new_database -y log.txt

Observe que o comando acima irá salvar todo o log de restore, no arquivo log.txt. Após finalizar, abra este arquivo com o bloco de notas, e pesquise as ocorrências da palavra ERROR. São estas as falhas e os registros que não foram restaurados.

Passo 6 - Ativar Banco

Se confirmado os problemas no restore, o banco será restaurado como inativo(shutdown). Uma vez compreendido as perdas, e assim optado em utilizar este banco ao invés de backup, você deverá mudar seu status para ativo (online). Use o seguinte comando:

gfix -online path_to_your_database

Problemas e Soluções

Ainda ocorre erros (bugcheck)

Neste caso o banco está bastante corrompido, ou ao menos com falhas mais complexas, como perda de dados. A partir destes comandos, você deve ter ciência que provavelmente ocorrerá perda de dados, e somente utilize com base neste entendimento, e não reste outras alternativas.

Primeira, force o Passo 2, para ignorar falhas e tente realizar o backup/restore:

gfix.exe -mend -f -ignore -user SYSDBA -pass masterkey MENTOR.FDB

Caso ainda ocorra falhas, force também o backup:

gbak -b -v -g -ig -user SYSDBA -pass masterkey MENTOR.FDB MENTOR.FBK

Caso ocorra falhas relacionadas a LIMBO (transações pendentes no banco de dados), adicione ao comando acima, o -l:

gbak -b -v -g -l -ig -user SYSDBA -pass masterkey MENTOR.FDB MENTOR.FBK

Independente dos passos anteriores, confira o log do backup e principalmente do restore! Salve o log em arquivo do restore, e avalie os erros pontuados.

Banco de dados falha ao restaurar (Restore)

Pode ocorrer falhas ao realizar o restore, devido a questões de validação do Banco de dados. Por isso é importante a verificação do Log, em procura de ERROR (erros). Ao restaurar o banco e ocorrer a interrupção, ou até falha o banco ficar com o status desligado (shutdown), é recomendável o tratamento dos problemas antes, realizar um novo backup e posteriormente o restore. A título de exemplo:

  • Violação de foreign key. Neste caso, deve se limpar (delete) o lixo que tenha ficado. Suponha que ao restaurar, ao inserir os registros na tabela cliente, ocorra violação onde não encontrou Pessoa. Neste caso, este cliente deve ser excluído.
  • Violação de unique key. Neste caso, deve se resolver a repetição, ou dropar a unique key. Prefira a primeira opção.

Em caso da impossibilidade ou muito trabalho na restauração, se estamos falando do BD NFCe, você também tem a opção de colocar uma nova base de dados.