Está en la página 1de 4

DICCIONARIO DE DATOS

El diccionario de datos de Oracle contiene la meta-informacin de la base de datos. Las tablas del estilo OBJ$, UET$ o SOURCE$ son creadas por el script sql.bsq durante la ejecucin de la instruccin CREATE DATABASE. Muy raramente accederemos a dichas tablas. El script catalog.sql, que generalmente se encuentra en el directorio $ORACLE_HOME/rdbms/admin, se ejecuta despus del CREATE DATABASE. Este script crea las vistas del diccionario de datos que generalmente usamos. En general, hay tres tipos de vistas: - Prefijadas con USER. Contienen la informacin sobre los objetos propiedad del schema o los privilegios otorgados a, o desde, el propio esquema. - Prefijadas con ALL. Contienen los objetos sobre los cuales tenemos privilegios, sean del propio esquema o no - Prefijadas con DBA. Incluye todos los objetos de la base de datos

Existe una familia de vistas (como DBA_TABLES, ALL_TABLES y USER_TABLES) para la mayora de vistas del diccionario. Existen ms de 100 familias. You can stick them on the mirror for review while you are brushing your teeth, stick them to the back of your favourites cereal box

Familias de vistas
COL_PRIVS. Privilegios sobre la columna, como el permiso, quien lo ha otorgado y a quien. EXTENTS. Fichero de datos, nombre del segmento, tamao, de la extensin INDEXES. Informacin del ndice. Tipo, unicidad y tabla a la cual se referencia IND_COLUMNS. Informacin de la columna del ndice, como su orden dentro del ndice OBJECTS. Informacin del objeto, como el estado (status) o el momento de ltima DDL ROLE_PRIVS. Privilegios de un rol, como si es otorgable o existe la opcin de administracin. SEGMENTS. Informacin de los segmentos. Tablespace, almacenamiento, SEQUENCES. Informacin de la sequence, como cach, cycle y ltimo nmero SOURCE. Cdigo fuente almacenado (excepto triggers) SYNONYMS. Informacin del sinnimo, como el objeto referenciado y el db_link SYS_PRIVS. Privilegios del sistema, como quien ha dado el permiso, privilegio y opciones de administracin TAB_COLUMNS. Informacin sobre las columnas de las tablas y de las vistas, incluido el tipo de datos TAB_PRIVS. Privilegios sobre tablas TABLES. Informacin de las tablas, como el tablespace, parmetros de almacenamiento y nmero de filas TRIGGERS. Informacin sobre los triggers, como el tipo, evento y cuerpo del trigger USERS. Informacin del usuario, como su tablespace por defecto VIEWS. Informacin de las vistas, incluyendo la definicin de la vista

Vistas importantes que no pertenecen a ninguna familia


USER_COL_PRIVS_MADE. Privilegios de columna que hemos otorgado a otros usuarios USER_COL_PRIVS_RECD. Privilegios de columna que hemos recibido de otros usuarios USER_TAB_PRIVS_MADE. Privilegios de tabla que hemos otorgado a otros usuarios

USER_TAB_PRIVS_RECD. recibido de otros usuarios

Privilegios

de

tabla

que

hemos

El otro gran grupo de vistas del diccionario son las vistas V$, llamadas as porque empiezan por V$ o GV$ (para V$ globales). Las vistas V$ estn basadas en las tablas virtuales X$ Estas vistas V$ son propiedad del usuario SYS y por defecto estn slo disponibles para usuarios con privilegios de DBA. Estas vistas estn ms orientadas a las instancias, en contraposicin a las tablas del estilo DBA_, USER_ o ALL_, que estn orientadas a la base de datos. Las vistas V$ contienen informacin sobre memoria compartida, bloqueos, estadsticas de espera, etc.

X$ Tablas
Las tablas X$ son realmente estructuras de datos en memoria que tienen una interface basada en tablas, gracias a lo cual estn disponibles para consultas SQL. Se puede obtener una lista de todos ellos en la tabla V$FIXED_TABLE. Normalmente tienen nombres crpticos de columnas y tablas. Se pueden consultar las definiciones de dichas vistas en la vista V$FIXED_VIEW_DEFINITION. Los significados de los prefijos de las tablas: KG kernel generic KS kernel services KT kernel transactions KC kernel cache

Si intentamos dar privilegios sobre una tabla X$, obtendremos la excepcin ORA-02030: can only select from fixed tables / views. Para realizar esto, de debe: 1. Crear una vista en la tabla X$ 2. Dar permisos de acceso a la vista a cualquiera que lo requiera 3. Crear un sinnimo pblico sobre la vista con el mismo nombre que la tabla CREATE VIEW x_$ksppi AS SELECT * FROM x$ksppi; GRANT SELECT ON x_$ksppi TO PUBLIC; CREATE PUBLIC SYNONYM x$ksppi FOR sys.x_$ksppi; As, cuando alguien referencia X$KSPPI, el sinnimo pblico le dirigir a la vista SYS.X_$KSPPI, que a su vez redirigir a la tabla SYS.X$KSPPI.

Debemos llevar cuidado con las tablas X$. Oracle no soporta el acceso directo a ellas, y se reserva el derecho a cambiarlas entre versin y versin. En realidad, han sufrido slo pequeos cambios desde la versin Oracle 6.

Consultas sobre el diccionario de datos


Una de las tcnicas ms potentes que pueden utilizar los DBAs es usar el diccionario de datos para generar SQL. Por ejemplo, si queremos cambiar el tablespace temporal para todos los usuarios (excepto SYS) a TEMP, tenemos varias opciones: 1. Hacerlo a mano, uno a uno 2. Escribir la sentencia con una variable para indicar el usuario, e ir modificando el usuario cada vez 3. Crear un SQL para generar los ALTER USER necesarios Select ALTER USER ||username|| TEMPORARY TABLESPACE temp; From DBA_USERS Where username <> SYS and temporary_tablespace <> TEMP; ALTER USER SYSTEM TEMPORARY TABLESPACE temp; ALTER USER OUTLN TEMPORARY TABLESPACE temp; ALTER USER DEMO TEMPORARY TABLESPACE temp; Otro ejemplo sera el de crear un script que compilara todos los objetos invlidos del sistema.