Utilizando Index no Banco Firebird

Firebird

13/10/2004

tenho três perguntas:

1ª eu tenho um banco com varios campo indexados (como null e unique)
se por acaso o sistema está sendo utilizado e houver uma queda de energia o banco pode perder esse indices, estou correto?

2ª se eu perder esses indices que rotina eu posso usar no meu sistema para reindexar os indices no banco?


3ª se eu reindexar o banco o sistema volta ao normal ou eu corro o risco de perder algum registro?


Tap_pedroso

Tap_pedroso

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

13/10/2004

Acho que a única maneira de perder um índice seria corromper o banco de dados, daí tem que passar o Gfix. O que pode acontecer é degradar a chamada seletividade do índice o que torna o índice menos eficaz. Você pode usar o comando SET STATISTICS para ajustar novamente a seletividade (ou se o banco de dados não for muito grande, simplesmente faça um backup e depois restaure-o)


GOSTEI 0
Tap_pedroso

Tap_pedroso

13/10/2004

vc pode me dizer onde e como utilizar esse gfix


GOSTEI 0
Gandalf.nho

Gandalf.nho

13/10/2004

Gfix é um utilitário de linha de comando que acompanha o IB/FB. Você pode reparar um banco corrompido através dele ou usando a SERVICES API. Geralmente os aplicativos que servem para fazer a manutenção das bases de dados (IBConsole, IBOConsole, IBExpert, etc) tem uma opção para usar o reparo. Dê uma olhada na documentação para ver como usa o Gfix (eu uso a API, por isso não sei os parâmetros) ou pesquise no fórum.


GOSTEI 0
Christian_adriano

Christian_adriano

13/10/2004

olá colega gandalf,


vc poderia me passar como se faz para Verificar se um banco esta corrompido ou danificado e caso esteja como recupera-lo usando SERVICES API ??


Desde já agradeço atenção.

[]´s.

Christian.


GOSTEI 0
Vinicius2k

Vinicius2k

13/10/2004

Colega tap_pedroso,

Vc está encarando um Banco de Dados Relacional, como se fosse um Banco Desktop...
se por acaso o sistema está sendo utilizado e houver uma queda de energia o banco pode perder esse indices, estou correto?

Não vai ´perder´ índices... o risco é de danificar a base toda ou parcialmente, incluindo os índices, e talvez, possa ser corrigido com o GFIX ( pesquise no fórum como utilizá-lo via linha de comando ).

se eu perder esses indices que rotina eu posso usar no meu sistema para reindexar os indices no banco?

Assim como não vai ´perder´, ´reindexar´ não seria o termo mais apropriado... vc pode reconstruir os índices de duas formas :
Dropar e Recriar :
drop index INDICE;
/*...*/
create index INDICE on TABELA (COLUNA1, COLUNA2, ... COLUNAn);

ou Desativar e Ativar :
alter index INDICE inactive;
/*... */
alter index INDICE active;


se eu reindexar o banco o sistema volta ao normal ou eu corro o risco de perder algum registro?

Isto é impossível prever... depende do dano causado à base... não abra mão de um no-break no seu servidor e suas chances de problemas serão quase nulas... menores ainda com o Firebird (em comparação com o IB 6) pq o Forced Writes já está ´ligado´ por default, a não ser que vc desligue...

T+


GOSTEI 0
POSTAR