viernes, 11 de noviembre de 2016

DICCIONARIO DE DATOS

El Diccionario de Datos 
Las tablas de usuario son tablas creadas por el usuario y contienen datos de negocio; un ejemplo sería EMPLOYEES. Hay otra recopilación de tablas y vistas en la base de datos Oracle conocida como diccionario de datos. Esta recopilación la crea y la mantiene Oracle Server y contiene información sobre la base de datos. El diccionario de datos se estructura en tablas y vistas, exactamente igual que otros datos de diccionario. El diccionario de datos no sólo es parte central de cada base de datos Oracle, sino que se trata además de una herramienta importante para todos los usuarios, desde los usuarios finales hasta los diseñadores de aplicaciones y los administradores de base de datos. 
Las sentencias SQL se utilizan para acceder al diccionario de datos. Como el diccionario de datos es de sólo lectura, sólo se pueden emitir consultas en las tablas y vistas. 
Puede consultar las vistas de diccionario que se basen en las tablas de diccionario para buscar información como: 

  • Definiciones de todos los objetos de esquema de la base de datos (tablas, vistas, índices, sinónimos, secuencias, procedimientos, funciones, paquetes, disparadores, etc.) 
  • Valores por defecto de las columnas 
  • Información acerca de las restricciones de integridad 
  • Nombres de usuarios Oracle 
  • Privilegios y roles que se han otorgado a cada usuario 
  • Otra información general de la base de datos 

Estructura de los Diccionarios de Datos 

Las tablas base subyacentes almacenan información sobre la base de datos asociada. Oracle Server es el único que debe escribir y leer estas tablas. Rara vez se accede a ellas directamente.

Hay varias vistas que resumen y muestran la información almacenada en las tablas base del diccionario de datos. Estas vistas descodifican los datos de la tabla base en información útil (como nombres de usuario o de tabla), mediante uniones y cláusulas WHERE para simplificar la información. A la mayoría de los usuarios se le proporciona acceso a las vistas más que a las tablas base. 

El usuario Oracle SYS es propietario de todas las tablas base y las vistas accesibles para usuarios de los diccionarios de datos. Ningún usuario Oracle debe modificar nunca (UPDATE, DELETE o INSERT) ninguna fila ni objeto de esquema contenido en el esquema SYS, ya que tal actividad puede comprometer la integridad de datos. 


Los diccionarios de datos se componen de juegos de vistas. En muchos casos, un juego se compone de tres vistas que contienen información similar y que se diferencien entre sí por sus prefijos. Por ejemplo, hay una vista denominada USER_OBJECTS, otra ALL_OBJECTS y una tercera DBA_OBJECTS. 

Estas tres vistas contienen información similar sobre los objetos de la base de datos, excepto en que el ámbito es diferente. USER_OBJECTS contiene información sobre objetos que son de su propiedad o que ha creado. ALL_OBJECTS contiene información sobre todos los objetos a los que tiene acceso. DBA_OBJECTS contiene información de todos los objetos que son propiedad de todos los usuarios. Para las vistas que tienen los prefijos ALL o DBA, suele existir una columna adicional en la vista denominada OWNER para identificar de quién es propiedad el objeto. 

También hay un juego de vistas con el prefijo v$. Estas vistas son dinámicas y contienen información sobre el rendimiento. Las tablas dinámicas de rendimiento no son verdaderas tablas y no deben ser accesibles para la mayoría de los usuarios. Sin embargo, los DBA pueden consultar y crear vistas en las tablas y otorgar acceso a esas vistas a otros usuarios. Este curso no entra en detalle sobre estas vistas. 



Uso de las Vistas de Diccionario 

Para familiarizarse con las vistas de diccionario, puede utilizar la vista de diccionario denominada DICTIONARY. Contiene el nombre y una breve descripción de cada vista de diccionario a la que tiene acceso. 

Puede escribir consultas para buscar información de un nombre de vista en particular o buscar en la columna COMMENTS una palabra o una frase. En el ejemplo que se muestra, se describe la vista DICTIONARY. Tiene dos columnas. La sentencia SELECT recupera información sobre la vista de diccionario denominada USER_OBJECTS. La vista USER_OBJECTS contiene información sobre todos los objetos de su propiedad. 

