Ir para conteúdo
  • Cadastre-se

dev botao

FireBird: Erro 'database shutdown' ?


  • Este tópico foi criado há 1729 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá Tudo Bem!

Desde já Obrigado pela Atenção!!

Atualmente nas minha aplicações uso a versão Firebird-2.0.0.12710-0-Win32.

Em um dos meus clientes estava com uma lentidão muito grande devido ao elevado número de registros, o banco já ultrapassava os 300mb de tamanho.

Então baseado em informações de usuários de firebird, fiz estas checagem pra identificar problemas de índice, além do lixo acumulado depois de tantos anos(esse cliente usa o banco de dados desde 2006) , fiz todos os procedimentos listados abaixo inclusive o backup e restore utilizando a ferramenta Ibexpert.

1 - Abrir o Ibexpert, na aba Services - Database Validation.

- Selecionar apenas as opções Validate Database e Validate Full, rodar e 
verificar se apresenta mensagem de erro.
- Em seguida, selecionar apenas a opção Sweep Database, rodar e verificar se 
apresenta mensagem de erro.
- Em seguida, selecionar apenas a opção Mend Database, rodar e verificar se 
apresenta mensagem de erro.
- Em seguida, selecionar apenas a opção Kill Shadows, rodar e verificar se 
apresenta mensagem de erro.
- Em seguida, selecionar apenas a opção Ignore Checksum, rodar e verificar 
se apresenta mensagem de erro.
- Em seguida, selecionar apenas as opções Check Database, Validate Database 
e Validate Full, rodar e verificar se apresenta mensagem de erro.
- Em seguida, selecionar apenas a opção Limbo Transactions, rodar e 
verificar se apresenta mensagem de erro.

2 - Caso apresente erros os passos 3 e 4 abaixo são imprescindíveis, porém 
mesmo que não apresente erros e o banco de dados esteja aprensentando 
lentidão, o erro pode ser indices desordenados e os passos 3 e 4 é um 
procedimento recomendado.

3 - Esta Parte segue como fazer o backup pelo Ibexpert, uma das melhores 
formas de fazer o backup onde o próprio software já analisa o banco para 
encontrar erros que não foi passado pela processo acima.
No Ibexpert, na aba Services - Backup Database.
Selecionar as duas opções Ignore Check Sum e Ignore Transaction in Limbo, 
mantendo as opções defaut como: Garbage collection marcada.
File Name : deixar como esta, pois será o diretório onde será salvo, sempre 
cria na mesma pasta onde esta o banco de dados, no caso mais comum na pasta 
c:\minha pasta\database - onde fica o banco de dados do lojafacil.
Clicar em Start Backup e aguardar a msg : "IBE: Backup completed. Current 
time: DATA. Elapsed time: HORA"
Clicar em Close para sair.

3.1 - Apos fazer o backup, feche o IBExpert e renomeie o banco de dados.

4 - A restauração do banco de dados, finaliza a analise 100%
No Ibexpert, na aba Services - Restore Database.
Selecionar a opção de Replace Existing database, esta opção substitui o 
banco de dados com o mesmo nome no mesmo diretório.
Em File Name - selecionar a opção c:\minha pasta\database e selecionar o 
DB.fbk pois e o backup do banco de dados pelo ibexpert.
Clicar em Start Restore e aguardar o término.
Caso ao término do procedimento de restore, apresente uma mensagem diferente 
do exemplo abaixo, problemas no banco.
gbak: committing metadata
gbak:finishing, closing, and going home
IBE: Restore completed. Current time: DATA. Elapsed time: HORA "

Depois de feito o restore o tamanho do banco reduziu consideravelmente de 300 mb para 35 mb, além de aumentar muito a velocidade na troca de informações.

