Banco corrompido/danificado.

O artigo apresenta algumas das funções utilizadas para detectar e corrigir possíveis problemas de corrupção do banco de dados firebird e Sql no sistema RRSoft.

Resumo

O sistema RRSoft utiliza dois gerenciadores de banco de dados, Firebird que gerencia o Petmaster/ flexcorp e SQL Server que oferece agilidade nas vendas do AgiosPDV.

Causa

O problema pode vir a ocorrer tanto por motivos de software, falha de hardware ou intervenção humana. Segue a lista de ações que podem corromper a base de dados.

– Dispositivo de armazenamento defeituoso: Discos rígidos com setores defeituosos podem causar falhas do software e consequentemente ocasionar a perda de dados.

– Dispositivo de rede com defeito: Ligações de rede danificados ou mal configuradas também podem afetar o banco de dados e torná-lo inacessível, se as placas de interface de rede, cabos, roteadores, hubs e quaisquer outros dispositivos que compreendem as ligações de rede estiverem com problema.

– Falha de energia: Quedas de luz inesperadas também podem danificar o banco de dados.

– Vírus ou outro software malicioso: Softwares maliciosos podem causar danos à base de dados mesmo que indiretamente, pois podem danificar arquivos importantes do Windows, os quais são utilizados pelo sistema.

– Usuários sem experiência ou treinamento: Estes usuários podem causar sérios danos ao banco de dados. Por exemplo, existem pessoas que desligam o computador direto no estabilizador, sem clicar no Menu Iniciar – Desligar; além de alterar parâmetros de configuração do Windows e do Access. Assim como já houve situações em que o colaborador abriu / tentou salvar o banco de dados com o Word, Excel, Bloco de Notas, danificando-o.

Solução comando gfix para resturar o banco de dados

1. Verifique se seu banco de dados está realmente corrompido:

gfix -v -full database.fdb

Este comando irá retornar algumas informações com o número de registros corrompidos e páginas afetadas, se houver. Se o comando não retornar nada seu banco está ok e sem erros.

2. Se o comando informou que existem erros no banco, tente este comando:

gfix -mend -full -ignore database.fdb

Depois de executar este comando, realize o passo 1 novamente, pode ser que alguns erros tenham sido corrigidos, mas não todos. Você pode executar o passo 1 e 2 várias vezes. Mas se o número de erros não diminuir e o banco continuar com erro vamos para um backup/restore.

3. Vamos realizar um backup:

gbak -g -l -z -v database.fdb database.bkp

Aqui realizamos o backup com as seguintes flags:

-g: realiza o garbage collect (coleta de lixo)

-l: ignora transações no limbo

-v: relata cada ação tomada

-z: imprime número de versão

4. Agora vamos restaurar:

gbak -create -v database.bkp database2.fdb

Este comando ira restaurar o banco de dados em database2.fdb (esse será o banco de dados sem corrigido).

Após isso execute o passo 1 no database2.fdb e você verá que não existem mais erros. Banco restaurado com sucesso!

Se mesmo assim nao funcionar, tente este comando para restaurar o backup:

gbak -create -v -inative -ONE_AT_A_TIME database.bkp database2.fdb

Solução DBCC CHECKDB para resturar o banco de dados

O comando DBCC CHECKDB em SQL pode ser usado para verificar as inconsistências do banco de dados e repará-lo.

Passo 1: Acesse o gerenciado SQL management

Passo 2 :DBCC CHECKDB(‘AGIOSPDV‘)

Analisa a integridade do banco.

Passo 3 :DBCC CHECKTABLE (‘Tabela‘).

analisa a tabela da tabela.

Passo 4 :ALTER DATABASE AGIOSPDV SET SINGLE_USER WITH ROLLBACK IMMEDIATE

muda de multi-usuário para usuário-único.

Passo 5 :DBCC CHECKDB (‘AGIOSPDV‘, REPAIR_ALLOW_DATA_LOSS)

Realiza a reparação do banco de dados.

Passo 6 :DBCC CHECKTABLE (‘FUNCIONARIOS‘, REPAIR_ALLOW_DATA_LOSS);

faz a fazer a correção da tabela.

Passo 7 :ALTER DATABASE AGIOSPDV SET MULTI_USER

muda de usuário – único para multi – usuário.

Resolvendo e reparando banco suspect:

Passo 1:EXEC sp_resetstatus ‘AGIOSPDV

Passo 2:ALTER DATABASE AGIOSPDV SET EMERGENCY

Passo 3:DBCC checkdb(‘AGIOSPDV‘)

Passo 4:ALTER DATABASE AGIOSPDV SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Passo 5:DBCC CheckDB (‘AGIOSPDV‘, REPAIR_ALLOW_DATA_LOSS)

Passo 6:ALTER DATABASE AGIOSPDV SET MULTI_USER

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *