...
sc stop FirebirdServerDefaultInstance
taskkill -im fireb* -f
- Nos comando acima, o nome do seerviço do firebird pode ser outro como FirebirdServerHQBirdInstance e no firebird 2.5 o nome do processo é fb_inet_server e não firebird.
- Após o serviço do firebird ter sido parado, pode-se copiar o banco de dados utilizando ctrl+c + ctrl+v
- Rodar o comando gfix para remover os problemas do banco em 2 etapas pela linha de comando:
- "c:\program files\firebird\firebird_3_0\gfix.exe" c:\sys\base\millenium -user sysdba -pass masterkey -full -validate - este comando vai vasculhar o banco todo procurando erros
- "c:\program files\firebird\firebird_3_0\gfix.exe" c:\sys\base\millenium -user sysdba -pass masterkey -mend -ig - este comando vai vasculhar preparar a base corrompida para backup e restore
- é importante salientar que em algumas versões do firebird, o primeiro comando basta colocar -full e ele não aceita o -validate
- Fazer o Backup e Restore do banco, para isso vamos utilizar o comando gbak da seguinte forma
"c:\program files\firebird\firebird_3_0\gbak.exe" -z -b -user sysdba -pass masterkey -g -v -st t -y orig.log c:\sys\base\MILLENIUM_CORROMP stdout | "c:\program files\firebird\firebird_3_0\gbak.exe" -z -user sysdba -pass masterkey -c -v -st t -y dest.log stdin c:\sys\base\MILLENIUM_OK
Informações title Dica Esse comando é para o firebird 3.0 para o firebird 2.5 devemos adaptá-lo para:
- "c:\program files\firebird\firebird_2_5\bin\gbak.exe" -z -b -user sysdba -pass masterkey -g -v -st t -y orig.log c:\sys\base\MILLENIUM_CORROMP stdout | "c:\program files\firebird\firebird_2_5\bin\gbak.exe" -z -user sysdba -pass masterkey -c -v -st t -y dest.log stdin c:\sys\base\MILLENIUM_OK
Informações title Dica Extra Para facilitar pode-se usar esse BackupRestore.bat passando o banco de origem e destino como parâmetro
ex: BackupRestore.bat c:\sys\base\MILLENIUM_ERRO c:\sys\base\MILLENIUM
- Após executar esse procedimento serão criados 2 arquivos de log, orig.log e dest.log, devemos abrir os dois arquivos e verificar se não houve nenhum erro que interrompeu o processo do backup, o comando acima executa o backup e o restore numa única execução se utilizando da pilha do windows (ou do Linux, esse comando funciona nele também), caso dê algum erro precisamos avalar para tentar resolver, se for na criação dos indices, podemos no comando acima no final colocar um -i para que ele não ative os indices e depois rodar o seguinte script no dbeaver ou ibexpert:
EXECUTE BLOCK AS
DECLARE VARIABLE stmt VARCHAR(1000);
BEGIN
for select 'ALTER INDEX '||rdb$index_name ||' ACTIVE;'
from rdb$indices
where (rdb$system_flag is null or rdb$system_flag = 0 AND rdb$index_inactive=1)
order by rdb$foreign_key nulls first
into :stmt
do EXECUTE STATEMENT :stmt;
ENDConforme ir encontrando os problemas com os indices, deve-se resolver e rodar o comando novamente até conseguir dar commit.
- Finalize rodando as estatisticas dos indices com o seguinte script
EXECUTE BLOCK AS
DECLARE VARIABLE IDX VARCHAR(60);
BEGIN
FOR SELECT RDB$INDEX_NAME
FROM RDB$INDICES
INTO :IDX
DO EXECUTE STATEMENT 'SET STATISTICS INDEX ' || :IDX;
END;
...