- conheça também:
acronsoft
acrondesign
DeveloperFlex - Soluções para Desenvolvedores Visual DataFlex
contato@developerflex.com.br | (55 11) 4378-1115
Na tela "Manutenção de tabelas" é possível efetuar manutenções físicas nas tabelas de dados DataFlex da sua aplicação.
Você pode incluir as tabelas do seu sistema na lista de manutenção de duas formas:
1) Pressionando o botão "Examinar filelist e incluir tabelas", todas as tabelas que estiverem no filelist e que tiverem mais de 1 registro serão incluídas na lista.
2) Cadastrando "manualmente" a tabela que deseja informando o número dela na coluna "Nº" e salvando a linha.
Abaixo detalharemos o que é exibido em cada uma das colunas da lista:
Esta coluna exibe o número da tabela no filelist.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
Existe um índice exclusivo por este campo para garantir que o mesmo número não seja cadastrado mais de uma vez na lista.
É o nome físico da tabela, sem a extensão .DAT. É obtido através do atributo DF_FILE_ROOT_NAME.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
Existe um índice exclusivo por este campo para garantir que a mesma tabela não seja cadastrada mais de uma vez na lista. Uma tabela fantasma, por exemplo, possui o mesmo nome físico da tabela principal e não poderá ser adicionada na lista se a tabela principal já tiver sido adicionada.
É o nome lógico da tabela, obtido através do atributo DF_FILE_LOGICAL_NAME.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
É o Display Name da tabela, obtido através do atributo DF_FILE_DISPLAY_NAME.
Este checkbox indica se a manutenção deverá ser realizada na próxima execução para a tabela.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
É a quantidade de registros existentes na tabela. Este valor não é on-line e só é atualizado quando o registro é salvo. Esta quantidade é obtida através do atributo DF_FILE_RECORDS_USED.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
É o tamanho físico da tabela (DAT ou VLD, o que for maior). Este valor não é on-line e só é atualizado quando o registro é salvo. Esta valor é obtido através da função MFFileSize.
É possível ordenar os registros por esta coluna em ordem crescente ou decrescente, simplesmente clicando na header dela.
Esta coluna exibe o valor do atributo de mesmo nome. Esta informação é atualizada sempre que o registro é posicionado.
Nesta coluna pode ser informado um novo valor para o atributo DF_FILE_MAX_RECORDS que deverá ser aplicado quando a operação de manutenção for executada.
Se o valor informado for menor do que o valor atual do atributo DF_FILE_MAX_RECORDS, ele será ignorado.
O valor máximo possível é 16.711.679 que é a quantidade máxima de registros suportados nas tabelas DataFlex.
Esta coluna exibe a situação da tabela posicionada. As situações possíveis são:
Exibe a data da última execução de manutenção nesta tabela.
Exibe a hora da última execução desta tabela.
Exibe qual era a quantidade de registros existentes na tabela antes da execução da manutenção.
Por padrão, a operação de manutenção irá parar se a quantidade de registros existentes na tabela for diferente da que estava informada na header da tabela. Se o usuário desejar forçar a manutenção com uma tolerância, poderá informar neste campo a quantidade de registros máxima que é aceita como divergência entre a quantidade informada na header e a quantidade realmente disponível na tabela.
Exibe qual era a quantidade de registros existentes na tabela após a execução da manutenção. Se não tiver sido informado nenhum valor na coluna "Tolerância", espera-se que o valor desta coluna seja igual ao da coluna "Qtde. Antes".
Esta coluna exibe o tamanho físico da tabela em MBytes antes da execução da operação de manutenção da tabela. Comprando com a coluna "Tm. depois", é possível saber quanto espaço em disco foi economizado com a operação.
Esta coluna exibe o tamanho físico da tabela em MBytes logo após a execução da operação de manutenção na tabela. Comparando com a coluna "Tm. antes", é possível saber quanto espaço em disco foi economizado com a operação.
Esta coluna exibe o resultado da última execução da operação de manutenção na tabela.
Na parte da baixo da tela, uma grid exibe todos os eventos relacionados à tabela posicionada na grid de cima.
Esta coluna exibe a data de registro do evento.
Esta coluna exibe a .hora de registro do evento.
Esta coluna exibe a descrição do evento.
Esta coluna exibe qual era a quantidade de registros existentes na tabela quando o evento foi registrado.
Esta coluna exibe qual era o tamanho físico da tabela em disco (DAT ou VLD, o que for maior), quando o evento foi registrado.
Um evento é gerado quando o processo e manutenção é iniciado e outro ao final. Desta forma, comparando o valor deste campo dos dois eventos, é possível saber quanto diminuiu o tamanho físico do arquivo após a manutenção.
Este botão executa uma rotina que faz duas coisa:
1) Primeiro a lista atual de tabelas é varrida e, caso exista alguma tabela com menos de 2 registros ou com número de filelist de posição reservada, ela será removida.
2) Varre o filelist corrente e inclui na lista todas as tabelas que ainda não estiverem nela.
Este botão desmarca todas as tabelas que estiverem marcadas para execução da manutenção.
Este botão marca todas as tabelas da lista para execução da manutenção.
O label do botão é autoexplicativo.
O botão executar chama a rotina de manutenção. Descreveremos em detalhe como ela é feita no próximo tópico.
Para realizar a operação de manutenção, as tabelas precisam ser abertas em modo exclusivo. Por isso, este processo só pode ser executado quando não existir nenhum usuário utilizando as tabelas da aplicação.
Quando o botão "Executar" é pressionado, cada uma das tabelas da lista que estiver marcada como "Executar" no checkbox da grid, passará pelos seguintes processos:
1) Caso ainda não exista, será criado um subdiretório, dentro do diretório Data, com o nome DataBackupYYYYMMDD, onde YYYY é o ano corrente, MM é o mês corrente e DD é o dia corrente.
2) Uma cópia da tabela será feita neste diretório. Ao realizar a cópia, os registros são copiados um a um. Nâo é uma cópia física dos arquivos que compõem a tabela.
3) Após a cópia, se a quantidade de registros copiados for diferente da informada na header da tabela e não estiver dentro da tolerância informada pelo usuário, a operação será abortada.
4) Se a cópia foi bem sucedida, o programa executa um ZeroFile na tabela original.
5) Se o usuário informou um valor na coluna "N.máximo", o atributo DF_FILE_MAX_RECORDS da tabela original é alterado.
6) Os registros da tabela de backup são copiados de volta para a tabela original.
Embora não execute uma reindexação dos índices, como a tabela foi zerada e os registros foram copiados novamente, os índices estarão atualizados. Esta manutenção, portanto, pode substituir o processo de reindexação da tabela.
Como os registros são copiados 1 a 1, os espaços de registros excluídos são eliminados e, desta forma, o tamanho físico da tabela poderá diminuir após a execução.
Recomendamos que sempre faça um backup completo da base de dados antes de executar esta manutenção.
Após certificar-se que tudo foi bem sucedido, o diretório DataBackupYYYYMMDD pode ser excluído.
A rotina de manutenção não pode ser executada duas vezes no mesmo dia para a mesma tabela. A tela não permitirá isso.
Se o desenvolvedor for "forçar" a execução alterando os registros "manualmente" no Database Explorer, deve se certificar de que também removeu o diretório DataBackupYYYYMMDD, caso contrário ocorrerá erro de registro duplicado a cada tentativa de cópia de registros.
Não encontrou o que precisava, entre em contato conosco.