Manual del estudiante de Ingeniería en Sistemas de UTN/Bases de datos avanzadas/El diccionario de datos

El diccionario de datos es un conjunto de tablas solo-lectura que contienen información acerca de su base de datos asociada:

  • Nombre de los usuarios, y sus privilegios y roles.
  • Nombre de los objetos del schema.
  • Información acerca de las constraints.
  • Valores por omisión para las columnas.
  • Información de auditoría.
  • Espacio asignado y utilizado por los objetos.

Durante la operación de una base de datos, Oracle lee el diccionario de datos para averiguar qué objetos existen y cuales usuarios tienen los permisos de acceso a ellos; asimismo actualiza dicha información.

Debido a los continuos accesos al diccionario de datos, gran parte de éste está cacheado en el SGA. Toda la información se almacena en memoria usando el algoritmo LRU.

La estructura del diccionario consiste en:

  • Tablas base, que sólo Oracle debe escribir y leer, ya que están normalizadas y la mayoría de sus datos están encriptados.
  • Vistas de usuario, que decodifican y resumen la información de las tablas base convenientemente.

El propietario de estas tablas y vistas es el usuario SYS.

Otros programas y el diccionario de datosEditar

Otros productos Oracle pueden crear tablas de diccionario de datos adicionales o vistas propias y referenciar vistas existentes. Los desarrolladores de aplicaciones que escriben programas que referencian al diccionario deben referirse a los sinónimos públicos en vez de las tablas, ya que los sinónimos son menos propensos a los cambios entre las versiones de software.

Agregar nuevos ítemsEditar

Se pueden agregar tablas nuevas o vistas al diccionario de datos. Si se agregan objetos nuevos, el dueño de los mismos debe ser el usuario SYSTEM o un tercero. Nunca crear objetos con el usuario SYS, excepto cuando se ejecuten scripts provistos por Oracle.

Borrar ítems de un diccionario de datosEditar

Debido a que todos los cambios al diccionario de datos son realizados por Oracle como respuesta a sentencias DDL, ningún dato en las tablas del diccionario de datos debería ser alterado o borrado por cualquier usuario. La única excepción a esta regla es la tabla SYS.AUD.

Las vistas del diccionario de datosEditar

Prefijo USEREditar

Se refieren al ambiente privado del usuario en la base de datos, incluyendo información acerca de los objetos creados por el usuario, y sus permisos; un subconjunto de información de las vistas ALL.

Tienen idénticas columnas a las otras vistas, excepto que la columna OWNER está implícita.

Puede tener sinónimos PUBLIC abreviados para conveniencia.

Ejemplo:

SELECT object_name, object_type FROM user_objects;

Prefijo ALLEditar

Se refieren a la perspectiva completa del usuario en toda la base de datos. Estas vistas retornan información acerca de los objetos en los cuales estos usuarios tienen acceso público o concesiones explícitas de privilegios y roles.

Ejemplo:

SELECT owner, object_name, object_type
FROM all_objects;

Prefijo DBAEditar

Muestran una vista global de la base de datos completa. Por lo tanto, están destinados a los administradores. Cualquier usuario que tiene garantizado el privilegio SELECT ANY TABLE también puede acceder a estas vistas.

Ejemplo:

SELECT owner, object_name, object_type
FROM sys.dba_objects

Los administradores pueden ejecutar un script denominado DBA_SYNONYMS.SQL para crear sinónimos especiales de las vistas DBA.