Mudanças entre as edições de "Producao:Operacional/Instalacao/Firebird"

De Oazez
Ir para: navegação, pesquisa
(Criou página com '== Reparar base de dados corrompida == /opt/firebird/bin/fbmgr -shut -force -user SYSDBA -pass JJLERC /opt/firebird/bin/fbmgr -start -forever se for o firebird 2.* pode dar u...')
 
(Limpou toda a página)
 
(2 revisões intermediárias por um outro usuário não estão sendo mostradas)
Linha 1: Linha 1:
== Reparar base de dados corrompida ==
 
/opt/firebird/bin/fbmgr -shut -force -user SYSDBA -pass JJLERC
 
/opt/firebird/bin/fbmgr -start -forever
 
  
se for o firebird 2.* pode dar um kill no guardian e depois no fbserver
 
 
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:
 
 
//ajusta em modo Síncrono
 
  gfix -write sync banco_de_dados.gdb
 
 
//ajusta em modo Assíncrono
 
  gfix -write async banco_de_dados.gdb
 
 
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.
 
 
== RDB$39 ==
 
 
Anyway, before I found this thread, I came up with a simple hack that worked for me:
 
- opened the fdb file that I could not restore in a hex editor,
 
- found the tring RDB$ADMIN (it appeared at the very end , at least in my case)
 
- changed a single letter, like RDB$ADMIN to RDB$ADMIM
 
- saved
 
- and now the restore works without an error
 
 
OU
 
 
Você tem um role criado com o nome RDB$ADMIN. Quando vc tenta restaurar a base
 
de dados no FB 2.5, ele tenta criar um ROLE com esse mesmo nome (pois RDB$ADMIN
 
é um SYSTEM ROLE no FB 2.5), e não está conseguindo (por isso a duplicidade).
 
 
(Esse ROLE pode estar aí porque alguém criou coincidentemente usando o mesmo
 
nome que o FB 2.5 usa, ou então alguém migrou o banco pra FB 2.5, e depois
 
resolveu voltar ele pra versão 2.1 (levando junto o role).
 
 
Enfim, faça uma cópia do banco, apague o ROLE e tente fazer o backup/restore no
 
FB 2.5. Deve dar certo.)
 
 
== Várias instâncias em uma mesma máquina ==
 
 
Instalacao de várias instancias do servidor firebird na mesma maquina
 
 
1) Parar as instancias já iniciadas
 
  . Utilize o painel de controle de servicos do windows e pare os servicos que
 
    começam com "Firebird Guardian - *" e "Firebird Server - *", ou
 
 
  . Na janela de comando como administrador:
 
    Va até a pasta do firebird, por exemplo:
 
      cd "\Program Files\Firebird\Firebird_2_5\bin"  (a tecla tab é sua amiga)
 
    Verificar quais instancias estao rodando
 
      instsvc -q
 
    Pare TODAS as instancias que estao rodando
 
      instsvc -p -n "Nome da Instancia"
 
 
2) Instale o servidor utilizando o instalador com os seguintes cuidados:
 
  . Use a opcao custom
 
  . Altere a pasta de instalacao para nao coincidir com as demais
 
  . Não nao instale como servico
 
  . Não use o guardian
 
  . Não inicie automaticamente
 
  . Não copie o gds32.dll para a pasta de sistemas
 
 
 
3) Altere a porta de conexao com esta instancia
 
  . Na pasta onde foi instalada a nova instancia, altere o arquivo firebird.conf
 
    com um editor de textos simples (notepad ou edit).
 
  . encontre a linha:
 
    #RemoteServicePort=3050 e faça as seguintes alterações:
 
    . remova ( # ) da frente do nome e depois,
 
    . altere o número da porta 3050 para qualquer outro número que nao estejam em
 
      uso pelo windows e as outras instancias. Por exemplo 3051, 3052, 3053...
 
    . SALVE A ALTERAÇÃO
 
 
 
4) Crie a nova instancia
 
  . Na janela de comando como administrador:
 
    Va até a NOVA pasta do firebird, por exemplo:
 
      cd "\Program Files\Firebird\Firebird_2_5_OAZEZ\bin"  (a tecla tab é sua amiga)
 
  . Crie a nova instancia
 
    instsvc i -s -a -g -n "Nome da nova Instancia" <- OAZEZ por exemplo
 
    . Voce dever receber as mensagens:
 
      Service "Firebird Guardian - Nome da nova instancia" succefuly created.
 
      Service "Firebird Servier - Nome da nova instancia" succefuly created.
 
  . Inicie as instancias
 
    instsvc sta
 
    . Voce dever receber as mensagens:
 
      Service "Firebird Guardian - Nome da nova instancia" succefuly started.
 
 
  . Verifique se as instancia foram criadas e estao rodando via painel de controle,
 
    ou como descrito acima.
 
   
 
5) Faca as alteracoes de firewall necessárias
 
 
6) A conexao a nova instancia deve acontecer utilizando a nova porta, por exemplo:
 
  . 127.0.0.1/3051:c:\oazez\dados\ArquivoMassa.gdb   
 
   
 
7) Caso voce tenha instalado versoes diferentes do firebird, cada aplicacao deve
 
  utilizar o cliente (gds32.dll) correto para evitar complicações futuras.
 
 
 
Referencias:
 
  Instalation Notes do Firebird
 
  http://www.destructor.de/firebird/multiinstance.htm
 
  http://dicasph.blogspot.com.br/2010/04/dois-firebird-20v-e-25v-instanciados.html
 
 
 
== Reativar todos os índices de uma vez ==
 
 
<code>SET TERM ^ ;
 
 
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)
 
    ORDER BY
 
      RDB$FOREIGN_KEY NULLS FIRST
 
    INTO
 
      :STMT
 
  DO
 
    EXECUTE STATEMENT :STMT;
 
END^
 
 
SET TERM ; ^</code>
 
 
== Links Úteis ==
 

Edição atual tal como às 10h07min de 30 de abril de 2019