INDICES TEMP. X INDICES CORROMPIDO

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

INDICES TEMP. X INDICES CORROMPIDO

Mensagem por marcos.gurupi »

Caros colegas, tenho uma empresa q estah corrompendo os indices com muita frequencia, as vezes eles tem q recriar os indices 3 vezes no dia isso traz muita dor de cabeça pq saum varios terminais e quase nunca ficam desocupados. O procedimento q eu faço eh o sequinte:

SELECT 1 // ARQUIVO DE CONTAS A RECEBER
INDES ON PEDIDO TAG KEY001 TO &ARQTMP FOR [condição]
do while .t.
...
enddo
set index to rec001 // VOLTA OS INDICES INICIAIS
RETURN

Seria problema no sistema ou algum problema na rede se for na rede como detectar?

Obrigado.

Marcos Roberto
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Marcos

Isso aconteceu muito comigo quando comecei a usar indices CDX, resolvi o problema apenas excluindo os arquivos de indices antes de criá-los novamente. Não sei o porquê acontece isso, mas depois que passei a excluir os arquivos antes meus problemas "se acabaram-se"...

Entretanto não podemos descartar problemas na rede, cabos mal crimpados, problemas com protocolos, etc...

Ps : Para excuir os arquivos eu utilizo a FERASE()

Até logo.

Marcelo
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

mas eu excluo o indices antes.

Mensagem por marcos.gurupi »

Caro colega, todos os dias quando o servidor eh ligado eu coloquei uma rotina de comando no autoexec.bat para verificar se existe algum dbf danificado com o DBRX.EXE *.DBF e depois eu apago os indices *.dbf quando o usuario entra no programa o sistema cria novos indices, mas mesmo assim as vezes precisa recriar os indices novamente, acontece tb quando todo o BDRX d aparecer a seguinte mensagem na correção:
END OF FILE MARKER APPENDED

Pra te falar a verdade n sei o que seria isso. Obrigado.

Marcos Roberto
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Olá amigos.

Corromper índices não é coisa normal...

Eu já tive problemas deste tipo, e quase sempre eles estavam ligados aos
seguintes defeitos:

1- Os índices NÃO estão abertos quando os dados estão sendo gravados;

2- Suprimento de energia (no breks instáveis, com defeito) (cabo de energização do computador perto dos pés do operador, e quando os contatos da tomada já não estão 100%, basta uma piscadinha de décimo de segundo para ocorrer o erro);

3- Cabos da rede expostos a transientes externos muito severos (cruzando com cabos de energia que conduzem surtos de tensão ou de corrente, como cabos que atendem a máquinas que ligam e desligam cargas altas, ar-condicionados muito potentes, e outros);

4- Também já aconteceu que encontramos cabos com terminais onde os fios do par trançado estavam em posição errada, invertida (isto torna a rede instável, e se a instabilidade ocorre durante a gravação de dados.... erro... índice corrompido).

É bom pesquisar, pois numa rede físicamente bem instalada, e se os índices estão abertos no momento da gravação, não tem como ocorrer corrupção de índices. Se quizermos ser bastante previdentes, digamos que a probabilidade da corrupção acontecer é bastante baixa.

Eu tenho sistemas que possuem 18 arquivos e 38 índices abertos, e quando todos os detalhes acima são observados e estão sob controle, a corrupção raramente acontece. Digamos UMA reindexação mensal.

Hasse.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Olá amigos.

Corromper índices não é coisa normal...

Eu já tive problemas deste tipo, e quase sempre eles estavam ligados aos
seguintes defeitos:

1- Os índices NÃO estão abetos quando os dados estão sendo gravados;

2- Suprimento de energia (no breks instáveis, com defeito) (cabo de energização do computador perto dos pés do operador, e quando o contato já não estão 100%, basta uma piscadinha de décimo de segundo);

3- Cabos da rede expostos a transientes externos muito severos (cruzando com cabos de energia que conduzem surtos de tensão ou de corrente, como cabos que atendem a máquinas que ligam e desligam cargas altas, e outros);

4- Também já aconteceu que encontramos cabos com terminais onde os fios do par trançado estavam em posição errada, invertida (isto torna a rede instável, e se a instabilidade ocorre durante a gravação de dados.... erro... índice corrompido).

É bom pesquisar, pois numa rede físicamente bem instalada, e se os índices estão abertos no momento da gravação, não tem como ocorrer corrupção de índices. Se quizermos ser bastante previdentes, digamos que a probabilidade da corrupção acontecer é bastante baixa.

Eu tenho sistemas que possuem 18 arquivos e 38 índices abertos, e quando todos os detalhes acima são observados e estão sob controle, a corrupção raramente acontece.

Hasse.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Olá amigos.

Corromper índices não é coisa normal...

Eu já tive problemas deste tipo, e quase sempre eles estavam ligados aos
seguintes defeitos:

1- Os índices NÃO estão abetos quando os dados estão sendo gravados;

2- Suprimento de energia (no breks instáveis, com defeito) (cabo de energização do computador perto dos pés do operador, e quando o contato já não estão 100%, basta uma piscadinha de décimo de segundo);

3- Cabos da rede expostos a transientes externos muito severos (cruzando com cabos de energia que conduzem surtos de tensão ou de corrente, como cabos que atendem a máquinas que ligam e desligam cargas altas, e outros);

