Um dos problemas mais sérios na corrupção do banco de dados interbase é a queda de energia no servidor de banco de dados durante o processo de gravação de dados de alguma aplicação. A interrupção do processo de gravação poderá resultar na gravação de dados incompletos ou corrompidos.
Precauções Básicas
É de extrema importância que o Administrador do Sistema e o próprio
usuário tome os cuidados necessários para evitar este tipo de
acidente.
Outra medida importante, é configurar adequadamente o modo de escrita
(gravação) no banco de dados. O Interbase possui dois modos de
escrita:
Síncrona e Assíncrona
Síncrona - Dados são gravados em disco imediatamente.
Assíncrona - É a escrita considerada "cuidadosa",
pois os dados são gravados assim que a transação for commitada.
A desvantagem é que em ambiente de trabalho windows, estas instruções
são ignoradas, uma vez que o próprio sistema operacional controla
estas tarefas. Em sistemas como Linux e/ou Unix, este tipo de escrita funciona
muito bem.
A vantagem deste tipo de escrita é a performance, uma vez que o sistema
operacional irá gerenciar o cache de dados. Mas é preciso ter
uma política muito boa de backup, para o caso de acontecer algum problema
de corrupção.
Na versão 6 do Interbase, assíncrona é a escrita padrão.
Ajustando a escrita
gfix -write sync banco_de_dados.gdb
//ajusta em modo Síncrono
gfix -write async banco_de_dados.gdb
//ajusta em modo Assíncrono
Reparando o banco
Inicialmente, poderíamos utilizar vários programas para proceder
com a recuperação do banco de dados, mas o próprio Interbase
possui uma excelente ferramenta para isso.
Esta ferramenta é o GFIX que se encontra instalado no diretório
BIN do banco de dados, e funciona em linha de comando no Prompt do MS-DOS.
A primeira coisa a ser definida, para facilitar e muito o trabalho, é incluir
variáveis de ambiente no sistema operacional, onde iremos definir usuário,
senha e localização (path) do GFIX. Para tanto, inclua as linhas
abaixo no arquivo AUTOEXEC.BAT e depois disso reiniciar o computador:
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey
SET PATH=%PATH%;c:\arquiv~1\borland\interb~1\bin
Note que a variável SET PATH poderá mudar de acordo com o diretório
de instalação do interbase.
Caso o sistema operacional seja o Windows 2000, Windows 2000 Server ou Windows
XP, você poderá incluir estas variáveis na opção "Variáveis
de Ambiente" nas Propriedades do Sistema (Painel de Controle)
Lembrando que, a deverá ser observada a condição de Case-Sensitive
para usuário e senha.
1º Passo ( Cópia e Acesso )
Sempre utilize uma cópia do banco de dados corrompido, além
de possuir acesso exclusivo ao mesmo.
Proceda então com uma cópia utilizando o próprio windows
explorer ou o MS-DOS, ex:
copy banco.gdb copia.gdb
2º Passo ( Verificar )
Verifique se o banco de dados realmente se encontra corrompido utilizando
o seguinte comando:
gfix -v -full banco_de_dados.gdb
Caso o comando tenha indicado algum tipo de problema, aí sim iremos
começar as rotinas de reparo do banco a seguir.
3º Passo ( Reparar )
gfix -mend -full -ignore banco_de_dados.gdb
Após este procedimento, deveremos novamente verificar se o banco foi
reparado, utilizando o comando do 2º Passo. Caso ainda assim o banco continue
apresentando erros, o próximo passo será efetuar um backup completo
e depois restaurá-lo conforme descrito adiante.
Backup do Banco de Dados
Da mesma maneira como utilizamos o GFIX do Interbase, poderemos utilizar o
utilitário de backup, o GBAK, que também se encontra instalado
no diretório Bin do Interbase / Firebird e funciona em linha de comando.
Veja alguns comandos descritos abaixo:
gbak -backup -v -ignore banco_de_dados.gdb arquivo_de_backup.gbk
Este é o comando em sua forma mais simples. Caso houver necessidade,
por falhas no procedimento, por exemplo, poderá optar em
incluir outras opções, como descrito abaixo:
Ignorar o "garbage collection".
gbak -backup -v -ignore -garbage banco_de_dados.gdb arquivo_de_backup.gbk
Ignorar transações em limbo:
gbak -backup -v -ignore -garbage -limbo banco_de_dados.gdb arquivo_de_backup.gbk
Após proceder com o backup, poderemos agora finalmente tentar a restauração
do mesmo, descartando informações danificadas, corrompidas, etc.
Restaurando o Banco de Dados
Para a restauração do banco, podemos continuar a utilizar
o utilitário GBAK, conforme descrito abaixo:
Restauração básica:
gbak -create -v arquivo_de_backup.gbk novo_banco.gdb
Caso este procedimento relate erros, tente as seguitnes opções:
Não ativar indices durante a restauração:
gbak -create -v -inactive arquivo_de_backup.gbk novo_banco.gdb
Após a conclusão da restauração, você deverá ativar
os índices manualmente.
Restaurar uma tabela de cada vez:
gbak -create -v -one_at_time arquivo_de_backup.gbk novo_banco.gdb
Este procedimento fará com que cada tabela seja restaurada e em seguida
commitada, portanto desta maneira você poderá conseguir ao menos
restaurar uma parte do banco de dados.
John Klaus Kanenberg - johnklaus
http://kanenberg.sytes.net
|