Jump to content
Fivewin Brasil

Corrupção de Indices - 98% de solução


pauloaraujo

Recommended Posts

Vagner,

Para não misturar com o outro tópico, que o problema pode ser outro, resolvi abrir este separado.

Você disse que 98% dos casos de corrupção de índices são causados por um REPLACE num campo cujo índice esteja em foco e que a solução seria como no exemplo abaixo:

// na indexação

USE ARQUIV1

INDEX ON CODIGO TAG 01 TO IARQUIV1

INDEX ON NOME TAG 02 TO IARQUIV1

INDEX ON CIDADE TAG 03 TO IARQUIV1

SET INDEX TO IARQUIV1

// na hora do replace

DBSETORDER(2) && mudar foco para nome

REPL CODIGO WITH wVarCodigo

DBSETORDER(1) && voltar foco para codigo

REPL NOME WITH wVarNome

REPL CIDADE WITH wVarCidade

DBCOMMIT()

Desculpe-me a insistência, mas é que 98% é um número muito forte.

Já havia pesquisado em tudo que é lugar no Fórum sobre o assunto e nunca haviam escrito isto (pode ter escapado).

Sempre colocaram para se fechar arquivos e índices após gravação; mudar LNK; forma de abrir arquivos e índices; agregar LIBs, OBJs, etc.

É só voce dizer SIM com firmeza que começo a mudar meus fontes agora.

Um abraço

Paulo/CONTATO SISTEMAS

Clipper53b / FW26 / Blinker70

Ajudar é um prazer, agradecer é uma obrigação

Link to comment
Share on other sites

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Olá Paulo,

Faço um pouco diferente do vagner, mas no final da quase a mesma coisa:

// na indexação

USE ARQUIV1

INDEX ON CODIGO TAG 01 TO IARQUIV1

INDEX ON NOME TAG 02 TO IARQUIV1

INDEX ON CIDADE TAG 03 TO IARQUIV1

SET INDEX TO IARQUIV1

// na hora do replace

DBSETORDER(0) && desativar os indices

REPL CODIGO WITH wVarCodigo

REPL NOME WITH wVarNome

REPL CIDADE WITH wVarCidade

DBSETORDER(1) && ativar os indices

DBCOMMIT()

Não sei quantos % isso provoca de melhora na redução de danos a indices, mas que a ocorrência diminue isso pode ter certeza !

Vilian F. Arraes

Vilian@vfatec.com.br

citação:
id=quote>id=quote>
Link to comment
Share on other sites

Vilian, Boa Tarde. Tão longe mas sempre ligado, né??

1ªmente, em uso nas gravações mais pesadas aquela função que tem no seu livro, CLRBUFFER(), página 93, com uma melhora considerável na estabilidade.

Agora, você está vindo com mais uma novidade, além daquela do Vagner, e essa não tá no livro.

Rapaz, ainda tenho alguns focos de corrupção de índices, provavelmente por má configuração de rede. Tenho essa noção porque o mesmo sistema está instalado em vários clientes: estável na grande maioria (um deles com pelo menos 100 estações) e com alguma instabilidade em poucos (quase sempre os mesmos).

Só uma dúvida, os índices são atualizados mesmo estando desabilitados???

Toda ajuda é importante, pois não tenho como configurar rede fora do Estado de São Paulo.

Um abraço e obrigado por responder

Paulo/CONTATO SISTEMAS

Clipper53b / FW26 / Blinker70

Ajudar é um prazer, agradecer é uma obrigação

Link to comment
Share on other sites

Olá Paulo,

Sim, os indices continuam sendo atualizados normalmente quando você executa um DbSetOrder(0). A única diferença é q não temos nenhum ativo no momento da gravação no dbf.

Mas em redes tão grandes (100 estações) recomendo fortemente migrar para ADS. É simples, rápido e seguro. A corrupção de indices vai desaparecer por completo.

Abraços,

Vilian F. Arraes

vilian@vfatec.com.br

Link to comment
Share on other sites

Vilian,

Por incrível que pareça, nesse cliente com 100 estações eu não tenho problema algum. Além do que ele é o mais pão-duro de todos. Como você acha que ele ficou rico??? ADS em US$???

A sua lógica e a do Vagner é a mesma. Vou mandar bala. Muito obrigado, mais uma vez. Um grande abraço.

Yrece,

Eu também faço a mesma coisa que você, mas, com o MESMO SISTEMA em vários clientes, ocorrem erros de corrupção em alguns e na maioria não.

Percebi que às vezes dando uma pequena alterada no fonte, se pode MINIMIZAR um problema que, não tenho dúvida, é fruto de virus, placas de rede, cabos, usuários sacanas, etc.

Não tem lógica o mesmo sistema não dar problema num cliente com 100 estações (sem ADS) e dar problema num de 15.

Um abraço

Paulo/CONTATO SISTEMAS

Clipper53b / FW26 / Blinker70

Ajudar é um prazer, agradecer é uma obrigação

Link to comment
Share on other sites

  • 2 weeks later...

galera,

todos estao certos.. cada um no seu ponto.. nao gravar no campo do indice em foco, destivar todos os indices antes de gravar com o dbsetorder(0), ou ads... claro que o ads eh o melhor de todos, eh um verdadeiro client server, porem muito caro, nunca houve uma melhoria neste software para ser acessivel a nos programador, que continuamos com o xbase, mas o meu problema nem eh corrupcao de indices, e sim

de repente o seek nao encontra determinada chave, ate que refassa os indices.. depois de ler tudo sobre isto, estou achando que eh problema de rede...

nem erro de configuracao... e sim.. em alguns segundos na hora da gravacao..a rede falha... ai o indice nao eh atualizado.. pois como foi dito aqui.. um cliente roda normal e outro da problema... isto eh.. chego a conclusao de que seria muito mais falha momentania da rede ... o ads funciona muito bem neste caso tambem, pois como ele eh client/server.. o indice esta' sob controle com o servidor

pena que eh tao caro...

na verdade o que precisamos eh isto.. que o servidor mantenha o indice nele.. isto que eh dificil fazer.. sou analista de Microsiga, e eles tem o proprio Client/Server.. nao sei como fizeram isto..mas tem.. tanto que nas estacoes, podemos abrir varios secoes do Siga sem ter problema de files=255.. alias nem precisa disto no config.sys..

isto eh que precisamos.. client/server.. se alguem tiver alguma noticia de como fazer isto.. tudo estara resolvido... infelismente, precisamos manter o files=255 no maximo, enquanto usar dbf..

trabalhei muito com ads...eh muito bom.. e rapido

vitor

s.b.c

Link to comment
Share on other sites

Desculpe pessoal,´é que eu estou com um problema muito grande. Tenho um sistema em clipper 5.2 de Controle De Salão de Cabeleireiro e não consigo faze-lo imprimir em uma impressora lexmark USB, e estou corendo o risco de perder minha cliente para um sistema em Delphi, de um concorrente meu daqui de Londrina - Pr, pesso ajuda por favor, pois já estou providencianto, também o livro e um cd de demonstração do five win para transformar meus sistemas embiente Windows.

jdmoura

ou

jdemourasilva@yahoo.com.br

Link to comment
Share on other sites

Olá jef2_tim,

Sim, sou de Belém e se um de seus hobbys é o karatê, é bem provável que já tenhamos nos cruzado em alguns campeonatos. Não, não sou karateka! Sou um desses pais "corujas" q ficam torcendo por seus filhos em campeonatos.

Estou sempre acompanhando o fivewin.com.br. Apesar de não ser um dos seu menbros mais ativos.

Abraços,

Vilian F. Arraes

Link to comment
Share on other sites

Falar em corrupção de índices, não os tenho já há muito tempo (pelo menos não dá a mensagem), entretanto estou com um problema sério de corrupção de arquivos ADT.

Uso o FW + xHarbour (ambos de abril/05), converti meu sistema que usava DBF/CDX para os maledetos ADT/ADI. Quando cai a energia durante uma gravação o arquivo que estava gravando já era. Corrompe! Pra abrir só com um utilitário que o Toninho me passou (mesmo assim nem sempre funciona). A solução que me propõem é colocar nobreak no servidor, mas se eu falar isso para os clientes, a maioria vai querer me bater, porque com DBF quando isso ocorria (a queda de energia) era so entrar no sistema de novo e reorganizar os indices, já com ADS o arquivo vai pro beleléu...

