[firebase-br] RES: [ AJUDA ] Ativar e Desativar Indices ????/

Carlos H. Cantu listas em warmboot.com.br
Seg Jul 4 15:09:29 -03 2011


Vc não pode usar execute block dentro de uma stored procedure. O corpo
do execute block já seria o corpo da sua procedure.

O exemplo usa o execute block justamente pra você não ter que criar
uma stored procedure só para isso.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

DM> Cantu boa tarde

DM> Obrigado por responder.

DM> Eu estava tentando criar um SP que pudesse fazer isso o erro aconteceu na
DM> seguinte instrução "EXECUTE BLOCK AS"

DM> acredito que seja um erro bem primario, ja que sou iniciante em FB.

DM> Aproveitando a apurtunidade seria possivel escrever um SP para isso ?, Segue
DM> o SQL.

DM> SET TERM !! ;
DM> EXECUTE BLOCK AS
DM> DECLARE VARIABLE STMT VARCHAR(1000);
DM> BEGIN
DM> FOR SELECT 'ALTER INDEX '||RDB$INDEX_NAME ||' ACTIVE;'
DM> FROM RDB$INDICES
DM> WHERE RDB$SYSTEM_FLAG IS NOT NULL AND RDB$SYSTEM_FLAG = 0
DM> INTO :STMT
DM> DO EXECUTE STATEMENT :STMT;
DM> END!!
DM> SET TERM ; !!


DM> -----Mensagem Original----- 
DM> From: Carlos H. Cantu
DM> Sent: Monday, July 04, 2011 2:46 PM
DM> To: FireBase
DM> Subject: Re: [firebase-br] RES: [ AJUDA ] Ativar e Desativar Indices ????/

DM> Índices associados a constraints (PKs, FKs, etc) não podem ser
DM> desativados no Firebird.

DM> Se a idéia é reconstruir todos os índices, segue a dica:
DM> http://www.firebirdnews.org/?p=5051

DM> PS: Diego, vc disse que o comando "não roda", mas não disse qual o
DM> erro retornado.

DM> []s
DM> Carlos H. Cantu
DM> www.FireBase.com.br - www.firebirdnews.org
DM> www.warmboot.com.br - blog.firebase.com.br

EJ>> Olha, este assunto é um pouco polêmico... Acho que talvez seja melhor
EJ>> o Cantu responder.

EJ>> Em algumas versões do IbExpert, este comando alterava algumas tabelas
EJ>> de sistema que poderiam deixar o banco "suspeito". Só dava para ter
EJ>> certeza após um backup / restore...

EJ>> Na verdade, a forma mais simples de recalcular um índice no firebird é
EJ>> "reativar" um índice.

EJ>> Nas versões 1.x mesmo que você "desativasse" um índice, algumas "check
EJ>> constraints" contiuavam funcionando... Ou seja isto dava uma falsa
EJ>> ilusão de que o índice estava desativado.

EJ>> Eu sinceramente não gastei tempo estudando este comportamento nas
EJ>> versões do Firebird 2.X Mas sei que foram realizadas várias alterações
EJ>> na forma como o banco trata os índices....

EJ>> ==========================
EJ>> Eduardo Jedliczka
EJ>> Apucarana - Pr
EJ>> ==========================




