Diccionario de datos



Cuando se crea una base de datos, se crean varios objetos y entre ellos el diccionario de datos.

El diccionario de datos es fundamental para cualquier base de datos, ya que contiene descripciones de los objetos de la base de datos.

Cuando es creado, se almacena en el tablespace SYSTEM y es propiedad del usuario SYS, siendo mantenido por ORACLE SERVER, pudiendo ser accedido con una consulta SELECT.



Podemos describir al diccionario de datos como un juego de tablas y vistas de solo lectura, que nos proporciona información sobre la base de datos a la cual se encuentra asociada.



El diccionario de datos, se encuentra en constante actualización. Es decir que cada vez que alguien realiza alguna operación DDL(lenguaje definición de datos) en la base de datos, el diccionario de datos es actualizado.



Como se mencionó anteriormente, el diccionario de datos esta conformado por tablas y vistas y a continuación detallaremos sobre estas:



Tablas base: son las tablas subyacentes que se crean cuando se crea la base de datos. En ella se almacena la información acerca de la base de datos y Oracle Server es el único que tendría que escribir sobre estas tablas.



Vistas del diccionario de datos: Estas vistas son un resumen de las tablas base, y nos permiten un acceso más sencillo a la información guardada en estas tablas.

La constitución de la información almacenadas en las tablas y las vistas contiene información acerca de:



• Estructuras lógicas y físicas de la base de datos

• Definiciones y asignaciones de espacio de los objetos

• Restricciones de integridad

• Usuarios

• Roles

• Privilegios

• Auditorías



El principal uso que un DBA puede darle al diccionario de datos es utilizarlo como una referencia de sólo lectura para obtener información acerca de la base de datos. También hay que tener en cuenta que los datos de las tablas base del diccionario de datos son necesarios para que Oracle Server funcione. Por lo tanto, el único que debería escribir o cambiar la información del diccionario de datos es Oracle Server y en ningún caso sería aconsejable que el DBA realice algún cambio en estas tablas.

Con respecto a las vistas existentes del diccionario de datos, hay que tener en cuenta que algunas son accesibles para todos los usuarios Oracle, mientras que otras sólo son para los DBA.

Con respecto a estas vistas las mismas están categorizadas y existen tres juegos de vistas estáticas las cuales se diferencian por su ámbito:



– DBA: Lo que hay en todos los esquemas.

– ALL: A lo que puede acceder el usuario.

– USER: Lo que hay en el esquema del usuario.





Vistas con el Prefijo DBA = DBA_XXX

Las vistas con el prefijo DBA muestran una vista global de toda la base de datos. Su finalidad es que las consulten únicamente los DBA.

Para realizar consultas acerca de todos los objetos de la base de datos, el DBA podría emitir la siguiente sentencia:



SELECT owner, object_name, object_type

FROM dba_objects;





Vistas con el Prefijo ALL = ALL_XXX



Estas vistas devuelven información acerca de los objetos de esquema a los que tiene acceso el usuario por medio de permisos públicos o explícitos de privilegios y rol, además de los objetos de esquema que posee el usuario.

Por ejemplo, la siguiente consulta devuelve información acerca de todos los objetos a los que tiene acceso un usuario:



SELECT owner, object_name, object_type

FROM all_objects;





Vistas con el Prefijo USER = USER_XXX



Las vistas para los usuarios que no son DBA son las que tienen el prefijo USER. Estas vistas hacen referencia al propio entorno del usuario y generalmente hacen referencia a los objetos que posee el usuario actual y devuelven un subjuego de la información de las vistas ALL.



Por ejemplo, la siguiente consulta devuelve todos los objetos contenidos en el esquema del usuario:



SELECT owner, object_name, object_type

FROM users_objects;



Para tener un mayor conocimiento de las vistas existentes en nuestro diccionario de datos podemos hacer la consulta a la vista "dictionary", e incluso podemos aplicar el filtro "Where",

para filtrar las vistas que estemos buscando específicamente por veremos en el siguiente ejemplo:



SELECT * FROM dictionary;



SELECT * FROM dictionary

WHERE table_name LIKE ‘DBA_SEG%’





Tablas dinámicas de rendimiento




Las tablas dinámicas de rendimiento son tablas virtuales que se encuentran registrando en ese mismo momento las actividades que se realizan en la base de datos y su propietario es el usuario SYS, por lo cual no todos los usuarios pueden acceder a ellas.



Las vistas de las tablas dinámicas también son llamadas vistas fijas, ya que su contenido no puede ser modificado ni eliminadas.

Estas vistas comienzan con el prefijo V_$ y al igual que lo comentado sobre las vistas del diccionario de datos, podemos consultar las vistas existentes con la siguiente consulta:



SELECT * FROM V$FIXED_TABLE;







Volviendo al blog encontrara mas articulos de su interes.