Desenvolvimento > Utilitários > Verificações > Base de dados > Pesquisa índice 

Chega que para razões de exploração, certos índices da base de dados do software não têm sido criados correctamente sobre um dossier dado. Isto pode ser o caso, por exemplo, se falta lugar a um momento dado na "tablespace" temporária sob Oracle, seja durante a revalidação de um dossier, seja no momento de alteração de estrutura de uma tabela. Estes erros de exploração, que são do domínio da base de dados, provocam bem entendido dos rastos de erros que devem normalmente alertar a pessoa que explora a base de dados.

Resta que tais erros não impeçam o software de funcionar, mas que elas podem provocar sérios problemas de tempos de resposta. Também, este utilitário foi feito afim de permitir de verificar, num quadro de degradação de tempos de resposta, se os índices que devem ser presentes o são bem.

Os testes feitos são os seguintes :

  • verifica-se então (é o teste principal, e que antes de todo o resultado deste teste que é importante), que os índices no dicionário de dados e não desativados por meio de um código de atividade são bem presentes sobre a base.
  • dá-se a lista dos índices que não existem porque a tabela está inactiva no dossier corrente. Se esta lista não está vazia, isso não tem nenhum caso inoportuno. É geralmente o caso sobre o dossier raíz onde as tabelas funcionais são apresentadas no dicionário mas não são validados sobre o dossier raíz
  • dá-se a lista dos índices interno Sage. Trata-se de índices sobre as tabelas internas Sage que não podem ser descritos no dicionário. Por exemplo, sob Oracle, é o caso para os índices das tabelas SYSBLBK e SYSCLBK.
  • dá-se a lista dos indexes que existem sem estar descritos no dicionário de dados. Esta lista não está em geral vazia, mas isso não é nenhum caso inoportuno em termos de tempos de resposta. Por exemplo, pode-se encontrar as tabelas emitidas de uma precedente versão maior do software que não foram apagados automaticamente por razões de segurança, ou dos índices de tabelas desactivadas pelo meio de um código de atividade (no caso a tabela é mesmo assim criada vazia).
  • pode-se enfim encontrar os índices cujo nome não está conforme às regras de nomeação utilizadas por SAGE (um índice está chamado NOMTABLE_NOMINDEX). Estes índices podem perfeitamente ser utilizados por outros programas acedendo directamento à base de dados.

Este utilitário, que cria um ficheiro de rasto, funciona para a base Oracle e a base SQL Server. Determina automaticamente o tipo da base corrente e indica no ficheiro rasto.

Um recapitulativo dos diferentes casos reencontrados e dos números de índice correspondendo e afixado ao fim do ficheiro rasto. Este recapitulativo faz também aparecer o número de índices aos objetos longos (Clob/Blob) no caso de uma base de dados Oracle.

Pré-requisitos

SEEREFERTTO Consulte a docuemntação de Implementação

Gestão do ecrã

O lançamento se faz simplesmente em respondendo Sim na caixa de confirmação que afixa. Obtem-se em seguida a afixagem de um rasto.

Um exemplo de ficheiro rasto gerado é dado a seguir.

Exemplo de rasto criado pela função

 

Lista dos índices do dicionário não existentes sob Oracle
********************************************************************************
Table       Index       Description
--------------------------------------------------------------------------------
AABREV      AAB1        MOT
ABANK       ABN0        CRY+BAN
--------------------------------------------------------------------------------

                                                                                                -

Lista dos índices internos sage sob Oracle
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
SYSBLBK                  SYSBLBK_IDX
SYSBLBK                  SYS_IL0000005817C00002$$
SYSCLBK                  SYSCLBK_IDX
SYSCLBK                  SYS_IL0000005821C00002$$
--------------------------------------------------------------------------------

                                                                                                -

Indice Oracle não descritos no dicionário
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
ZZVPO1                   INDEXTXT2_VPO1
ZZVPO1                   ZZVPO_VPO01
ZZVPO1                   SYS_IL0000009573C00047$$
--------------------------------------------------------------------------------

                                                                                                -

Índice Oracle não conformes às normas sage
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
--------------------------------------------------------------------------------

                                                                                                -

Número de índices descritos no dicionário                    396
Número de indices inexistentes porque o código de atividade não ativo      -    0      ->  396
Número de índices inexistentes porque as tabelas inactivas             -    0      ->  396
Número de índice do dicionário não existente                -    2      ->  394
Número de índices internos sage                              +    4      ->  398
Número de índice Oracle não descritos no dicionário      +    4      ->  402
Número de índices para os objetos longos (Clob/Blob)            +    3      ->  405
                                                              -----
Número de índice encontrado na base Oracle                  =  405

                                                                                                -

Fim normal de rasto 27/03/06 15:15:15

Observação : índices não descritos no dicionário não estão uma anomalia, mas são assinalados para informação. Assim , Oracle cria os índices internos sobre toda a tabela contendo os textos longos (clobs) ou dos objetos longos (blobs) como as imagens.

Tarefa batch

Esta função pode ser lançada em batch, mas não existe tarefa standard dedicada ao lançamento.

Mensagens de erro

Não existe outra mensagem de erro, para além das mensagens genéricas.

Tabelas consideradas

SEEREFERTTO Consulte a docuemntação de Implementação