Puede escribir consultas para buscar en la columna de comentarios una palabra o una frase. Por ejemplo, la siguiente consulta devuelve los nombres de todas las vistas a las que se le permite acceder en las que la columna COMMENT contenga la palabra columns: 

SELECT table_name 
FROM dictionary 
WHERE LOWER(comments) LIKE '% columns'; 

Nota: Los nombres del diccionario de datos van en mayúsculas. 



Vista USER_OBJECTS 


Puede consultar la vista USER_OBJECTS para ver los nombres y los tipos de todos los objetos del esquema. Hay varias columnas en esta vista: 
  • OBJECT_NAME: Nombre del objeto 
  • OBJECT_ID: Número de objeto de diccionario del objeto 
  • OBJECT_TYPE: Tipo de objeto (como TABLE, VIEW, INDEX o SEQUENCE) 
  • CREATED: Registro de hora de la creación del objeto 
  • LAST_DDL_TIME: Registro de hora de la última modificación del objeto resultante de un comando DDL 
  • STATUS: Estado del objeto (VALID, INVALID o N/A) 
  • GENERATED: ¿Ha generado el sistema el nombre del índice? (Y|N) 

Nota: Éste no es un listado completo de las columnas. Para obtener un listado completo, consulte “USER_OBJECTS” en Oracle Database Reference. 

También puede consultar la vista ALL_OBJECTS para ver un listado de todos los objetos a los que tiene acceso. 

El ejemplo muestra los nombres, los tipos, las fechas de creación y el estado de todos los objetos que son propiedad de este usuario. 

La columna OBJECT_TYPE contiene los valores de TABLE, VIEW, SEQUENCE, INDEX, PROCEDURE, FUNCTION, PACKAGE o TRIGGER. 
La columna STATUS contiene el valor VALID, INVALID o N/A. Mientras que las tablas son siempre válidas, las vistas, los procedimientos, las funciones y los paquetes y los disparadores pueden ser no válidos. 

Vista CAT 
Para ver una consulta y una salida simplificadas, puede consultar la vista CAT. Esta vista sólo contiene dos columnas: TABLE_NAME y TABLE_TYPE. Proporciona los nombres de todos los objetos INDEX, TABLE, CLUSTER, VIEW, SYNONYM, SEQUENCE o UNDEFINED. 



Vista USER_TABLES 

Puede utilizar la vista USER_TABLES para obtener los nombres de todas las tablas. La vista USER_TABLES contiene información sobre las tablas. Además de proporcionar el nombre de la tabla, contiene información detallada sobre el almacenamiento. 
Nota: Para obtener un listado completo de las columnas de la vista USER_TABLES, consulte “USER_TABLES” en Oracle Database Reference. 

También puede consultar las vistas ALL_TABLES y TABS para ver un listado de todas las tablas a las que tiene acceso: 

SELECT table_name 
FROM tabs; 



Información de Columna 

Puede consultar la vista USER_TAB_COLUMNS para buscar información detallada sobre las columnas de las tablas. Mientras que la vista USER_TABLES proporciona información de los nombres de tabla y el almacenamiento, la información de columna detallada se encuentra en la vista USER_TAB_COLUMNS.

Esta vista contiene información como: 
  • Nombres de columnas 
  • Tipos de datos de columnas 
  • Longitud de tipos de datos 
  • Precisión y escala para las columnas NUMBER 
  • Si se permiten valores nulos (¿Hay una restricción NOT NULL en la columna?) 
  • Valor por defecto 

Nota: Para obtener un listado completo y una descripción de las columnas de la vista USER_TAB_COLUMNS, consulte “USER_TAB_COLUMNS” en Oracle Database Reference. 




Para consultar todas las tablas del diccionario de datos, hacer un select de la tabla DICTIONARY, y ahi obtendran todas las tablas con sus metadatas. ORALCE ES UN MUNDO

Ejemplos;

DICTIONARY 
USER_OBJECTS 
USER_TABLES 
USER_TAB_COLUMNS 
USER_CONSTRAINTS 
USER_CONS_COLUMNS 
USER_VIEWS 
USER_SEQUENCES 
USER_TAB_SYNONYMS 



Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?