Manutenção de tabelas

Na tela "Manutenção de tabelas" é possível efetuar manutenções físicas nas tabelas de dados DataFlex da sua aplicação.

ManutencaoTabelas

Incluindo tabelas na lista de manutençã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.

Observações

  • Tabelas com um único registro não podem ser adicionadas na lista.
  • Uma vez incluída na lista, uma tabela só pode ser removida se estiver com no máximo 1 registro dentro dela.
  • Tabelas que estejam cadastradas com o caminho físico no filelist não podem ser incluídas na lista.
  • Números do filelist que são considerados reservados pela Data Access não pode ser incluídos. A saber: posição 50 e posição 250 a 300.

Informações das colunas

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.

Nm. físico

É 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.

Nm. lógico

É 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.

Descrição

É o Display Name da tabela, obtido através do atributo DF_FILE_DISPLAY_NAME.

Executar

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.

Qt. registros

É 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.

Tamanho

É 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.

DF_FILE_MAX_RECORDS

Esta coluna exibe o valor do atributo de mesmo nome. Esta informação é atualizada sempre que o registro é posicionado.

N.máximo

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.

Situação

Esta coluna exibe a situação da tabela posicionada. As situações possíveis são:

  • Nunca executou: indica que o processo de manutenção nunca foi executado para a tabela.
  • Executado com sucesso: indica que a última manutenção foi executada com sucesso.
  • Erro: indica que a última manutenção gerou um erro e não foi concluída.

Ult.execução

Exibe a data da última execução de manutenção nesta tabela.

Hr.execução

Exibe a hora da última execução desta tabela.

Qtde. Antes

Exibe qual era a quantidade de registros existentes na tabela antes da execução da manutenção.

Tolerância

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.

Qtde.Depois

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".

Tm. antes (MB)

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.

Tm. depois (MB)

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.

Resultado da operação

Esta coluna exibe o resultado da última execução da operação de manutenção na tabela.

Eventos da tabela

Na parte da baixo da tela, uma grid exibe todos os eventos relacionados à tabela posicionada na grid de cima.

Dt. registro

Esta coluna exibe a data de registro do evento.

Hr.

Esta coluna exibe a .hora de registro do evento.

Descrição

Esta coluna exibe a descrição do evento.

Qt. reg.

Esta coluna exibe qual era a quantidade de registros existentes na tabela quando o evento foi registrado.

Tamanho

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.

Funcionalidades dos botões

Examinar filelist e incluir tabelas

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.

Desmarcar todas

Este botão desmarca todas as tabelas que estiverem marcadas para execução da manutenção.

Marcar todas

Este botão marca todas as tabelas da lista para execução da manutenção.

Marcar tabelas com aumento de 10% de registros desde a última execução

O label do botão é autoexplicativo.

Executar

O botão executar chama a rotina de manutenção. Descreveremos em detalhe como ela é feita no próximo tópico.

A operação de manutenção

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.

Recomendações e dicas importantes

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.