EJ>> Em 4 de julho de 2011 14:00, Oliveira, José Augusto Siqueira de
EJ>> <contabil em sivolc.ind.br> escreveu:
>>> Eduardo,
>>>
>>>        No IBExpert versão full, você tem uma opção de active para 
>>> utilizar
>>> nos índices, que gera a seguinte SQL alter index CONTAS_A_RECEBER_IDX1
>>> inactive
>>>
>>>        Nesse caso não seria uma forma de desativar índices ou na verdade
>>> esse comando não "desativa" o índice realmente ?
>>>
>>>
>>> Oliveira, José Augusto Siqueira de
>>> Sivolc  Móveis e Complementos
>>> (32) 3531-4677
>>> contabil em sivolc.ind.br
>>>
>>> "Aviso de confidencialidade profissional" - Esta mensagem eletrônica e 
>>> seus
>>> anexos são destinados exclusivamente ao(s) destinatário(s) acima e podem
>>> conter informações confidenciais sujeitas a restrição legal de 
>>> comunicação
>>> entre as partes. Caso tenha recebido esta mensagem por engano, fica V.Sa.
>>> ciente de que a distribuição, divulgação ou disseminação das informações
>>> aqui contidas ou anexadas é terminantemente proibida, sujeitando o
>>> responsável às penalidades aplicáveis. Assim, solicitamos a gentileza de
>>> retorná-la de imediato ao remetente, eliminando-a definitivamente de seu
>>> sistema. Em caso de dúvida, queira por favor entrar em contato conosco."
>>>
>>> "Confidentiality notice" - This message and its attachments are addressed
>>> solely to the persons above and may contain privileged and confidential
>>> communication. If you have received the message in error, the 
>>> distribution
>>> or dissemination of the content hereof is prohibited. Please return it
>>> immediately to the sender and please delete the message from your system 
>>> on
>>> a permanent basis. Should you have any questions, please contact."
>>>
>>>
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] 
>>> Em
>>> nome de Diego Maccari
>>> Enviada em: segunda-feira, 4 de julho de 2011 13:35
>>> Para: FireBase
>>> Assunto: Re: [firebase-br] [ AJUDA ] Ativar e Desativar Indices ????/
>>>
>>> Mas alguém poderia dar uma dica aqui ??
>>>
>>> -----Mensagem Original-----
>>> From: Diego Maccari
>>> Sent: Monday, July 04, 2011 10:02 AM
>>> To: Eduardo Jedliczka
>>> Cc: FireBase
>>> Subject: Re: [firebase-br] [ AJUDA ] Ativar e Desativar Indices ????/
>>>
>>> Bom dia Eduardo
>>>
>>> Obrigado por responder.
>>>
>>> Olha só peguei esta idéia da FAQ do FireBird, se não estou enganado isso 
>>> foi
>>> implementado a partir da versão 1.5,
>>> veja o link
>>> http://www.firebirdfaq.org/faq274/
>>>
>>>
>>> Me corrija caso eu esteja falando bobagem.
>>>
>>>
>>> -----Mensagem Original-----
>>> From: Eduardo Jedliczka
>>> Sent: Monday, July 04, 2011 9:56 AM
>>> To: Diego Maccari ; FireBase
>>> Subject: Re: [firebase-br] [ AJUDA ] Ativar e Desativar Indices ????/
>>>
>>> Não roda.
>>>
>>> O Firebird não tem o conceito de "ativação / desativação de indices"
>>> como no oracle.
>>>
>>> O correto é droppar todos os índices, e depois recriar os mesmos.
>>>
>>> Sim, existe uma forma de restaurar o backup com os índices
>>> desativados, mas para evitar surpresas, depois de feito isto, também é
>>> aconselhável dropar os índices e recriar.
>>>
>>>
>>> ==========================
>>> Eduardo Jedliczka
>>> Apucarana - Pr
>>> ==========================
>>>
>>>
>>>
>>>
>>> Em 4 de julho de 2011 09:41, Diego Maccari <diegomaccari em ig.com.br>
>>> escreveu:
>>>> Bom dia Pessoal
>>>>
>>>> Estou tentando Ativar e Desativar os indices do meu DB/FB 2.5 em uma 
>>>> query
>>>
>>>> com o seguinte SQL:
>>>>
>>>> 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 NOT NULL AND RDB$SYSTEM_FLAG = 0
>>>>          INTO :STMT
>>>>  DO EXECUTE STATEMENT :STMT;
>>>>  END!!
>>>>  SET TERM ; !!
>>>>
>>>> Mas esse SQL não roda, como deve executar este SQL ?
>>>>
>>>> Att
>>>>
>>>> Diego M.


DM> ______________________________________________
DM> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
DM> Para saber como gerenciar/excluir seu cadastro na lista, use: 
DM> http://www.firebase.com.br/fb/artigo.php?id=1107
DM> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista