You are on page 1of 12

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:

aquellas que son internas a la BD. aquellas que son internas a las reas de memoria (incluidas la memoria compartida y procesos), aquellas que son externas a la BD.

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.

Todo objeto creado en la BD se crea por un usuario, en un espacio de tablas y en un fichero de datos determinado. Toda cuenta de la BD puede estr unida a una cuenta del S.O., lo que permite a los usuarios acceder a la cuenta de la BD sin dar la clave de acceso. Cada usuario puede acceder a los objetos que posea o a aquellos sobre los que tenga derecho de acceso. Esquemas El conjunto de objetos de un usuario es conocido como esquema. ndices Un ndice es una estructura de la BD utilizada para agilizar el acceso a una fila de una tabla. Cada fila tiene un identificador de fila, ROWID, que determina el fichero, bloque y fila dentro del bloque donde est almacenada la fila. Cada entrada del ndice consite en un valor clave y una ROWID. Cada una de estas entradas se almacena en un rbol B+. Los ndices se crean automticamente cuando se define una restriccin UNIQUE o PRIMARY KEY. Clusters Las tablas que son accedidas juntas frecuentemente pueden ser almacenadas juntas. Para ello se crea un cluster. De este modo se minimiza el nmero de E/S. Las columnas que relacionan las tablas de un cluster se llaman clave del cluster. Vistas Conceptualmente, una vista puede considerarse como una mscara que se extiende sobre una o ms tablas, de modo que cada columna de la vista se corresponde con una o ms columnas de las tablas subyacentes. Cuando se consulta una vista, esta traspasa la consulta a las tablas sobre las que se asienta. Las vistas no se pueden indexar. Las vistas no generan almacenamiento de datos, y sus definiciones se almacenan en el diccionario de datos. Secuencias Las definiciones de secuencias se almacenan en el diccionario de datos. Son mecanismos para obtener listas de nmeros secuenciales. Procedimientos y Funciones Un procedimiento es un bloque de cdigo PL/SQL, que se almacena en el diccionario de datos y que es llamado por las aplicaciones. Se pueden utilizar para implementar seguridad, no dando acceso directamente a determinadas tablas sino es a travs de procedimientos que acceden a esas tablas. Cuando se ejecuta un procedimiento se

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.

Tablespace (espacio de tablas)


Una base de datos se divide en unidades lgicas denominadas TABLESPACES. Un tablespace no es un fichero fsico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias) que se van a crear en la base de datos bajo el tablespace indicado (tablas, secuencias). Un espacio de tablas puede pertenecer slo a una BD. Un objeto en base de datos debe estar almacenado obligatoriamente dentro de un tablespace. Cuando se crea una tabla se debe indicar el espacio de tablas al que se destina. Por defecto se depositan en el espacio de tablas SYSTEM Las propiedades que se asocian a un tablespace son: Localizacin de los ficheros de datos. Especificacin de mximas cuotas de consumo de disco. Control de la disponibilidad de los datos (en lnea o fuera de lnea). 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: Sus ficheros de datos estn en $ORACLE_HOME/datos/datos_tablespace_A Los objetos no pueden ocupar ms de 10Mb de espacio de base de datos.

-En cualquier momento se puede poner fuera de lnea todos los objeto de un cierto tablespace. -Se pueden hacer copiar de seguridad slo de ciertos tablespaces. Si nos fijamos, se puede apreciar que es posible tener una tabla en un tablespace, y los ndices de esa tabla en otro. Esto es debido a que los ndices no son ms que objetos independientes dentro de la base de datos, como lo son las tablas. Y al ser objetos independientes, pueden ir en tablespaces independientes. En l Tablespace SYSTEM se almacenan todos los datos de sistema, el catlogo y todo el cdigo fuente y compilado de procedimientos PL/SQL. Tambin es posible utilizar el mismo tablespace para guardar datos de usuario. En el esquema tambin vemos que hay un tablespace Temporal (en gris oscuro). Este representa las propiedades que tendrn los objetos que la base de datos cree temporalmente para sus clculos internos (normalmente para ordenaciones y agrupaciones). Su creacin difiere en una de sus clusulas de creacin. El tablespace RO (en gris claro) difiere de los dems en que es de solo lectura (Read Only), y que por lo tanto todos los objetos en l contenidos pueden recibir rdenes de consulta de datos, pero no de modificacin de datos. Estos puede residir en soportes de slo lectura, como pueden ser CDROMs, DVDs, etc. Cuando se crea un tablespace, ste se crea de lectura/escritura. Despus se puede modificar para que sea de solo lectura. Un tablespace puede estar en lnea o fuera de ella (Online o OffLine), esto es que todos los objetos contenidos en l estn a disposicin de los usuarios o estn inhabilitados para restringir su uso. Cualquier objeto almacenado dentro de un tablespace no podr ser accedido si este est fuera de lnea.

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

