Fórum Necessidade de reindexar tabelas Paradox a cada 10 min #207071
16/01/2004
0
Sremulador
Curtir tópico
+ 0Posts
16/01/2004
Balceiro
Gostei + 0
16/01/2004
Aroldo Zanela
Não é para tanto. Solicite uma certificação da rede. A propósito, quantos usuários/estações, velocidade, hub/switch? O BDE está configurado corretamente?
Gostei + 0
16/01/2004
Vinicius2k
acho que boa parte de seus problemas de resolverão com uma configuração correta da BDE, mas não sou muito entendido no assunto...
o colega ´bacalhau´ é o fera na BDE... e pode lhe ensinar coisar q vc nem sabia que existiam... manda uma MP pra ele ou aguarde ele responder neste tópico...
Gostei + 0
17/01/2004
Sremulador
Gostei + 0
17/01/2004
Bacalhau
Colega sremulador, de facto os erros de índices corrompidos (index out of date, corrupt index file/header, etc) são uma consequência da configuração do BDE. Há uns meses mandei um pequeno artigo para o clube, para o publicarem, mas até agora não tive resposta. Assim, vou postar o artigo aqui. Se ainda assim houver erros, manda um mail para virtual.viegas@netc.pt para eu ajudar. O artigo vai a seguir.
abraço
Viegas
Gostei + 0
17/01/2004
Bacalhau
Evitar indices corrompidos
Estimados colegas, antes de mais obrigado pelos vossos mails e pela vossa contribuição no fórum. Descobri-o há uma semana e sinto-me muito mais rico com as vossas sugestões e, sobretudo, pelos pontos de vista com que ´atacam´ os problemas.
Sobre a questão dos índices corrompidos há que dizer uma coisa: por causa deles foi parar a um psicólogo, já que tinha 40 empresas dependentes do meu trabalho (sou free lancer) e recebia 40 telefonemas por dia reportando 40 crashs nos dados de aplicações comerciais. A solução que encontrei é simples mas seria bom perceber algumas coisas antes.
1. O Borland Database Engine
----------------------------------
As tabelas Paradox são suportadas por um motor de bases de dados fornecido pela Borland, denominado Borland Database Engine (daqui para a frente BDE). É nesta aplicação que parametrizamos tudo sobre as drivers, bases de dados, lingua utilizada, parâmetros de datas, etc..
No caso das tabelas Paradox, somente alguns parametros é que são cruciais. Se as suas aplicações foram desenvolvidas em Delphi 2 ou anterior vai encontrar um BDE com um visual completamente diferente; no entanto os tais parâmetros cruciais mantêm-se lá.
Após abrir o BDE a que parâmetros deveremos prestar atenção? Cá vão:
Configuration -> Drivers -> Native -> Paradox - parâmetro NET DIR
Configuration -> System -> INIT -> parâmetro LOCAL SHARE
São estes dois parâmetros os responsáveis (ou não) pelo corrompimento de indexs. Para os enganarmos (sim, temos de os enganar) o melhor é avançar com um exemplo
2. Exemplo - tabelas Paradox num servidor acedidas por 5 clientes em simultâneo
----------------------------------------------------------------------------------------------
Vamos considerar um servidor chamado ´MEUSERVER´, com tabelas Paradox que estão em, por exemplo, C:\PARADOX\TABELAS (do ponto de vista do servidor, claro!!!).
Vamos agora considerar que a pasta ´C:\PARADOX´ foi partilhada, com acesso total por parte dos 5 utilizadores (usuários no Brasil :))
Se olharmos do ponto de vista de um computador cliente, as tabelas estarão em ´\\MEUSERVER\PARADOX\TABELAS´. Até aqui nada de novo.
Do ponto de vista do BDE, a coisa já requer alguma destreza. O melhor é visualizar a pasta ´PARADOX´ em ´MEUSERVER´ e atribuir-lhe uma unidade lógica através do comando ´Ligar Unidade de Rede´: digamos que todos os clientes atribuíram ao caminho ´\\MEUSERVER\PARADOX´ a unidade ´F:´.
Agora as tabelas não estão em ´\\MEUSERVER\PARADOX\TABELAS´, mas sim em ´F:\TABELAS´. Chegou a hora de parametrizar o BDE.
3. Como parametrizar o BDE nos clientes
-----------------------------------------------
Na opção NET DIR coloque o valor ´F:\´.
Na opção LOCAL SHARE escolha o valor TRUE
Os clientes podem agora aceder às tabelas, e os índices corrompidos desapareceram. É óbvio que nem todos os clientes são obrigados a escolhar a drive lógica ´F:´, para ligar a unidade de rede.
Só que, uma vez escolhida a letra, esta deverá ser a mesma no BDE. Os seus clientes já estão configurados. Com isto definimos o local onde o BDE irá criar as grandes caches, onde todos poderão ler, escrever e partilhar, tudo isto controlado por essa grande ferramenta da Borland.
O parametro LOCAL SHARE é que é o responsável por este desempenho fabuloso! O servidor vai precisar de um pequeno truque.
4. Como parametrizar o BDE no servidor
----------------------------------------------
No meu trabalho diário, verifiquei que os problemas ocorriam quando essas tabelas eram acedidas através do computador servidor. Na realidade o problema está aí. Quando os clientes (e só os clientes) trabalhavam tudo corria bem. Mas bastava o acesso a um registo de uma tabela e estava tudo corrompido. Se eu tivesse a aceder a um registo em simultâneo com um cliente era corrupção na certa.
Mas porque não colocar os parâmetros LOCAL SHARE=TRUE e NET DIR=´C:\PARADOX\´? Repare, estimado colega, é isto que a lógica ´manda´. Infelizmente o BDE é um pouco caprichoso e temos de usar o velhinho DOS para aceder às tabelas de qualquer lado da nossa rede.
As soluções são:
No Windows 95 e 98, edite o ficheiro ´C:\AUTOEXEC.BAT´ e acrescente a linha: ´SUBST F: C:\PARADOX´. Este comando atribui (no servidor) uma unidade lógica à pasta que foi partilhada para todos os clientes. Mais uma vez, não está obrigado a usar a letra ´F:´; no entanto, a que escolher deverá ser a mesma a utilizar no NET DIR do BDE do servidor. O parametro LOCAL SHARE também é true.
Nos Windows ME, NT, 2000 e XP crie um batch file, contendo a linha anteriormente descrita e coloque no arranque da máquina ou a executar antes das suas aplicações.
O que fizemos foi dizer ao BDE para aceder a ´C:\PARADOX´, não através do caminho local mas através de uma unidade qualquer. Se for através de ´C:´ é impossível. Se for através de outra letra ele é enganado e gosta!!! eheheheheheh
5. Resumindo
---------------
- Em todos os BDEs da rede coloque o parametro LOCAL SHARE igual a TRUE.
- Coloque o paramatero NET DIR a apontar para o MESMO LOCAL do servidor (com as unidades de rede que lhe apetecer).
- O servidor é excepção: se ninguém aceder às tabelas Paradox a partir do servidor, não há problema. Caso contrário defina uma unidade de rede ´a-la-DOS´ e coloque essa letra no parametro ´NET DIR´:
Espero ter ajudado. Tenho isto implementado há 3 anos nos meus clientes e os problemas de indexs corrompidos desapareceram. E o Paradox é bem robusto...
Abraço do José ´bacalhau´ Viegas
Gostei + 0
17/01/2004
Vinicius2k
depois dessa aula de BDE não tem como não acabarem os problemas...
grande abraço ´bacalhau´ e obrigado por ter nos ajudado mais uma vez... :wink:
Gostei + 0
17/01/2004
Bacalhau
Agora já há link para o pessoal com indices corrompidos. Abraço daqueles e obrigado pelos elogios
Gostei + 0
19/01/2004
Sremulador
Gostei + 0
19/01/2004
Bacalhau
Gostei + 0
19/01/2004
Sam
Tem muita coisa interessante neste site para te ajudar.
Abçs !!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)