4- Também já aconteceu que encontramos cabos com terminais onde os fios do par trançado estavam em posição errada, invertida (isto torna a rede instável, e se a instabilidade ocorre durante a gravação de dados.... erro... índice corrompido).

É bom pesquisar, pois numa rede físicamente bem instalada, e se os índices estão abertos no momento da gravação, não tem como ocorrer corrupção de índices. Se quizermos ser bastante previdentes, digamos que a probabilidade da corrupção acontecer é bastante baixa.

Eu tenho sistemas que possuem 18 arquivos e 38 índices abertos, e quando todos os detalhes acima são observados e estão sob controle, a corrupção raramente acontece.

Hasse.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Duvida sobre indice aberto na hora da gravacao.

Mensagem por marcos.gurupi »

Caro hase, eu poderia olhar se alguns dos indices estah fechado na hora q alguem na rede estah gravando a minha pergunta eh:

Quando um usuario na rede filtra algun dado, ou seja, cria um indice temporario no final da rotina eu sempre coloco set index to [nomedoindice] para abrir novamento os indices tirando o temporario da ordem (ordsetfocus()), serah que no do set index to se outro usuario da rede estiver gravando algum registro no db poderá ter o indice corrompido?

Obrigado.

Marcos Roberto.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Olá Marcos.

Realmente pode acontecer o que vc colocou..

Sempre que vc cria um novo índice automaticamente TODOS os outros índices "fecham-se". Para evitar isto pode-se usar o INDEX com a clásula ADDITIVE. Veja a sintaxe no NG, pois como eu não uso não me lembro dela de cabeça.

Marcos, evite ao máximo criar índices temporários durante a operação normal do sistema, mas quando isto se tornar necessário, faça-o com o maior cuidado. Outra opção seria bloquear o DBF durante a criação do índice temporário, e só liberá-lo após a re-abertura de TODOS os índices relacionados.

Avalie se não seria possível já abrir este índice quando da inicialização do executável, ou quando da abertura do DBF em questão.

Hasse
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Bom dia senhores...naum sei se entendi direito.....
Os indices temporários devem ser criados somente para auxiliar em consultas ou impressões.....criar indices temporários...e fazer alteração nos dados...com certeza comprometerão os indices principais....tornando os desatualizados...e ocorrendo possíveis corrompimentos....
Caso vc necessite criar o indice temporário para alteração....ele poderá ficar desatualizado tb....caso ocorrer uma gravação ou alteração nos dados do banco em outra estação....
Qq coisa me corrijam....mas eh isso ae...pelo menos eu acho..hehehe...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

veja bem...

Mensagem por marcos.gurupi »

Eu trabalha da seguinte maneira:

Existe um programa PDV q faz as vendas a vista ou a prazo e tem o programa de retarguarda q tem o contas a pagar e receber por exemplo, acho q isso eh o basico d todos os sistemas, mas já percebi q quando o pessoal do financeiro estah trabalhando principalmente no contas a receber o pessoal do balcao problemas as vezes no fechamento de pedido de venda a prazo, eh gravado a venda mas n eh gerado as parcelas da venda e o sistema sai rapidamente... as vezes nem grava o item no pedido, acho q eh quando o financeiro vai por exemplo olhar o histórico de cliente index on cliente tag key001 to &arqtmp for cod_cli=xcodigo
O financeiro verifica os dados e quando ecerra esta rotina eu uso o comando SET INDEX TO REC001 q eh os indices originais. Acho q o erro estah neste processo. Obrigado.

Marcos Roberto.
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem por Jorge Adourian »

Marcos, entenda que um Indice Temporário só tem sentido se usado de forma exclusiva, pois cada usuario terá uma condição diferente e portanto se você tentar compartilhar este indice pode e vai ter problemas.

Além disto se voce abre um indice temporario se nao abrir novamente os Indices Permanentes, obviamente que eles ficarão desatulaizados em caso de haver atualização do DBF durante o uso do Indice Temporário, por isto deve usar o ADDITIVE so SET INDEX TO.

E outra coisa, usar Indice temporário só para filtrar pelo código de Cliente, é usar canhão para matar formiga. Use SET SCOPE TO para isto.
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

E como se usa o ADDITIVE?
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem por Hasse »

Olá Marcos.

Pelo que vc escreveu, ABANDONE DEFINITIVAMENTE a idéia de índices temporários. Só vais ter problemas....

Crie índices permanentes e os teus problemas estarão encerrados.

Hasse.
Jorge Adourian
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 05 Jul 2004 23:38
Localização: São Paulo-SP-Brasil
Contato:

Mensagem por Jorge Adourian »

É só colocar o ADDITIVE na linha do SET INDEX TO.

SET INDEX TO ARQ1,ARQ2,ARQ3 ADDITIVE
Até...
Jorge Adourian
Clipper5.2e, Blinker7.0, SIX2(NSX), ADS7.1, FW2.3c, PrintFile2.1.5 e PDFCreator0.8.0(2)
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Ok. Mas como faria para criar filtros, o comando set filter eh impossivel usar em sistemas d rede. Qual seria a sugestão no indice CDX?
Responder