Atualizei o banco depois de feito o backup/restore no Ibexpert no cliente, só que surgiu um problema que não havia antes de fazer o backup / restore, no cliente existe o servidor e mais dois terminais que usam este mesmo banco de dados, o problema é é que só um terminal pode conectar ao banco de dados(o terminal que conectar primeiro acessa o Sistema  sem problemas, mas se um segundo terminal tenta conectar no sistema enquanto outro está também está dando o erro 'database shutdown'(está em anexo na primeira imagem),. Já procurei este erro e não acho nada sobre a possível causa, sei que antes do backup / restore esse erro não ocorria, e todos os terminais conseguiam acessar ao mesmo tempo o banco de dados, então o problema surgiu ao realizar o backup /restore.

Como a versão do firebird que utilizo já antiga, então resolve fazer um teste e desinstalei o Firebird-2.0.0.12710-0-Win32 e instalei a versão Firebird-2.5.9.27139_0_Win32 mais atual e fiz os mesmos procedimentos descritos acima usando o banco de dados que estava grande e lento, mas que permitia a conexão de todos os terminais. Depois de feito o backup / restore com essa versão mais nova, o banco ficou mais rápido, menor mas o problema de só um terminal conseguir conectar no banco e quando outro tenta conectar não consegue, mas mudou a mensagem do erro para 'connection lost to database' segunda imagem em anexo.

Alguém já passou por isso? Se sim como conseguiu resolver esse problema?

Estou errando no processo de backup / restore(via Ibexpert)? Qual o jeito correto?

É bug do Firebird? Ou o problema é no Ibexpert?

Muito Obrigado pela Atenção!  E desculpa pelo longo texto a seguir.

erro_banco_1.jpgerro_banco_2_firebird_2_5_9.jpg

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
15 horas atrás, Mauricio Elias disse:

Já procurei este erro e não acho nada sobre a possível causa, sei que antes do backup / restore esse erro não ocorria, e todos os terminais conseguiam acessar ao mesmo tempo o banco de dados, então o problema surgiu ao realizar o backup /restore.

Isso pode ter sido causado por problemas na restauração.

Quando há problemas e o FB não consegue criar os índices, por exemplo, quando há registros faltando, ele deixa o banco de dados em modo "shutdown" que é de manutenção, por isso apenas uma conexão pode ser feita nele.

Essa situação é informada no log da restauração, se você não marcou a opção "verbose" na restauração não conseguiu ver essa mensagem.

Antes de retornar o banco para "online" como sugerido pelo Rafael você deve verificar os problemas.

Para verificar índices inativos:

C:\Temp>"c:\Program Files (x86)\Firebird\Firebird_2_5\bin\isql.exe" banco.fdb -user sysdba -pass masterkey
Database:  banco.fdb, User: sysdba
SQL> select rdb$index_name from rdb$indices where rdb$index_inactive = 3;

Caso retorne algo você pode tentar reativar cada índice, desta forma:

SQL> alter index idx_meu_indice active;

O mais provável é que ainda ocorra erro por ser um índice de chave estrangeira onde está faltando registros, então para ativar o índice você vai precisar restaurar o registro com problema, ou se não for possível, apagar os registros que referenciam o mesmo. Após isso tentar ativar o índice novamente.

Depois de ativar todos os índices você pode colocar o banco em modo "online" novamente.

C:\Temp>"c:\Program Files (x86)\Firebird\Firebird_2_5\bin\gfix.exe" -online banco.fdb -user sysdba -pass masterkey

 

  • Curtir 4
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia 

16 horas atrás, Rafael Moreira Neves disse:

Olá Maurício,

No IBExpert vai em Services, Database Shutdown. Em seguida em Services, Database Online.

 

Obrigado Rafael Moreira Neves, segui o que você sugeriu e deu certo Muito Obrigado!!

2 horas atrás, BigWings disse:

Isso pode ter sido causado por problemas na restauração.

Quando há problemas e o FB não consegue criar os índices, por exemplo, quando há registros faltando, ele deixa o banco de dados em modo "shutdown" que é de manutenção, por isso apenas uma conexão pode ser feita nele.

Essa situação é informada no log da restauração, se você não marcou a opção "verbose" na restauração não conseguiu ver essa mensagem.

Antes de retornar o banco para "online" como sugerido pelo Rafael você deve verificar os problemas.

Para verificar índices inativos:


C:\Temp>"c:\Program Files (x86)\Firebird\Firebird_2_5\bin\isql.exe" banco.fdb -user sysdba -pass masterkey
Database:  banco.fdb, User: sysdba
SQL> select rdb$index_name from rdb$indices where rdb$index_inactive = 3;

Caso retorne algo você pode tentar reativar cada índice, desta forma:


SQL> alter index idx_meu_indice active;

O mais provável é que ainda ocorra erro por ser um índice de chave estrangeira onde está faltando registros, então para ativar o índice você vai precisar restaurar o registro com problema, ou se não for possível, apagar os registros que referenciam o mesmo. Após isso tentar ativar o índice novamente.

Depois de ativar todos os índices você pode colocar o banco em modo "online" novamente.


C:\Temp>"c:\Program Files (x86)\Firebird\Firebird_2_5\bin\gfix.exe" -online banco.fdb -user sysdba -pass masterkey

 

BigWings Obrigado pela explicação, não sabia desse modo shutdown, ae fiz o procedimento de novo ae observei a questão do verbose, e depois segui a suas instruções antes de deixar online e deu tudo certo certo Muito Obrigado!! 

Obrigado Rafael e Big Wings vocês me ajudaram Muito!! Muito Obrigado!!

Problema Resolvido!!

Obrigado a Todos!!

Editado por Mauricio Elias
  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1729 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.