[ ]'s

Maurilio

FWH 2.6 + xHarbour comercial + SQLRDD

Link to comment
Share on other sites

Caramba, Apanhar por recomendar um no-break no servidor ! essa eu nunca tinha visto. Esse cliente merece ficar de castigo no milho!

Não conheco versão alguma de banco de dados q consiga o "milagre" de garantir a integridade dos arquivos o servidor "caindo". Mesmo o DBF, não raro ficava cheio de lixo, qdo não danifica por completo.

Boa sorte,

Vilian F. Arraes

Link to comment
Share on other sites

É, Vilian, os caras não querem investir, não querem fazer backup. De maneira geral todos se comportam assim. Mais o problema maior é o seguinte:

O sistema estava em FW 16 bits até fevereiro, se caia a energia e perdia alguns registros isso não impedia do arquivo ser aberto via DBU e os registros "bichados" serem excluídos. A partir de fevereiro instalei a versão 32 bits com xHarbour e arquivos ADT, e quando ocorre queda de energia, os arquivos não abrem mais, de jeito nenhum. E por isso que digo se eu pedir pra todos compraram no-break vão dizer "ué, mas não mudou de 16 pra 32 bits pra melhorar?", ou "só porque mudou de versão vou precisar comprar mais equipamentos" ou algo assim...

[ ]'s

Maurilio

Link to comment
Share on other sites

  • 1 year later...

citação:

Olá Paulo,

Faço um pouco diferente do vagner, mas no final da quase a mesma coisa:

// na indexação

USE ARQUIV1

INDEX ON CODIGO TAG 01 TO IARQUIV1

INDEX ON NOME TAG 02 TO IARQUIV1

INDEX ON CIDADE TAG 03 TO IARQUIV1

SET INDEX TO IARQUIV1

// na hora do replace

DBSETORDER(0) && desativar os indices

REPL CODIGO WITH wVarCodigo

REPL NOME WITH wVarNome

REPL CIDADE WITH wVarCidade

DBSETORDER(1) && ativar os indices

DBCOMMIT()

Não sei quantos % isso provoca de melhora na redução de danos a indices, mas que a ocorrência diminue isso pode ter certeza !

Vilian F. Arraes

Vilian@vfatec.com.br

citação:
id=quote>id=quote>


id=quote>id=quote>

Olá Pessoal, minha dúvida é o seguinte, eu travo o registro antes ou depois de desativar os índices na alteração do mesmo.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP

Link to comment
Share on other sites

Olá Pessoal, minha dúvida é o seguinte, eu travo o registro antes ou depois de desativar os índices na alteração do mesmo.

Abraços.

Beto

QUANDO CHEGAR NO REPLACE, TRAVE O REGISTRO.

GRAVOU...

DESTRAVE O REGISTRO.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

Olá Pessoal, minha dúvida é o seguinte, eu travo o registro antes ou depois de desativar os índices na alteração do mesmo.

Abraços.

Beto

QUANDO CHEGAR NO REPLACE, TRAVE O REGISTRO.

GRAVOU...

DESTRAVE O REGISTRO.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Como Vai João, tudo blz.

Então fica assim:

Alias->(dbsetorder(0))

Alias->(Reclock(10))

Repla...

Repla...

Alias->(dbUnlock())

Alias->(dbCommit())

Alias->(dbSetOrder(1))

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP

Link to comment
Share on other sites

//->Alias->(dbsetorder(0)) //-> Isto, é bobagem...

Alias->(Reclock(10)) //???

Repla...

Repla...

Alias->(dbCommit()) //-> Force a Rede e o Windows Antes

Alias->(dbUnlock()) //-> Correto.

//->Alias->(dbSetOrder(1)) //-> Isto é bobagem.

Lógica perfeita, dificilmente gerará CORRUPÇÃO DE INDICE.

Eu não tenho este problema.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Ah...

