RESTAURAÇÃO E BACKUP DE BANCO DE DADOS FIREBIRD "internal gds software consistency check (can't continue after bugcheck)" Este processo de restauração, visa fazer correções na base de dados que o cliente utiliza. Em muitas ocasiões, ao acessar o sistema, o cliente pode se deparar com a mensagem do tipo: "internal gds software consistency check (can't continue after bugcheck)". Essa mensagem indica que o banco de dados, está com inconsistência nas informações, sendo necessário a restauração e reindexação de todos os registros presente na base de dados para que o acesso as informações sejam normalizados. É importante ressaltar que essa mensagem só ocorre pelas seguintes situações: Computador aonde encontra-se a base de dados é desligado subitamente. Gerenciador do banco de dados (firebird) sendo paralisado de forma forçada. Instabilidade ou quedas constantes de energia elétrica, ocasionando assim, perda de conexão com o banco de dados. Problemas no disco (HD) do computador, relacionados com setores defeituosos. Problema geral no hardware do computador. Abaixo seguem a relação de comandos que são realizados para a correção dessas inconsistências: OBS: É necessário o acesso exclusivo à base de dados para realizar estes comandos. Lembrando que após cada comando é necessário colocar o parâmetro de usuário e senha para conexão a base de dados. Exemplo: -user SYSDBA -password masterkey. Não deixe de ler até o fim se você não sabe acessar estes comandos. 1) Verificar a corrupção da base de dados: gfix -v -f BANCO_DADOS_ATUAL_DANIFICADO.FDB -user SYSDBA -password masterkey 2) Corrigir a corrupção na base de dados: gfix -m -i BANCO_DADOS_ATUAL_DANIFICADO.FDB -user SYSDBA -password masterkey 3) Verificar se a corrupção na base de dados foi corrigida: gfix -v -f BANCO_DADOS_ATUAL_DANIFICADO.FDB -user SYSDBA -password masterkey 4) Se o utilitário gfix ainda reportar corrupção na base de dados, vai ser necessário realizar o procedimento de backup/restore irá criar uma nova base de dados, sem versões antigas de registros, sem fragmentação de páginas, índices e histórico de transações recém criados. gbak -g -b -z -v BANCO_DADOS_ATUAL_DANIFICADO.FDB BANCO_BACKUP_GERADO.fbk -user SYSDBA -password masterkey Obs: Se existir corrupção em registros de transações não terminadas, deve-se incluir a opção -l ao comando anterior para ignorar transações não finalizadas. Para ignorar validação de campos, usar n.
5- Criar uma nova base de dados a partir de um backup. Isto irá criar uma nova base de dados, sem versões antigas de registros, sem fragmentação de páginas, índices e histórico de transações recém criadas e com Page size 8192. gbak -g -c -z p 8192 -v BANCO_BACKUP_GERADO.fbk BANCO_NOVO_RECUPERADO.FDB -user SYSDBA -password masterkey 6- Verificar se existe corrupção na base de dados recém criada: gfix -v -f BANCO_NOVO_RECUPERADO.FDB -user SYSDBA -password masterkey EXEMPLO PARAMETRIZADO DE UM PROCESSO COMPLETO DE BACKUP-RESTORE (EXTENSÃO.BAT) @ECHO off REM #------------------PROCESSO BACKUP/RESTORE - FIREBIRD 2.0---------- REM #!!!!!! IMPORTANTE!!!!!! - VERIFICAR CAMINHOS REM #---------------VARIAVEIS LOCAIS----------------------------------# set BancoDeDados=localhost:C:\lwdados\BANCO_DADOS_ATUAL_DANIFICADO.FDB set BancoBKP=C:\lwdados\ferramentas\backup_restore\BANCO_BACKUP_GERADO.fbk set NovoBanco=localhost:C:\lwdados\ferramentas\backup_restore\BANCO_NOVO_RECUPERADO.FDB set DirFirebird=C:\Arquivos de programas\firebird\firebird_2_0\bin REM #-----------DIRETORIO DE INSTALACAO DO FIREBIRD-------------------# c: cd %DirFirebird% ECHO GFIX VERIFICANDO problemas no banco: gfix -v -f %BancoDeDados% -user SYSDBA -password masterkey ECHO GFIX CORRIGINDO problemas no banco: gfix -m -i %BancoDeDados% -user SYSDBA -password masterkey ECHO GFIX verificando CORRECAO DOS problemas no banco: gfix -v -f %BancoDeDados% -user SYSDBA -password masterkey REM #Obs: Se existir corrupção em registros de transações não terminadas, deve-se REM #incluir a opção -l ao comando abaixo para ignorar transações não finalizadas. ECHO GBAK Criando backup do banco de dados: gbak -g -b -z -v %BancoDeDados% %BancoBKP% -user SYSDBA -password masterkey REM #Obs: Adicionar -r para sobrescrever um banco existente ECHO GBAK Criando banco de dados a partir do backup: gbak -g -c -z -v %BancoBKP% %NovoBanco% -user SYSDBA -password masterkey ECHO GFIX VERIFICA problemas no banco novo: gfix -v -f %NovoBanco% -user SYSDBA -password masterkey echo ->Processo finalizado!
CONHECENDO ALGUNS COMANDOS E UTILITÁRIOS QUE ACOMPANHAM A INSTALAÇÃO DO FIREBIRD Olá pessoal, vou demonstrar nesse artigo um resumo sobre alguns comandos e utilitários que acompanham a instalação do Firebird e suas finalidades, esses aplicativos estão localizados no diretório raiz de instalação do SGBD na pasta bin. Atualmente existem vários programas para gerenciamento de banco de dados com interfaces muito amigáveis e intuitivas, no caso do Firebird um dos mais utilizados é a ferramenta IBExpert que é disponibilizada tanto com a versão free com algumas limitações, como a versão paga que vem com funcionalidades bem interessantes. O IBExpert torna a tarefa de manipulação da base da dados (CRUD) bem mais fácil e ágil, mas podem existir certas situações em que não teremos uma ferramenta gráfica para manipularmos nossa base de dados, então para essas ocasiões o próprio Firebird já disponibiliza uma ferramenta para gerenciamento do banco sem interface gráfica em que podemos trabalhar através de digitação de comandos. Essa ferramenta fica no diretório raiz de instalação do Firebird na pasta bin, o nome do aplicativo é isql, com ela podemos executar consultas, inserções, updates e exclusões contra uma base de dados. Notem que nessa pasta bin existem vários aplicativos cada qual com sua finalidade especifica para executar tarefas na base de dados, como mostra a figura 1. Figura 1: Exibe em destaque o caminho para o aplicativo isql. Não se engane com a tela preta de prompt que surge quando se dá um duploclick sobre o ícone isql.exe, com essa telinha feia podemos executar muitas funções.
Figura 2: Exibe a tela inicial do isql. Agora que vimos onde encontrar o isql vamos facilitar o acesso para todos os aplicativos da pasta bin, para podermos acessar tanto o isql como os outros utilitários através do prompt do Windows é só acrescentar na variável de ambiente Path o caminho até a pasta bin do Firebird e reiniciar a máquina, explicação sobre como trabalhar com variáveis de ambiente não faz parte do escopo desse artigo. Agora é só abrir o prompt e digitar isql, vamos nos conectar ao banco de dados desejado, nesse exemplo vou utilizar o banco que acompanha a instalação do Firebird, o famoso EMPLOYEE.FDB na instalação padrão fica gravado no seguinte caminho: C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB Para conectar-se a uma base de dados usando o isql temos que informar o user e o password, nesse caso estou usando o padrão (USER: sysdba PASSWORD: masterkey), é importante mencionar que todos os comandos digitados no isql tem que terminar com ponto e vírgula ;. Usamos a seguinte sintaxe: connect user password; Figura 3: Mostra os comandos para conexão com o banco.
Após efetuarmos a conexão com o banco podemos visualizar todas as tabelas que existem no mesmo, digitando o comando SHOW TABLES; e pressionando a tecla Enter. Figura 4: Exibe uma lista com o nome de todas as tabelas do banco. Caso seja necessário visualizar informações sobre campos, seus respectivos tipos, domínios, chaves etc., digitamos SHOW TABLE ;, esse comando é muito semelhante ao comando DESC do SGBD MySql. Nesse exemplo vou exibir informações sobre a tabela COUNTRY. Figura 5: Exibe informações dos campos da tabela COUNTRY. Operações de Inserts, Updates e consultas SQL, também podem ser executadas no isql, ainda podemos exportar para um arquivo de texto o resultado de um comando. Vou executar uma consulta e exportar o resultado para um arquivo txt. Será digitada a seguinte sintaxe: Listagem 1: Sintaze de comando para exportar consulta SQL output <CAMINHO_NOME_ARQUIVO>; <CONSULTA_SQL>; output;
Observação: Esses comandos tem que ser digitados em 3 linhas sempre finalizando com ;, senão será criado o arquivo sem conteúdo. Não está no escopo do artigo explicação de comandos SQL. Figura 6: Comandos para executar a consulta e exportar para arquivo txt. Nesse exemplo exportei o resultado da consulta para o arquivo: C:\ConsultaCOUNTRY_SQL.txt, como mostra a figura 7. Figura 7: Exibe o resultado da pesquisa no arquivo txt. Vou demonstrar mais 2 comandos, para execução dos mesmos será necessário sair do isql. Digite o comando EXIT; para sair do isql, agora voltamos ao prompt do Windows. Para saber qual versão do servidor Firebird está rodando basta digitar o comando isql -z no próprio prompt de comando, como mostra a figura 8.
Figura 8: Exibe a versão do servidor Firebird. Agora vou mostrar um comando muito útil para extração de metadados de um determinado banco de dados, antes vamos sair novamente do isql digitando EXIT; e voltar ao prompt do windows. Com esse comando vamos extrair todas as informações do banco EMPLOYEE.FDB e exportaremos para um arquivo txt, a sintaxe é muito simples. Listagem 2: Extraindo informações de uma base de dados isql -extract -output <CAMINHO_NOME_ARQUIVO> < CAMINHO_BANCO > -user SYSDBA - password materkey Figura 9: Exibe o comando para extração e exportação de metadados. Observação: Na sintaxe de comando passamos o caminho e o nome do arquivo para onde será exportado os metadados C:\metadata.txt. Notem que coloquei entre aspas só o endereço do banco, isso porque caso seja digitado nome de pastas com espaços e sem aspas (Ex.: Arquivos de Programas) será disparada uma mensagem de erro, então sempre informamos o endereço entre aspas.
Figura 10: Informações do arquivo txt criado após o comando de extração. Bom pessoal, demonstrei nesse artigo alguns comandos e funcionalidades básicas que o Firebird nos oferece quando não temos um programa para gerenciamento do banco com interface gráfica. Talvez muitos de nós nunca precisaremos manipular dados usando prompt.