Desarrollo > Utilidades > Comprobaciones > Base de datos > Buscar índice 

Puede ocurrir que, por motivos de explotación, ciertos índices de la base de datos de la aplicación no se hayan creado correctamente en un dossier dado. Uno de estos casos podría darse, por ejemplo, si falta espacio en un momento dado en el espacio de tabla temporal en Oracle, ya sea durante la revalidación de un dossier o durante el cambio de estructura de una tabla. Estos errores de explotación, que corresponden al ámbito de la base de datos, evidentemente provocan trazas de errores que normalmente deben avisar a la persona que explota la base de datos.

Lo cierto es que tales errores no impiden que la aplicación funcione, pero pueden provocar graves problemas en el tiempo de respuesta. Además, esta utilidad ha sido diseñada para permitir verificar, en caso de degradación del tiempo de respuesta, si los índices que deberían estar presentes realmente lo están.

Los tests que se realizan son los siguientes:

  • en primer lugar, se verifica que los índices descritos en el diccionario de datos y no desactivados mediante un código de actividad están presentes en la base (este es el test principal, y ante todo es el resultado de este test lo que importa).
  • se proporciona la lista de los índices que no existen porque la tabla está inactiva en el dossier actual. Si esa lista no está vacía, en ningún caso representa una molestia. Generalmente, esto ocurre en el dossier raíz en el que las tablas funcionales están presentes en el diccionario pero no están validadas en el dossier raíz.
  • se proporciona la lista de los índices internos Adonix. Se trata de índices en las tablas internas Adonix que no se describen en el diccionario. Por ejemplo, en Oracle, este es el caso de los índices de las tablas SYSBLBK y SYSCLBK.
  • se proporciona la lista de los índices que existen sin estar descritos en el diccionario de datos. Esta lista en general no está vacía, pero en ningún caso esto representa una molestia en términos de tiempo de repuesta. Por ejemplo, en esta lista se pueden encontrar tablas procedentes de una versión superior anterior de la aplicación que no se han borrado automáticamente por motivos de seguridad, o índices de tablas desactivadas por medio de un código de actividad (en este caso, sin embargo, la tabla se crea vacía).
  • por último, también se pueden encontrar índices cuyo nombre no sigue las normas de denominación utilizadas por ADONIX (un índice se designa siguiendo la fórmula NOMBRETABLA_NOMBREÍNDICE). Estos índices pueden ser perfectamente utilizados por otros programas que accedan directamente a la base de datos.

Esta utilidad, que crea un fichero de traza, funciona para la base Oracle y la base SQL Server. La utilidad determina automáticamente el tipo de base actual y lo indica en el fichero de traza.

Al final del fichero traza se muestra un resumen de los diferentes casos encontrados y de los números de índice correspondientes. En este resumen también aparece el número de índices vinculados a los objetos largos (Clob/Blob) en el caso de una base de datos Oracle.

Gestión de la pantalla

La ejecución se realiza respondiendo simplemente al cuadro de confirmación que se muestra. A continuación se obtiene la visualización de una traza.

A continuación se muestra un ejemplo de fichero de traza generado.

Ejemplo de traza creada por la función

 

Lista de los índices del diccionario que no existen en Oracle
********************************************************************************
Tabla       Índice       Descripción
--------------------------------------------------------------------------------
AABREV      AAB1        MOT
ABANK       ABN0        CRY+BAN
--------------------------------------------------------------------------------

                                                                                                -

Lista de los índice internos Adonix en Oracle
********************************************************************************
Tabla Oracle             Índice
--------------------------------------------------------------------------------
SYSBLBK                  SYSBLBK_IDX
SYSBLBK                  SYS_IL0000005817C00002$$
SYSCLBK                  SYSCLBK_IDX
SYSCLBK                  SYS_IL0000005821C00002$$
--------------------------------------------------------------------------------

                                                                                                -

Índices Oracle no descritos en el diccionario
********************************************************************************
Tabla Oracle             Índice
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
ZZVPO1                   INDEXTXT2_VPO1
ZZVPO1                   ZZVPO_VPO01
ZZVPO1                   SYS_IL0000009573C00047$$
--------------------------------------------------------------------------------

                                                                                                -

Índices Oracle no conformes a las normas Adonix
********************************************************************************
Tabla Oracle             Índice
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
--------------------------------------------------------------------------------

                                                                                                -

Número de índices descritos en el diccionario                    396
Número de índices que no existen porque el código de actividad no está activo      -    0      ->  396
Número de índices que no existen porque las tablas están inactivas             -    0      ->  396
Número de índices del diccionario que no existen                -    2      ->  394
Número de índices internos Adonix                              +    4      ->  398
Número de índices Oracle no descritos en el diccionario      +    4      ->  402
Número de índices para los objetos largos (Clob/Blob)            +    3      ->  405
                                                              -----
Número de índices encontrados en la base Oracle                  =  405

                                                                                                -

Fin normal de la traza 27/03/06 15:15:15

Observación: los índices no descritos en el diccionario no son una anomalía, pero se indican a modo informativo. Además, Oracle crea índices internos en toda tabla que contiene textos largos (clobs) u objetos largos (blobs) como imágenes.

Tarea batch

Esta función puede lanzarse en Batch, pero no existe ninguna tarea estándar dedicada a su lanzamiento.

Mensajes de error

No hay ningún mensaje de error aparte de los mensajes de error genéricos.

Tablas utilizadas

SEEREFERTTO Consulta la documentación de Puesta en marcha