Atente sempre, para que o PONTEIRO DO REGISTRO, Esteja Sempre EM CIMA do Registro Escolhido Para Alterar.

Refresque a LISTBOX, que perceberás a Alteração, em Tempo Real. Quem Sabe, Faz ao Vivo!!! Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

//->Alias->(dbsetorder(0)) //-> Isto, é bobagem...

Alias->(Reclock(10)) //???

Repla...

Repla...

Alias->(dbCommit()) //-> Force a Rede e o Windows Antes

Alias->(dbUnlock()) //-> Correto.

//->Alias->(dbSetOrder(1)) //-> Isto é bobagem.

Lógica perfeita, dificilmente gerará CORRUPÇÃO DE INDICE.

Eu não tenho este problema.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Valew João, Obrigado.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP

Link to comment
Share on other sites

não querendo discordar, mas já o fazendo, minhas corrupções de indicese acabaram a partir do momento que fiz desta forma..

Alias->(dbsetorder(0))

while Reclock(10) ; END

Repla...

Repla...

Alias->(dbUnlock())

Alias->(dbCommit())

Alias->(dbSetOrder(1))

tb passei a usar a database

Um Grande Abraço

Alessandro F. Silvaid=blue>

E-mail :aferracini@terra.com.br

FW2.0d + CL53b + Blinker 7.0 + @Say @Get + CDX

MSN: ferracini_silva@hotmail.com

Ribeirão Preto/SP

Link to comment
Share on other sites

citação:

Olá Galera,

No dia em que vcs quiserem 100% de solução desta merda, usem o SQL. Garanto que ninguem volta atrás depois.

Um abraço,

Alexandre Pereira

fwh 2.4, xharbour, .99.5, HbMake

msn: alexpdasilva6@hotmail.com

Belo Horizonte / MG (ultimamente sou visita)


id=quote>id=quote>

Calma Alex, com certeza é o que faremos. ehehehehe, além da ferrari vermelhinha é claro.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP

Link to comment
Share on other sites

citação:

citação:

Olá Galera,

No dia em que vcs quiserem 100% de solução desta merda, usem o SQL. Garanto que ninguem volta atrás depois.

Um abraço,

Alexandre Pereira

fwh 2.4, xharbour, .99.5, HbMake

msn: alexpdasilva6@hotmail.com

Belo Horizonte / MG (ultimamente sou visita)


id=quote>id=quote>

Calma Alex, com certeza é o que faremos. ehehehehe, além da ferrari vermelhinha é claro.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP


id=quote>id=quote>

Tá Louco... O ke foi isto??? O Alex Endoidou de vez... hehehehe.

Beto, como é esta tal de CORRUPÇÃO DE INDECES?? No XHARBOUR, não tenho isto com arquivo.cdx de forma nenhuma!!

Mas, o SQL, do Ale, deve ser o bicho mesmo! Quanta enfase!

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

citação:

citação:

Olá Galera,

No dia em que vcs quiserem 100% de solução desta merda, usem o SQL. Garanto que ninguem volta atrás depois.

Um abraço,

Alexandre Pereira

fwh 2.4, xharbour, .99.5, HbMake

msn: alexpdasilva6@hotmail.com

Belo Horizonte / MG (ultimamente sou visita)


id=quote>id=quote>

Calma Alex, com certeza é o que faremos. ehehehehe, além da ferrari vermelhinha é claro.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP


id=quote>id=quote>

Tá Louco... O ke foi isto??? O Alex Endoidou de vez... hehehehe.

Beto, como é esta tal de CORRUPÇÃO DE INDECES?? No XHARBOUR, não tenho isto com arquivo.cdx de forma nenhuma!!

Mas, o SQL, do Ale, deve ser o bicho mesmo! Quanta enfase!

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Pois é João, estamos na briga, pois estou analizando rede, máquina e outras coisas, a corrupção só acontece em um arquivo.

Abraços.

Beto

Msn: betovsp@hotmail.com

Skype: betovsp

Alternativo: betovsp@terra.com.br

CL53B + FW2.0d + @ SAY/GET + BLINKER 7

Ribeirão Preto/SP

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...