Introducción al Catálogo de Oracle


Oracle cuenta con una serie de tabla y vistas, de solo lectura, que conforman una estructura denominada catálogo o diccionario de datos. 

EL diccionario de datos es creado cuando la base de datos es creada (el script de creación de estas tablas y vistas, CATALOG.SQL, se encuentra por defecto en el directorio RDBMSADMIN ).


Para reflejar con exactitud el estado de la base de datos en todo momento, el diccionario de datos es automáticamente actualizado por Oracle en respuesta a acciones específicas como podría ser por ejemplo la modificación de la estructura de la base de datos.
La principal función del catálogo de Oracle es almacenar toda la información de la estructura lógica y física de la base de datos:

  • Definiciones de todos los esquemas en la BD (tablas, índices, vistas, clusters, sinónimos, secuencias, procedimientos, funciones, paquetes, triggers,etc).
  • Espacio asignado y actualmente ocupado por un esquema.
  • Usuarios de la base de datos.
  • Privilegios y roles que cada usuario tiene.
  • Información sobre quienes han accedido y actualizado esquemas.
  • Información general de la base de datos.
El catálogo sigue un estándar de nomenclatura para que su memorización sea más fácil:

  • DBA_ Objetos con información de administrador. Sólo accesibles por usuarios con permisos DBA
  • USER_ Objetos con información propia del usuario al que estamos conectado.
  • ALL_  Objetos con información de todos los objetos en base de datos.
  • V_$ ó V$ Vistas dinámicas sobre datos de rendimiento.
El usuario SYS es propietario de las tablas del diccionario de datos,en las que se almacena información sobre el resto de las estructuras dela base de datos. El usuario SYSTEM posee las vistas que permiten acceder a estas tablas del diccionario de datos, para que las utilicen los restantes usuarios. Los usuarios pueden tener acceso a los objetos que poseen o a aquellos a los que seles ha concedido acceso.

Existe una tabla de catálogo para cada tipo de objeto posible. Su nombre aparecerá en plural TABLES, VIEWS, SEQUENCES, TABLESPACES…

Algunos ejemplos del diccionario son:

  • DBA_TABLES: Información para administradores de las tablas en base de datos.
  • USER_VIEWS: Información de las vistas creadas po rel usuario desde el que accedemos.
  • ALL_SEQUENCES: Información de todas las secuencias existentes en base de datos.
  • DBA_TABLESPACES: Información de administración sobre los tablespaces.
  • USER_TAB_COLUMNS: Todas las columnas de tabla en el usuario activo.
  • DICTIONARY y DICT_COLUMNS proporcionan información sobre las tablas y vistas del diccionario de datos de Oracle.

Ciertos datos del catálogo de Oracle están continuamente actualizados, como por ejemplo las columnas de una tabla o las vistas dinámicas (V$). De hecho, en las vistas dinámicas, sus datos no se almacenan en disco, sino que son tablas sobre datos contenidos en la memoria del servidor, por lo que almacenan datos actualizados en tiempo real.

Otros datos, sin embargo, no pueden actualizarse en tiempo real porque retardarían mucho el rendimiento de la base de datos (número de registros de una tabla, tamaño de los objetos, etc.). Actualizar el catálogo de este tipo de datos es posible si es necesario mediante la sentencia especial:

ANALYZE [TABLE|INDEX] nombre [COMPUTE|ESTIMATE|DELETE] STATISTICS;

Esta sentencia se encarga de volcar la información recopilada al catálogo. 

Sus opciones son las siguientes:

  • COMPUTE hace un cálculo exacto de la estadísticas (tarda más en realizarse en ANALYZE).
  • ESTIMATE hace una estimación partiendo del anterior valor calculado y de un posible factor de variación y la cláusula.
  • DELETE borra las anteriores estadísticas.

Comentarios

Entradas populares de este blog

Backup y Recuperación en Frío (ORACLE)

Uso de la función RANKX (DAX)