You are on page 1of 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.

You might also like