CREATE TABLESPACE nombreTableSpace DATAFILE 'nombreDataFile.dbf' size 100M;


Para Modificar un tableSpace
Alter tablespace prueba add datafile'/users/oradata/orcl/prueba02.dbf' size 50M;

Concepto de Datafile (fichero de datos)


Un datafile es la representacin fsica de un tablespace. Son los "ficheros de datos" donde se almacena la informacin fsicamente. Un datafile puede tener cualquier nombre y extensin (siempre dentro de las limitaciones del sistema operativo), y puede estar localizado en cualquier directorio del disco duro, aunque su localizacin tpica suele ser $ORACLE_HOME/Database. Un datafile tiene un tamao predefinido en su creacin (por ejemplo 100Mb) y este puede ser alterado en cualquier momento. Cuando creemos un datafile, este ocupar tanto espacio en disco como hayamos indicado en su creacin, aunque internamente est vaco. Oracle hace esto para reservar espacio continuo en disco y evitar as la fragmentacin. Conforme se vayan creando objetos en ese tablespace, se ir ocupando el espacio que cre inicialmente. Un datafile est asociado a un solo tablespace y, a su vez, un tablespace est asociado a uno o varios datafiles. Es decir, la relacin lgica entre tablespaces y datafiles es de 1-N, maestrodetalle.

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.

Concepto de Segment (segmento, trozo, seccin)


Un segment es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. As una tabla (o cualquier otro objeto) est dentro de su segmento, y nunca podr salir de l, ya que si la tabla crece, el segmento tambin crece con ella. Fsicamente, todo objeto en base de datos no es ms que un segmento (segmento, trozo, seccin) dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace: el segmento es la representacin fsica del objeto en base de datos (el objeto no es ms que una definicin lgica).

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:

De datos: almacenan las tablas. De ndices: permiten un acceso rpido a los datos dependiendo de la cantidad de los mismos (rboles B). Las consultas que slo referencian a columnas indexadas se resuelven en el ndice. Establecen un control de unicidad (los ndices son automticos cuando se definen claves primarias). Cada ndice ocupa un segmento independiente del segmento de datos y deberan estar en un espacio de tablas distinto al de los datos, para mejorar el rendimiento. De rollback: son objetos internos de la BD que permiten efectuar la restauracin de las transacciones no validadas asegurando la consistencia en lectura. La estructura de los registros de rollback es : o Identificador de la transaccin. o Direccin del bloque donde est la tabla. o Nmero de fila. o Nmero de columna. o Valor del dato antiguo (antes de ser modificado). Son tan importantes que una BD no puede arrancar si no puede acceder al menos a un segmento de rollback. Si la BD tiene mltiples espacios de tablas, deben existir al menos dos segmentos de rollback y cada segmento de rollback debe tener al menos dos extensiones, reutilizables de manera cclica. Esto segmentos son un objeto compartido de la BD, aunque se puede asinar un segmento de rollback particular a una transaccin dada.

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.

La tabla que guarda la informacin de los segmentos de usuario es user_segments, y se puede visualizar la informacin sobre los segmentos con la sentencia SQL siguiente: SQL> select * from user_segments;

Concepto de Extent (extensin)


Para cualquier objeto de base de datos que tenga cierta ocupacin en disco, es decir, cualquier objeto que tenga un segment relacionado, existe el concepto de extent. Extent es un espacio de disco que se reserva de una sola vez, un segmento que se reserva en un momento determinado de tiempo. El concepto de extent es un concepto fsico, unos estn separados de otros dentro del disco. Ya dijimos que todo objeto tiene su segmento asociado, pero lo que no dijimos es que este segmento, a su vez, se compone de distintas extensiones. Un segmento, puede ser reservado de una sola vez (10 Mb de golpe), o de varias veces (5 Mb hoy y 5 Mb maana). Cada una de las veces que se reserva espacio se denomina extensin.

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. Se utilizan los operadores UNION, INTERSECT o MINUS. Se utilizan joins entre tablas. Se utilizan subconsultas.

Concepto de Data block (bloque de datos)


Un data block es el ltimo eslabn dentro de la cadena de almacenamiento. El concepto de Data block es un concepto fsico, ya que representa la mnima unidad de almacenamiento que es capaz de manejar Oracle. Igual que la mnima unidad de almacenamiento de un disco duro es la unidad de asignacin, la mnima unidad de almacenamiento de Oracle es el data block. En un disco duro no es posible que un fichero pequeo ocupe menos de lo que indique la unidad de asignacin, as si la unidad de asignacin es de 4 Kb, un fichero que ocupe 1 Kb, en realidad ocupa 4 Kb.

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

You might also like