Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conceptos Oracle
Conceptos Oracle
Instancia de BD
En trminos sencillos, una instancia de BD es un conjunto de procesos del servidor Oracle que
tiene su propio rea global de memoria y una base de datos asociada a ellos.
Las estructuras de la BD Oracle pueden ser divididas en tres clases:
Estructuras Internas de la BD
Tablas y Columnas
Los datos son almacenados en la BD utilizando tablas. Cada tabla est compuesta por
un nmero determinado de columnas.
Las tablas propiedad del usuario SYS son llamadas tablas del diccionario de datos.
Proveen el catlogo del sistema que permite que la BD se gestione a s misma.
Las tablas se pueden relacionar entre ellas a travs de las columnas que las componen.
La BD se puede utilizar para asegurar el cumplimiento de esas relaciones a travs de la
integridad referencial, que se concreta en las restricciones de tablas.
Restricciones de Tablas
Una tabla puede tener asociadas restricciones que deben cumplir todas las filas. Entre
las restricciones que se pueden fijar algunas reciben nombres especiales.: clave
primaria, clave ajena.
La clave primaria de una tabla est compuesta por las columnas que hacen a cada fila de
la tabla una fila distinta.
La clave ajena se utiliza para especificar las relaciones entre tablas. De modo que un
conjunto de columnas declaradas como clave ajena de una tabla deben tener valores
tomados de la clave primaria de otra tabla.
Usuarios
Una cuenta de usuario no es una estructura fsica de la BD, pero est relacionada con
los objetos de la BD: los usuarios poseen los objetos de la BD. Existen dos usuarios
especiales: SYS y SYSTEM. El usuarios SYS posee las tablas del diccionario de datos;
que almacenan informacin sobre el resto de las estructuras de la BD. El usuario
SYSTEM posee las vistas que permiten acceder a las tablas del diccionario, para el uso
del resto de los usuarios de la BD.
ejecuta con los privilegios del propietario del procedimiento. La diferencia entre un
procedimiento y una funcin es que sta ltima puede devolver valores.
Paquetes, Packages
Se utilizan para agrupar procedimientos y funciones. Los elementos dentro de los
paquetes pueden ser pblicos o privados. Los pblicos pueden ser llamados por los
usuarios, los privados estn ocultos a los usuarios y son llamados por otros
procedimientos.
Disparadores, Triggers
Son procedimientos que son ejecutados cuando se procude un determinado evento en la
BD. Se pueden utilizar para mejorar y reforzar la integridad y la seguridad de la BD.
Sinnimos
Para identificar completamente un objeto dentro de una BD se necesita especificar el
nombre de la mquina, el nombre del servidor, el nombre del propietario y el nombre
del objeto. Para hacer transparente todo esto al usuario se pueden utilizar los sinnimos.
stos apuntarn a los objetos y si el objeto cambia de lugar o propietario, slo habr que
modificar el sinnimo.
Existen sinnimos pblicos y privados. Los pblicos son conocidos por todos los
usuarios de una BD. Los privados son locales a un usuario.
Privilegios y Roles
Para que un objeto pueda ser accedido por un usuario debe de tener otorgado ese
privilegio. Ejemplos de privilegios son INSERT, SELECT, UPDATE, EXECUTE, etc.
Los roles son grupos de privilegios que pueden ser utilizados para facilitar la gestin de
los privilegios. Los privilegios se pueden otorgar a un rol, y los roles pueden ser
otorgados a mltiples usuarios.
Segmentos, Extensiones y Bloques
Los segmentos son los equivalentes fsicos de los objetos que almacenan datos. El uso
efectivo de los segmentos requiere que el DBA conozca los objetos que utiliza una
aplicacin, cmo los datos son introducidos en esos objetos y el modo en que sern
recuperados.
Como los segmentos son entidades fsicas, deben estar asignados a espacios de tablas en
la BD y estarn localizados en uno de los ficheros de datos del espacio de tablas. Un
segmento est constituido por secciones llamadas extensiones, que son conjuntos
contiguos de bloques Oracle. Una vez que una extensin existente en un segmento no
puede almacenar ms datos, el segmento obtendr del espacio de tabla otra extensin.
Este proceso de extensin continuar hasta que no quede ms espacio disponible en los
ficheros del espacio de tablas, o hasta que se alcance un nmero mximo de extensiones
por segmento.
Se especifica ms en detalle cada uno de estos en el transcurso del documento.
Segmento de Rollback
Para mantener la consistencia en lectura y permitir deshacer las transacciones, Oracle
debe tener un mecanismo para reconstruir la imgen previa a una transaccin
incompleta. Oracle utiliza los segmentos de rollback para esto.
Los segmentos de rollback pueden crecer tanto como sea necesario para soportar las
transacciones.
Backup de datos.
Cuando un objeto se crea dentro de un cierto tablespace, este objeto adquiere todas las
propiedades antes descritas del tablespace utilizado.
En este esquema podemos ver que, por ejemplo, la tabla ARTICULO se almacena dentro del
tablespace A, y que por lo tanto tendr todas las propiedades del tablespace A que pueden ser:
Se pueden ver los espacios de tablas definidos en nuestra BD con el comando SQL siguiente:
SQL> select * from user_tablespaces;
Como Crear un tablespace
Para Crear un tablespace
En el esquema podemos ver como el Tablespace A est compuesto (fsicamente) por tres
datafiles (DATOS_1.ORA, DATOS_2.ORA y DATOS_3.ORA). Estos tres datafiles son los
ficheros fsicos que soportan los objetos contenidos dentro del tablespace A. Aunque siempre se
dice que los objetos estn dentro del tablespace, en realidad las tablas estn dentro del datafile,
pero tienen la propiedades asociadas al tablespace.
Cada uno de los datafiles utilizados est ocupando su tamao en disco (50 Mb los dos primeros
y 25 Mb el ltimo) aunque en realidad slo contengan dos objetos y estos objetos no llenen el
espacio que est asignado para los datafiles.
Los datafiles tienen una propiedad llamada AUTOEXTEND, que se si est activa, se encarga de
que el datafile crezca automticamente (segn un tamao indicado) cada vez que se necesite
espacio y no exista. Al igual que los tablespaces, los datafiles tambin puede estar en lnea o
fuera de ella.
Podemos ver cmo el espacio que realmente se ocupa dentro del datafile es el segment y que
cada segmento pertenece a un objeto.
Existen 5 tipos de segmentos:
Temporales: son creados por Oracle para un uso temporal cuando debe realizar una
ordenacin que no le cabe en memoria, y en las operaciones: create index, order by,
group by, distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza.
De bootstrap: Se crea en SYSTEM y contiene definiciones del diccionario para sus
tablas, que se cargan al abrir la BD. No requiere ninguna accin por parte del DBA. No
cambia de tamao.
En el esquema vemos como el objeto (tabla) FACTURA tiene un segmento en el datafile A-1, y
este segmento est compuesto de 3 extensiones. Una de estas extensiones tiene un color distinto.
Esto es porque existen dos tipos de extensiones:
INITIAL (extensiones iniciales): estas son las extensiones que se reservan durante la
creacin del objeto. Una vez que un objeto est creado, no se puede modificar su
extensin inicial.
NEXT (siguientes o subsiguientes extensiones): toda extensin reservada despus de la
creacin del objeto. Si el INITIAL EXTENT de una tabla est llena y se est
intentando insertar ms filas, se intentar crear un NEXT EXTENT (siempre y
cuando el datafile tenga espacio libre y tengamos cuota de ocupacin suficiente).
Sabiendo que las extensiones se crean en momentos distintos de tiempo, es lgico pensar que
unas extensiones pueden estar fragmentadas de otras. Un objeto de base de datos no reside todo
junto dentro del bloque, sino que residir en tantos bloque como extensiones tenga. Por eso es
crtico definir un buen tamao de extensin inicial, ya que, si es lo suficientemente grande, el
objeto nunca estar fragmentado.
Si el objeto tiene muchas extensiones y stas estn muy separadas en disco, las consultas
pueden retardarse considerablemente, ya que las cabezas lectoras tienes que dar saltos
constantemente.
El tamao de las extensiones (tanto las INITIAL como las NEXT), se definen durante la
creacin del objeto y no puede ser modificado despus de la creacin. Oracle recomienda que el
tamao del INITIAL EXTENT sea igual al tamao del NEXT EXTENT.
La mejor solucin es calcular el tamao que tendr el objeto (tabla o ndice), multiplicando el
tamao de cada fila por una estimacin del nmero de filas. Cuando hemos hecho este clculo,
debemos utilizar este tamao como extensin INITIAL y NEXT, y tendremos prcticamente la
certeza de que no se va a producir fragmentacin en ese objeto. En caso de detectar ms de 10
extensiones en un objeto (consultando el catlogo de Oracle, como veremos), debemos recrear
el objeto desde cero (aplicando el clculo anterior) e importar de nuevo los datos.
Ciertas operaciones, necesitan de espacio en disco para poder realizarse. El espacio reservado se
denomina segmentos temporales. Se pueden crear segmentos temporales cuando:
-
Se crea un ndice
Se utiliza ORDER BY, DISTINTC o GROUP BY en un SELECT.
Siguiendo con la cadena, cada segmento (o cada extensin) se almacena en uno o varios bloques
de datos, dependiendo del tamao definido para el extensin, y del tamao definido para el data
block.
(*) Espacio ocupado en el data block por la primera NEXT EXTENSION. (#) Espacio ocupado
en unidades de asignacin del sistema operativo por los data blocks anteriores.
El esquema muestra toda la cadena de almacenamiento de Oracle.
Desde el nivel ms fsico al ms lgico: Unidades de asignacin del sistema operativo (El ms
fsico. No depende de Oracle) Data blocks de Oracle Extents Segments DataFiles
Tablespaces (El ms lgico)
El tamao de las unidades de asignacin del sistema operativo se define durante el particionado
del disco duro (FDISK, FIPS), y el espacio de los data blocks de Oracle se define durante la
instalacin y no puede ser cambiado.
Como es lgico, el tamao de un data block tiene que ser mltiplo del tamao de una unidad de
asignacin, es decir, si cada unidad de asignacin ocupa 4 K, los data blocks pueden ser de 4K,
8K, 12K para que en el sistema operativo ocupen 1, 2, 3 unidades de asignacin.
Esquema extrado del Oracle8 Concepts