lunes, 23 de agosto de 2010

Diccionario de Datos Oracle

Diccionario de Datos (data dictionary): Es un conjunto de tablas de sólo lectura con los metadatos(descripción del esquema).


  • Información: Nombres de usuarios, seguridad (accesos permitidos, privilegios, roles...), información sobre los objetos, restricciones de integridad, diversas estadísticas. En general, mantienen información sobre las llamadas ESTRUCTURAS INTERNAS de la BD.
  • Las tablas del diccionario son propiedad del usuario SYS. El usuario SYSTEM es propietario de diversas vistas sobre esas tablas, las cuales pueden ser utilizadas por el resto de los usuarios de la BD.
  • Solo ORACLE debe escribir y leer en las tablas del diccionario:
    • Oracle accede cada vez que se ejecuta una sentencia DDL.
    • Los usuarios podrán acceder a algunas vistas: En general, no se deben modificar estas vistas.
El diccionario de datos es una parte fundamental de la base de datos Oracle. Está formado por tablas,  vistas y packages a los que se puede acceder para obtener información.
El usuario SYS es el dueño del DD y tiene todos los permisos sobre cualquier objeto de la DB (también los de cualquier usuario).


Componentes de la DD:
  • Tablas base: Una serie de tablas a las que el servidor de datos accede cada vez que se procesa una instrucción DDL de SQL o en algunos comandos DML.
  • Vistas estáticas: Se crean durante la instalación del RDBMS y decodifican y resumen la información contenida en las tablas base. Durante la creación de estas vistas se generan sinónimos públicos para proveer el acceso a los usuarios del RDBMS. Estas vistas deben ser utilizadas para las labores de administración rutinarias que necesiten información específica sobre configuración y estado de la DB. Tienen el nombre de estáticas porque no mantienen información relacionada con las sesiones. Se dividen en 3 categorías:
    • Vistas con prefijo USER: Puede utilizarlas cualquier usuario de la DB y se refieren a objetos poseídos por dicho usuario.
      • Ej: Usuario dave ejecuta:  SELECT * FROM USER_TABLES;
      • Se desplegará toda la información de las tablas cuyo propietario sea dave.
    • Vistas con prefijo ALL: Evidente, las podrá usar cualquier usuario y además añaden la columna OWNER al resto de información. Con estas vistas se puede tener acceso a la información de los objetos que el usuario es dueño además de los objetos públicos y los que el usuario tiene acceso (por pertenecer a un grupo de seguridad o poseer ciertos privilegios).
    • Vistas con prefijo DBA: Dan información sobre todos los objetos de la DB. Usualmente también tienen la columna OWNER. Sólo las puede utilizar el administrador o usuarios con privilegio SELECT ANY TABLE o pertenezca a un rol que incluya el privilegio.
  • Vistas dinámicas (o performance views): Incluyen información sobre las condiciones actuales de operación del RDBMS. La mayor parte son creadas durante la instalación y algunas se crean específicamente para monitorear cierta actividad. Todas se identifican por el prefijo V$.
    • EJ: La vista dinámica V$_SESSION incluye información sobre las sesiones actuales y la vista V$SYSSTAT provee información estadística sobre el RDBMS. Para obtener información general sobre las vistas del diccionario de datos se podría utilizar esta consulta: SELECT * FROM DICTIONARY WHERE table_name LIKE ´%indicador%´;


 Por ejemplo, para ver todas las vistas relacionadas con tablas podríamos ejecutar:


SELECT * FROM DICTIONARY WHERE table_name LIKE ´%TABLE%´;


Vistas del Diccionario de Datos




SELECT OWNER, TABLE-NAME
FROM DBA_TABLES
WHERE OWNER = ‘usuario';


Para ver las tablas de los usuarios


DESC USER_TABLES


Para ver lo que se guarda en las tablas


SELECT TABLE_NAME
FROM USER_TABLES;


Para saber las tablas que tiene el usuario


USER_CONS_COLUMNS
DBA_CONS_COLUMNS
ALL_CONS_COLUMNS


Para ver las restricciones que afectan a las columnas


USER_TABLES


Muestra las tablas propias del usuario activo


ALL_TABLES


Muestra todas las tablas propias del usuario activo


DBA_TABLES


Muestra todas las tablas de la BD's


USER_CONSTRAINTS


Para ver las restricciones del usuario activo


DBA_CONSTRAINTS


Para ver las restricciones de la BD's


ALL_CONSTRAINTS


Para ver todas las restricciones


SELECT *
FROM USER_TABLESPACES;


Para ver todos los tablespaces


SELECT_CATALOG_ROLE


Para ver entero el diccionario de datos


SESSIONS_PRIVS


Información de los privilegios del usuario activo


USER_SYS_PRIVS


Información de los privilegios de sistema del usuario activo


DBA_SYS_PRIVS


Información de los roles y privilegios del sistema del usuario activo


USER_TAB_PRIVS


Información sobre los privilegios de objeto relacionados con el usuario, tanto otorgados como concedidos


USER_TAB_PRIVS_MADE


Privilegios concedidos


USER_TAB_PRIVS_RECD


Privilegios recibidos


SESSION_ROLES


Roles del usuario activo


ROLE_SYS_PRIVS


Privilegios de sistema asignados a los roles


ROLE_TAB_PRIVS


Privilegios sobre objetos asignados a los roles


DBA_ROLES


Todos los roles del sistema


DBA_PROFILES


Todos los perfiles de la BD's


DBA_DATA_FILES


Archivos que componen mi espacio de tabla


USER_FREE_SPACE


Tamaño libre de mi espacio de tabla


DBA_FREE_SPACE


Tamaño libre en todos los tablespaces


DBA_TABLESPACES


Tablespaces del sistema


DBA_TS_QUOTAS


Uso de los tablespaces por los usuarios

No hay comentarios:

Publicar un comentario