Você está na página 1de 41

FUNCIONAMIENTO DE ORACLE

SISTEMA GESTOR DE ORACLE............................................................................2


Funcionamiento General....................................................................................................................................2 Estructura de Fsica de la Base de Datos, ficheros..........................................................................................6 Estructura de Lgica de la Base de Datos. Tablespaces, segmentos y objetos..............................................14 Estructura de Memoria...................................................................................................................................25 Estructura de Procesos...................................................................................................................................29 Usuarios, Seguridad de Acceso.....................................................................................................................35 La Estructura de Datos Ejemplo.....................................................................................................................40

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 1

FUNCIONAMIENTO DE ORACLE

SISTEMA GESTOR DE ORACLE


En ste captulo se ver, a modo de ejemplo, el funcionamiento del Sistema Gestor de Base de Datos de ORACLE, uno de los SGBDR ms utilizados en el mundo de las grandes empresas. Si el lector quiere introducirse en los por menores de ste, es necesaria la consulta con el manual apropiado que ORACLE proporciona a tal efecto. Nosotros presentaremos dicho funcionamiento a grandes rasgos para que este pueda concebir el sistema genrico utilizado por un SGBD.

Funcionamiento General El sistema gestor de Base de Datos de ORACLE puede ser configurado para dar el servicio de manera ms eficiente segn sea la configuracin que ste tome. La figura 1 ilustra el funcionamiento general del SGBD de ORACLE. Una Base de Datos ORACLE es una coleccin de datos tratados todos ellos como una unidad. Una Base de Datos que est formada por diversos tipos de ficheros dentro de un sistema operativo. Fsicamente, trataremos la Base de Datos como un conjunto de ficheros de base de datos y ficheros de traza. Lgicamente, la veremos como un conjunto de diccionarios, tablas de usuarios y ficheros de traza conteniendo datos de recuperacin de errores. Adicionalmente, una Base de datos requiere uno o ms ficheros de control. Ellos contienen aquella informacin que identifica y describe el resto de la Base de Datos. El funcionamiento del SGBD pasa por la definicin de una instancia ORACLE [fig.2]. Una instancia consiste, bsicamente en: - Una rea de memoria (llamada Area Global del Sistema, SGA) que permita una comunicacin entre los procesos, - Al menos cinco procesos en background (SMON, PMON, DBWR, LGWR y ARCH) utilizados por los usuarios de ORACLE.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 2

FUNCIONAMIENTO DE ORACLE

AREA GLOBA L DEL SIST EMA (SGA )


Bffer Redo
Areas

Bffer Base

PGA

de

contexto

Procesos

USUARIO_ 1

DBW R

PMON

SMON

LGW R

ARCH

Segm ento de Datos Segm ento de Rollback

Fichero de Traza Activo

BASE DE DATOS

FICHEROS DE TRAZA ON-LINE

FICHEROS DE TRAZA OFF-LINE

Figura 1. Funcionamiento General del SGBDR ORACLE. Cada una de las instancias necesita del acceso al cdigo ejecutable que ORACLE proporciona, aunque ste cdigo puede ser compartido por cada una de las instancias. Una Base de Datos puede ser accedida por mltiples instancias simultneamente, por ello podemos decir que ORACLE es un sistema compartido. La figura 3 muestra como se produce el acceso de dos instancias a la Base de Datos.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 3

FUNCIONAMIENTO DE ORACLE

AREA GLOBAL DEL SISTEMA (SGA)

CODIGO EJECUTABLE ORACLE USU_1 SMON PMON DBWR LGWR ARCH USU_3 USU_N USU_2

FICHEROS CONTROL

FICHEROS TRAZA

FICHEROS DE BASE DE DATOS

Buffers Ficheros Estructuras de memoria Estructuras de Procesos Estructuras de la Base de Datos Estructura de Usuarios

Buffers Ficheros B.D.

Figura 2. Relacin de las Estructuras de ORACLE. Veremos el funcionamiento de ORACLE a partir de cada uno de los componentes que lo componen, es decir, la estructura fsica de fichero y la lgica de tablas, la estructura de procesos y la estructura de memoria.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 4

FUNCIONAMIENTO DE ORACLE

INSTANCIA A

INSTANCIA B

S M O N

P M O N

D B W R

L G W R

A R C H

S M O N

P M O N

D B W R

L G W R

A R C H

SGA

SGA

FICHEROS DE BASE DE DATOS

FICHEROS TRAZA

FICHEROS DE CONTROL

Figura 3. Acceso de dos instancias a la B.D. ORACLE.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 5

FUNCIONAMIENTO DE ORACLE Estructura de Fsica de la Base de Datos, ficheros. En ste captulo veremos los ficheros necesarios para ejecutar el producto ORACLE. Estos estn agrupados en diferentes tipos segn el uso interno y la utilizacin que a cada uno de ellos se les da. Por ello stos sern agrupados segn la funcin que desempeen: - Ficheros de Programas de ORACLE - Ficheros de Base de Datos - Ficheros de Control - Ficheros de Traza Obviamente, ser slo el Administrador de la Base de Datos a quien le concernir la informacin incluida en los ficheros especificados anteriormente. Los usuarios de la Base de Datos raramente necesitarn saber la informacin existente en stos, a ellos les concierne la informacin lgica que de ellos se extrae, es decir los objetos de la Base de Datos que stos representan. La figura 4 ilustra el nmero de ficheros mnimo que requiere ORACLE para su funcionamiento:

Tipo de Ficheros F. de Base de Datos F. de Traza F. de Control Programas ORACLE

Nmero 1 2 1 Muchos

Tamao aproximado 500 Kb. 50 Kb. Segn tipo de Instalacin aprox 17400 Kb. (segn instalacin)

Figura 4. Nmero Mnimo de Ficheros por tipos Estructuras Fsicas, Estructuras Lgicas Una estructura fsica es aquella que est almacenada de una manera tangible en un medio hardware (un disco, una cinta magntica, un disquete, etc.). De sta manera, un fichero corresponde a un rea reservada de espacio por el sistema operativo para almacenar una determinada informacin. Dicho fichero, de alguna manera es tangible ya que existe de una manera fsica en un medio tangible.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 6

FUNCIONAMIENTO DE ORACLE Por otra parte, una estructura lgica es aquella que si bien tambin se corresponde a una unidad de espacio, sus lmites son independientes de su localizacin fsica. Una tabla puede ser almacenada a lo largo de varios ficheros de bases de datos fsicos. Ficheros de Programas de ORACLE Entre ste tipo de ficheros encontramos aquellos que son propios de la instalacin del producto ORACLE. Dependiendo del tipo de instalacin, variar el nmero de ste tipo de ficheros, as con el espacio requerido por stos. De sta manera, tendremos ficheros ejecutables, ficheros de comandos y libreras de objetos, todos ellos formando parte de los llamados ficheros de programa. Obviamente, es necesaria su conservacin ya que de su existencia depende la ejecucin correcta del producto. Ficheros de Bases de Datos Una Base de Datos ORACLE est formada por uno o ms ficheros de base de datos. Estos contienen todos los datos de la Base de Datos y se caracterizan porque: - Cada fichero est asociado solamente a una Base de Datos. - Una fichero fsico forma una unidad lgica de la Base de Datos llamada tablespace. Cada tablespace puede estar formado por varios ficheros de base de datos, aunque stos solamente pueden estar relacionados con un tablespace. Dada su importancia, nos extenderemos en los tablespaces en posteriores captulos. - Todos los ficheros de base de datos de tablespaces on-line deben ser accesibles al arrancar ORACLE RDBMS. - Aunque no es necesario que el espacio asignado a un fichero de base de datos sea contiguo, s que es aconsejable para una mejor accesibilidad. - Una vez creado, un fichero de base de datos no cambiar de tamao. El nmero de ficheros de base de datos variar en funcin de las necesidades de espacio de nuestros aplicativos y del incremento realizado al ampliar dicho espacio requerido. Siempre ser obligatorio tener definido un fichero de base de datos asociado al tablespace SYSTEM. Este almacenar informacin del diccionario de datos y del segmento de rollback iniciales. El parmetro MAXDATAFILES del comando CREATE DATABASE marcar el nmero mximo de ficheros. Si ste no es precisado, lo marcar el parmetro DB_FILES del fichero INIT.ORA, fichero propio del producto ORACLE. Las lecturas/escrituras de los ficheros de bases de datos realizadas por el sistema operativo vendrn determinadas por el llamado tamao de bloque. Este viene definido por Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 7

FUNCIONAMIENTO DE ORACLE el parmetro DB_BLOCK_SIZE del fichero CONFIG.ORA. Normalmente suele tener un tamao de 4Kb.
Ficheros de base de datos on-line y off-line

Mediante la instruccin ALTER TABLESPACE conseguiremos cambiar un tablespace en modo on-line a off-line y viceversa. Un tablespace on-line indica que las tablas que ste contiene son accesibles por el gestor de ORACLE. Un tablespace off-line ser aquel que por cualquier razn est desactivado. De esta manera, diremos que los ficheros asociados a un tablespace estn on-line si el tablespace lo est y estarn off-line si el tablespace del que dependen est off-line.
Creacin y eliminacin de un fichero de base de datos

Las instrucciones CREATE DATABASE y CREATE TABLESPACE ... DATAFILE ... permiten crear los ficheros de base de datos, definiendo el tamao asignado a stos. Una vez se ha alcanzado el mximo de dicho espacio, es posible definir un nuevo fichero de base de datos asocindolo a un tablespace existente mediante la instruccin ALTER TABLESPACE ... ADD DATAFILE. Mediante la instruccin DROP TABLESPACE conseguiremos borrar un tablespace del sistema. Para ello deberemos asegurarnos que anteriormente est off-line. Seguidamente podremos eliminar los ficheros asociados al tablespace utilizando los comandos de sistema operativo correspondientes. Ficheros de Control Los ficheros de control son pequeos ficheros binarios asociados a una Base de Datos que son chequeados cada vez que la Base de Datos de ORACLE se abre. Los ficheros de control se crean durante la instalacin del producto ORACLE y deben ser siempre accesibles cada vez que sea arrancada la Base de Datos. Deberemos saber, pues, cuntos ficheros de control mantener, y en qu dispositivo colocarlos. Un fichero de control contiene informacin sobre la manera de acceder a la Base de Datos asociada. Por ello contiene informacin tal como: - Nombre fsico de la Base de Datos y de los ficheros de traza, - Fecha y hora de creacin de la Base de Datos, - Nombre lgico de la Base de Datos. Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 8

FUNCIONAMIENTO DE ORACLE El fichero de control es modificado automticamente por ORACLE, no es necesario que ste sea editado por un operador cada vez que se produzca un cambio en su informacin. Es recomendable realizar copias de los ficheros de control en diferentes dispositivos para evitar el riesgo de fallo en un dispositivo, aunque sea tedioso el posterior mantenimiento de stos. El nombre del fichero de control asociado a una Base de Datos est indicado en el fichero INIT.ORA mediante el parmetro CONTROL_FILE. Este indica una lista de uno o ms nombres de ficheros de control. Es posible cambiar la lista para aadir o cambiar la localizacin los ficheros de control siempre que la base de datos est abajo. Para crear un nuevo fichero de control, deberemos copiar un fichero de control existente en uno nuevo y seguidamente aadirlo a la lista de ficheros de control. Para llevar a efecto dicho cambio, deberemos llevar abajo la Base de Datos (shutdown) y volverla a encender (startup). El tamao de un fichero de control suele tener pequeas dimensiones. ste viene determinado por los parmetros DB_FILES y LOG_FILES del fichero de configuracin INIT.ORA. Ficheros de Traza Las trazas estn compuestas por un conjunto de ficheros (llamados ficheros de traza) externos a la Base de Datos que almacenan los cambios hechos durante cada una de las transacciones contra la Base de Datos. Existen dos tipos de ficheros de traza: los ficheros de traza on-line y ficheros de traza off-line. Los primeros almacenan los cambios realizados por transacciones cada vez que se produce un COMMIT en stas. Gracias a stos, es posible recuperar el estado de la Base de Datos despus de que se haya producido un error en sta. El proceso encargado de escribir las trazas en ste fichero, denominado LGWR, debe tener acceso a dichos ficheros de traza, ya que de otra manera, ORACLE RDBMS desmontara la Base de Datos. Cada Base de Datos debe tener al menos dos ficheros de traza activos on-line. El uso de los archivos de traza off-line es opcional, estos son copias de los primeros realizadas en otro dispositivo fsico. Para archivar los ficheros de traza, debe operarse el ORACLE en modo Archivelog. Tanto los primeros como los segundos sern utilizados en caso de error en la Base de Datos. El uso de los ficheros de traza se debe a que el proceso encargado de escribir los cambios en la Base de Datos, DBWR, no sincroniza dichos cambios producidos por un COMMIT con escrituras fsicas en los ficheros de bases de datos (vistos anteriormente). Estos quedan en un bffer de operaciones de escritura a la Base de Datos. Los ficheros de traza se utilizan bsicamente para asegurar que stos cambios se lleven a efectos. De sta manera se pueden llevar a cabo la vuelta atrs para aquellas transacciones terminadas en ROLLBACK. Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 9

FUNCIONAMIENTO DE ORACLE Los ficheros de traza son utilizados para operaciones de vuelta atrs. Es decir, operaciones que mediante acceso a los ficheros de traza deben dejar la Base de Datos en un estado anterior al actual. Para stas operaciones se utilizan los llamados segmentos de rollback. Estos segmentos se corresponden con reas de disco que contienen la informacin necesaria para la vuelta atrs.
Ficheros de Traza On-Line

Los ficheros de traza on-line son formados por al menos parejas de dos ficheros. stos se crean en el momento de creacin de la Base de Datos a los que automticamente se asocian. Al ejecutar el comando CREATE DATABASE se especifican las siguientes acciones que afectan a los ficheros de traza on-line: - Modo de operacin de la Base de Datos, Archivelog o Noarchivelog. - Nmero de ficheros de traza on-line a utilizar, - El tamao de stos, - Lugar en donde sern creados los ficheros de traza on-line. Los ficheros de traza on-line son una parte esencial del producto ORACLE. Estos contienen la manera en que se produjeron cada una de las grabaciones de cada una de las transacciones de datos realizadas en la Base de Datos asociada. As, un COMMIT realizado en la Base de Datos slo se completar si se ha podido realizar una traza en el fichero de traza asociado. Por ello, los ficheros de traza son la nica manera de recuperar la Base de Datos en caso de problemas. El modo de funcionamiento de los ficheros de traza on-line se asemeja a un tiovivo. Es decir, cuando el proceso LGWR escribe sobre un fichero de traza on-line y llega hasta el final de ste, utiliza el siguiente fichero de traza on-line disponible. Cuando se completa el ltimo fichero de traza disponible, el gestor de la Base de Datos ORACLE utilizar el primer fichero de traza on-line, completando y continuando la rueda de escrituras. Diremos que cada vez que ORACLE cambia de fichero de traza se produce un cambio de fichero de traza. La escritura circular que se ha descrito anteriormente se describe en la figura 5:

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 10

FUNCIONAMIENTO DE ORACLE

F.TRAZA ON-LINE A

F.TRAZA ON-LINE B

F.TRAZA ON-LINE C

Figura 5. Escritura Circular para los Ficheros de Traza on-line. Es posible numerar cada uno de los ficheros de traza on-line que forman el ciclo de escrituras visto anteriormente y marcar la secuencia en el que deben hacerse los cambios de fichero de traza. Ello se consigue con el comando ARCHIVE LOG LIST. Tanto el tamao de cada fichero de traza, como el nmero de stos depender de cada instalacin de ORACLE, segn las necesidades de cada sistema, para ello deberemos considerar los siguientes factores: - Cuanto ms grandes sean los ficheros de traza, mayor ser la informacin de vuelta atrs almacenada. - Cuanto mayores sean los ficheros de traza, menores sern los puntos de chequeo para realizar un cambio de fichero de traza. - Cuanto mayor sea el nmero de ficheros de traza on-line utilizados, menor ser el uso que hagamos de los ficheros de traza off-line, ya que implcitamente estamos haciendo un uso implcito de los ficheros de traza off-line. - Cuanto menor sea un fichero de traza on-line menor ser la informacin real que habremos perdido.
Ficheros de Traza Off-Line

Los ficheros de traza off-line son utilizados para proteger la Base de Datos contra los errores fsicos que pueda sufrir el disco en la que se almacena. En importante, siempre que sea posible, almacenar los ficheros de base de datos y los ficheros de traza on-line en discos diferentes, pero no siempre es posible, por ello almacenaremos peridicamente los Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 11

FUNCIONAMIENTO DE ORACLE ficheros de traza on-line en un medio diferente, convirtiendo los ficheros de traza on-line en ficheros de traza off-line copias de los primeros. Esta operacin puede realizarse de manera automtica o manualmente, aunque siempre estando la Base de Datos en modo ARCHIVELOG.
Puntos de Chequeo

Diremos que se produce un punto de chequeo siempre que sea necesaria la escritura de un nmero predeterminado de bloques de traza a disco. Tambin se produce un punto de chequeo siempre que se produzca un cambio de fichero de traza. Cada vez que se produce un punto de chequeo, el proceso DBWR escribe todos los cambios existentes en el bffer del SGA desde el anterior punto de chequeo. Por ello, los puntos de chequeo aseguran la escritura de los bloques de traza a sus correspondientes ficheros de traza, as como los cambios que stos provocan en la Base de Datos mediante la escritura a los correspondientes ficheros de base de datos.
Segmentos de Rollback

Los segmentos de Rollback son reas de disco utilizadas para almacenar los cambios provocados en la Base de Datos, permitiendo la vuelta atrs de dichos cambios mediante la instruccin ROLLBACK. Representan aquella unidad lgica asociada a un fichero de traza. En la creacin de un Segmento de Rollback se define aquel tablespace en donde se definir ste. Como ya sabemos, los tablespaces estn representados por uno o ms ficheros de base de datos. Al crear una Base de Datos, se crea por defecto el segmento de rollback del sistema. Es posible aadir cuantos segmentos de rollback sean necesarios. Para ello deberemos considerar los siguientes puntos: - El espacio de la Base de Datos que dedicaremos a nuestros segmentos de rollback. - La media de transacciones que tenemos en nuestra Base de Datos de manera concurrente (para cada transaccin deberemos prever un espacio en el segmento de rollback). - La cantidad de espacio necesario para almacenar los cambios que stas transacciones provocan. Normalmente, las transacciones asociadas a procesos batch utilizan mayor cantidad de espacio que las transacciones asociadas a procesos online. - Es posible dividir las entradas de los segmentos de rollback en varios discos ? Por todo ello deberemos tener en cuenta la siguiente tabla, ella indica un nmero aproximado de segmentos de rollback a tener en cuenta para nuestras instalaciones: Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 12

FUNCIONAMIENTO DE ORACLE

Nmero de Transacciones concurrentes menos de 16 entre 16 y 32 ms de 32

Nmero de Segmentos de Rollback recomendado 4 segmentos 8 segmentos n transac / 4 (menor que 50)

Figura 6. Nmero de Segmentos de Rollback Sea cual sea en nmero de segmentos de rollback escogido, es recomendable que todos ellos tengan un tamao similar. Al igual que las tablas de datos (que veremos posteriormente), los segmentos de rollback se definen a partir de un tamao inicial, que es incrementado en extensiones finitas una vez que se haya completado el espacio asignado. Por ello, nos aseguraremos que el tamao total que sean capaces de cubrir nuestros segmentos de rollback sea siempre el espacio necesario que generen las transacciones concurrentes.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 13

FUNCIONAMIENTO DE ORACLE Estructura de Lgica de la Base de Datos. Tablespaces, segmentos y objetos En ste punto trataremos la estructura lgica de la Base de Datos de ORACLE. Esta estructura est apoyada, obviamente, sobre la estructura de ficheros vista anteriormente, de la que depende. La siguiente figura representa la relacin entre cada uno de los componentes lgicos de la Base de Datos.

BASE DE DATOS TABLESPACES OBJETOS: Tablas, Indices, Vistas SEGMENTOS EXTENSIONES Tb_1 Dato Tb_2 Dato TS_1 Tb_3 Dato Ind_1 Indice

BD SYSTEM Ind_2 Indice ... ... ... ...

Figura 7. Estructura Lgica de la Base de Datos ORACLE


Base de Datos Tablespaces Objectos /home/oracle/dbs/fichero1.dbf /home/oracle/dbs/fichero2.dbf /home/oracle/dbs/fichero3.dbf Espacio no ocupado en el fichero de base de datos (f. de b.d.) Espacio ocupado por un objeto del Tablespace SYSTEM en el f. de b.d. .../dbs/fichero1.dbf Espacio ocupado por un objeto del Tablespace SYSTEM en el f. de b.d. .../dbs/fichero1.dbf Espacio ocupado por un objeto del Tablespace SYSTEM en el f. de b.d. .../dbs/fichero1.dbf Espacio ocupado por un objeto del Tablespace TBSPC_1 en el f. de b.d. .../dbs/fichero2.dbf Espacio ocupado por un objeto del Tablespace TBSPC_1 en el f. de b.d. .../dbs/fichero2.dbf Espacio ocupado por un objeto del Tablespace TBSPC_1 en el f. de b.d. .../dbs/fichero2.dbf Espacio ocupado por un objeto del Tablespace TBSPC_1 en el f. de b.d. .../dbs/fichero2.dbf Espacio ocupado por un objeto del Tablespace TBSPC_1 en el f. de b.d. .../dbs/fichero2.dbf
BASE DE DATOS SYSTEM TBSPC_1

Figura 8. Enlace Estructura Fsica y Estructura Lgica de ORACLE. Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 14

FUNCIONAMIENTO DE ORACLE

El SGDB de ORACLE es capaz de administrar cuantas Bases de Datos seamos capaces de definir en el sistema (dentro de unos lmites lgicos, aunque normalmente tendremos definida una sola Base de Datos). Cada Bases de Datos estar dividida en una estructura lgica denominada tablespace. Veremos su utilidad en el ejemplo que a continuacin se define. A su vez, cada tablespace contendr, ahora s, cada uno de los objetos que necesitemos definir y sobre los que nuestros aplicativos trabajarn, es decir cuantas tablas, ndices, vistas, etc ... necesitemos para almacenar la informacin deseada. Cada uno de los tablespaces definidos estar asociado a un fichero de base de datos, que a su vez contendr cada uno de los datos almacenados en las tablas lgicas que vemos. La creacin de dichos objetos fsicos obliga a definir el tamao inicial para este, un tamao de extensin una vez se haya completado el tamao inicial asignado y un nmero mximo de extensiones que puede alcanzar dicho objeto, para evitar un crecimiento descontrolado y una dispersin fsica del objeto lgico dentro del fichero de base de datos. La figura 8 muestra la manera en que quedan ligadas la estructura fsica y la lgica. Tablespaces Hemos visto anteriormente la estructura bsica en que se compone una Base de Datos. Hemos visto que sta se divide en unidades lgicas llamadas tablespaces. Una Base de Datos puede estar formada por uno o varios tablespaces, aunque siempre deber existir el tablespace primario denominado SYSTEM. Un tablespace est asociado ineludiblemente a uno o ms ficheros de base de datos (vistos anteriormente). Principalmente, los tablespaces son utilizados por el administrador de la Base de Datos para: - Controlar el espacio que ocupan cada uno de los objetos de la base de datos asociados al tablespace, tales como tablas, ndices, vistas, etc . . . - Definir cuotas de espacio para los usuarios de los objetos asignados a un tablespace. - Controlar el acceso a los datos, situando un tablespace en on-line u off-line. - Realizar copias de seguridad de una manera ms flexible. Es decir, podramos entender los tablespace como 'cada una de las reas en que podemos dividir una Base de Datos'. Obviamente, ubicaremos en cada tablespace aquellos objetos pertenecientes a dicha 'rea' (tablas, ndices, vistas, etc ... necesarios). Veamos ahora la funcin del tablespace SYSTEM. ste tablespace debe existir en cada Base de Datos. Al crearse sta, dicho tablespace es creado automticamente y es obligatorio que el tablespace SYSTEM est siempre on-line ya que contiene la siguiente informacin: - El diccionario de la Base de Datos, Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 15

FUNCIONAMIENTO DE ORACLE - Los segmentos de rollback temporales, - La ayuda en lnea, siempre que sta est cargada, - Aquellas tablas que el producto ORACLE utilice para su funcionamiento, - La definicin de los usuarios creados. Aunque no es obligatorio, el uso de mltiples tablespaces permitir al Administrador de la Base de Datos una mayor flexibilidad. Algunos de los beneficios de un sistema con mltiples tablespaces son: - Diversificacin en los accesos a disco siempre que los tablespaces estn asociados a ficheros de base de datos situados en diferentes unidades de disco, - Posible separacin de los tipos de objetos en tipos, teniendo la posibilidad de asociar todos las tablas a un tablespace, los ndices a otro tablespace y las vistas a un tercero, etc. ..., - Forzar esquemas de utilizacin del espacio del disco, dependiendo de la situacin fsica de los ficheros de base de datos a stos, - Posibilidad de situar un tablespace de on-line a off-line y viceversa. - Reservar tablespaces para tablas de un ndice de actividad parecido. Una manera de optimizar una Base de Datos es la de asociar un tablespace a un fichero de base de datos, colocando ste fichero en un espacio de disco contiguo y en un lugar de fcil acceso, siempre que sea posible (recordar que la parte central de un disco tiene un acceso ms rpido que los extremos de ste). De sta manera, la accesibilidad de la Base de Datos se haya mejorado con respecto a una Base de Datos sin una organizacin previa. Por ello, la importancia de que la estructura de tablespaces y ficheros de base de datos en la rapidez de acceso a la Base de Datos. Segmentos y extensiones Todos los datos de un tablespace son almacenados en 'pedazos' del espacio reservado para la Base de Datos llamados segmentos. Por ello, un segmento es un conjunto de bloques de la Base de Datos distribuidos para almacenar los datos de sta. stos se corresponden con el siguiente nivel lgico en que se divide la estructura lgica de la Base de Datos, despus de los tablespaces, por ello no pueden expandirse a travs de ms de uno de ellos, pero s a travs de ms de un fichero de base de datos (en caso de que un tablespace est asociado con ms de uno de ellos). Una Base de Datos se compone de cinco tipos de segmentos: - Segmentos de Datos, - Segmentos de Indices, - Segmentos de Rollback, - Segmentos Temporales y Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 16

FUNCIONAMIENTO DE ORACLE - Segmento de Arranque. De todos ellos, los dos primeros son los ms utilizados implcitamente por los usuarios de ORACLE. Al Administrador de la Base de Datos le conciernen los tres siguientes; aunque todos ellos tienen una estructura similar, especificada mediante los parmetros de almacenamiento, esto es, se define un tamao inicial (compuesto por un nmero finito de segmentos) y seguidamente un nmero, finito tambin, de extensiones, o ampliaciones que permite su crecimiento. El propsito de los parmetros de almacenamiento es controlar el espacio en que va creciendo un objeto de la Base de Datos, limitndolo a un tamao finito de extensiones. Una extensin ser pues un espacio contiguo de la Base de Datos (dentro de un fichero de base de datos) expresado en bytes. Por ello, al crearse una tabla, su segmento de datos asociado contiene una extensin inicial con un nmero finito de bytes. Aunque dicha tabla no contenga ninguna fila, ste espacio inicial queda reservado de manera definitiva. A medida que el nmero de filas va incrementndose, dicho espacio va siendo ocupado por datos de la tabla hasta que ste espacio inicial se completa. Entonces es creada automticamente una extensin. En ste momento diremos que el segmento de datos contiene ahora extensiones.
Segmentos de Datos e Indices

Evidentemente el primero de ellos contiene todos los datos de tablas, mientras que el segundo contendr los datos pertenecientes a ndices. Una tabla puede tener uno, ms de uno o ningn segmento de ndices, dependiendo del nmero de ndices asociados a dicha tabla.
Segmentos de Rollback

Aunque de ellos nos hemos ocupado anteriormente, hablaremos ahora de cada uno de los tipos de segmentos de rollback existentes, por ello podemos decir que existen: - Segmentos de Rollback Pblicos y - Segmentos de Rollback Privados. Aunque es posible definir ambos tipos de segmentos de Rollback en una Base de Datos, de los primeros diremos que son los ms usados en las instalaciones de ORACLE, utilizados por cualquiera de las instancias de la Base de Datos. Los segundos son tiles en casos excepcionales, por ejemplo para instancias particulares que requieran de un tamao extremadamente grande de segmento de rollback para ser ejecutadas.
Segmentos Temporales

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 17

FUNCIONAMIENTO DE ORACLE Al igual que los segmentos de rollback privados, los segmentos temporales son utilizados en casos excepcionales. Por ello los utilizaremos en operaciones tales como: - Creacin de Indices, - Instrucciones como: SELECT ... ORDER BY, SELECT ... DISTINCT, SELECT ... GROUP BY, SELECT ... UNION, SELECT ... INTERSECT, SELECT ... MINUS, - Seleccin de Datos a travs de varias tablas (Joins) sin ndice, - Seleccin de subqueries, - Etc ...
Segmento de Arranque

El segmento de Arranque es creado en el tablespace SYSTEM automticamente al crearse la Base de Datos. Contiene la definicin del diccionario de datos para las tablas, es decir la definicin de cada estructura de cada una de las tablas creadas en la Base de Datos. Obviamente, dicho segmento ocupa un espacio pequeo comparado con el espacio que ocupan los dems segmentos. Objetos de la Base de Datos Los diferentes objetos que forman parte de una Base de Datos ORACLE son los siguientes: - Tablas, - Indices, - Vistas, - Clsters, - Secuencias y - Sinnimos. Debido al amplio conocimiento que se le supone al lector de ste captulo (es caso contrario es recomendable la lectura del captulo dedicado al Modelo y Teora Relacional) veremos de manera rpida la definicin y posterior desarrollo de los dos primeros tipos de objetos. Nos detendremos en cuestiones particulares utilizadas por ORACLE.
Tablas

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 18

FUNCIONAMIENTO DE ORACLE Una tabla es la unidad elemental de almacenamiento en un sistema relacional de datos. Compuesta, como es sabido, por filas que representan elementos de la entidad a la que representan y columnas, con un nombre, tipo y tamao asociado que representan cada uno de los atributos de cada elemento de la entidad. Las tablas son creadas a partir de la instruccin CREATE TABLE. Los parmetros de almacenamiento asociados a ste comando permiten definir un tamao inicial y un nmero finito de extensiones. La localizacin fsica de una tabla la deberemos encontrar siempre en el fichero de base de datos asociado al tablespace en el que s difini la tabla, aunque es imposible adivinar (no para el SGDB) qu espacio exacto ocupa un dato concreto de una tabla. Diremos que la operacin de compactacin de una tabla consiste en situar de una manera contigua a cada uno de los segmentos que componen una tabla.
Indices

Los ndices son estructuras de datos opcionales asociadas a tablas y clsters. Son utilizados bsicamente para: - Incrementar el acceso a las filas de la tabla asociada, - Garantizar la unicidad de las filas mediante el uso de las claves nicas. Por tanto, crearemos un ndice siempre que deseemos incrementar algunos de los parmetros anteriores, teniendo en cuenta que un nmero elevado de ndices asociados a una tabla decrementar las operaciones de modificacin y creacin de filas. Normalmente los ndices son creados en una tablespace especfico. El uso de un tablespace distintos para datos y otro para ndices, situados en diferentes discos, incrementa la accesibilidad de los datos. Situando los ndices y datos en un nico tablespace obtendremos una mayor facilidad en el mantenimiento de la Base de Datos para realizar backups. Situaremos los ndices en el tablespace que ms nos convenga, dependiendo siempre de la instalacin que debamos realizar. El acceso de los datos a travs de los ndices asociados se realiza utilizando la estructura de Arboles B+. Veamos como se funcionan dichas estructuras a partir de la figura 9:

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 19

FUNCIONAMIENTO DE ORACLE

MI

ADAM ALLEN

BLAKE FORD

JAMES JONES

MARTIN

MILLER SCOTT

TURNER WARD

Figura 9. Arboles B+ A partir de un nodo inicial, y basndonos ramificaciones, llegaremos al nodo deseado. El identificador de la fila asociado a dicho nodo nos permitir el acceso directo a la tabla de datos para la que se define el ndice. Las filas con valores nulos no formarn parte de dicha estructura de ndice.
Vistas

Aunque tcnica y fsicamente no podemos tratar las vistas como tablas de datos, s que podemos afirmar que lgicamente son verdaderas tablas de datos. Una vista almacena el resultado de una consulta previamente definida realizada contra una tabla de datos. Por ello, aplicando la teora relacional, podemos tratar las vistas como verdaderas tablas lgicas de datos. Normalmente utilizaremos las vistas para facilitar y restringir las consultas de datos hacia las tablas definidas en la Base de Datos. Debido que stas son simples referencias a las tablas de datos, no ocupan el espacio fsico de la consulta que representan (slo ocupan espacio en el diccionario de datos). El usuario de vistas debe tener presente en cada momento las tablas de datos a las que stas hacen referencia, ya que un cambio en stas ltimas (alteracin de campos, eliminacin de la tabla de datos asociada, etc ...) no modificar automticamente las vistas de stas.
Dada la tabla de datos CLIENTES, supongamos que deseamos ocultar a los usuarios la informacin referente a los clientes no pertenecientes a nuestra provincia. Para ello crearemos la vista

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 20

FUNCIONAMIENTO DE ORACLE

CREATE VIEW clientes_baleares AS SELECT * FROM clientes WHERE provincia = 'BALEARES' No olvidemos que los usuarios de dicha vista vern los datos que sta ofrece como una tabla lgica de datos.

Figura 10. Uso de las Vistas


Clsters

Los clsters son utilizados como un modo alternativo de almacenamiento de tablas. Los clsters representan grupos de tablas almacenadas de manera conjunta ya que stas comparten columnas comunes y son utilizadas frecuentemente juntas. Por ello, el uso de clsters puede modificar sensiblemente la velocidad de respuesta frente a consultas de datos con tablas enlazadas mediante ste sistema. Debemos tener en cuenta una serie de consideraciones sobre el uso de stas: - Los tiempos de bsqueda y clculo se reducen ya que la informacin est almacenada de manera conjunta, - El espacio de almacenamiento se reduce al estar almacenada una sola vez la informacin redundante de varias tablas, - Los clsters almacenan ms eficientemente un conjunto de tablas que si stas fuesen almacenadas de manera separada, - El uso de clsters, as como el de ndices, no afecta al diseo futuro de las aplicaciones que manejen dichos datos, - El uso de clsters permite una mejor identificacin de la informacin existente (ello se nota especialmente al asociar las columnas cdigo con la tabla que contiene la descripcin de dicho cdigo) As, aquellas tablas que son consultadas frecuentemente de manera conjunta son candidatas a ser asociadas mediante clsters. Obviamente, las columnas que formen el campo clave de unin con las tablas sern utilizadas en la asociacin.
Secuencias

Las secuencias son un tipo de objetos utilizados para establecer y asociar una numeracin correlativa de manera automtica en las columnas que as se desee realizar. Las secuencias sern numeradores siempre de tipo numrico a los que se les asocian las siguientes propiedades: Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 21

FUNCIONAMIENTO DE ORACLE - Un inicio, - Un final, - Un valor de incremento, - Una marca que indique si la secuencia es cclica o no. Existen dos funciones utilizadas en la manipulacin de las secuencias: NEXTVAL es utilizada para generar el siguiente valor de la secuencia, para ello incrementa la secuencia en la unidad de incremento definida para sta y obtiene dicho valor; CURRVAL obtiene el valor actual de la secuencia sin incrementar el valor de sta. El siguiente ejemplo muestra el uso de las secuencias:
Supongamos la secuencia seqval definida como: CREATE SEQUENCE seqval INCREMENT BY 10 START WITH 0 La sentencia: SELECT seqval.NEXTVAL A, seqval.NEXTVAL B, seqval.CURRVAL C FROM dual generara la salida: A B C --- --- --10 20 20

Figura 11. Uso de las Secuencias El uso de los operadores CURRVAL y NEXTVAL est restringido en las siguientes clusulas: - SELECT ... WHERE ... - SELECT ... ORDER BY ... - SELECT ... CONNECT BY ... - SELECT ... GROUP BY ... - SELECT DISTINCT ... En cambio, el uso de secuencias est indicado para las sentencias siguientes: - INSERT ... VALUES ... - UPDATE ... SET ... - SELECT .NEXTVAL FROM dual Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 22

FUNCIONAMIENTO DE ORACLE - CREATE TABLE AS ... INSERT .NEXTVAL - UPDATE ... SELECT .NEXTVAL. Es posible modificar el valor de una secuencia, as como alguna de las propiedades que la definen, utilizando el comando ALTER SEQUENCE.
Sinnimos

Un sinnimo es un objeto utilizado como enlace para el acceso a cualquiera de los dems objetos definidos en la Base de Datos. Es decir, dado cualquier objeto de la misma, podemos crear un segundo acceso a sta mediante la utilizacin de un sinnimo. Veamos la siguiente figura para entender mejor el uso de los sinnimos:
Supongamos la tabla: EMPLEADOS Podemos acceder a la informacin que sta contiene mediante la instruccin: SELECT codigo, direccion, telefono FROM empleados WHERE nombre LIKE 'A%' Despus de la instruccin: CREATE PUBLIC SYNONYM trabajadores ON empleados la instruccin: SELECT codigo, direccion, telefono FROM trabajadores WHERE nombre LIKE 'A%' implica la misma consulta que la primera.

Figura 12. Uso de sinnimos El Diccionario de Datos Hasta ahora hemos estado hablando del Diccionario de Datos aunque en ningn momento hemos definido la finalidad y estructura del mismo. En ste punto veremos la definicin del diccionario de datos, qu tipo de objetos lo forman, el esquema de diseo que sigue y la manera de modificar su contenido. Dicha estructura es utilizada por el Administrador de la Base de Datos, aunque algunos usuarios pueden beneficiarse de alguno de sus contenidos. As, podemos definir el Diccionario de Datos como un conjunto de tablas y vistas de slo lectura, propias del producto ORACLE que contienen la siguiente informacin: Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 23

FUNCIONAMIENTO DE ORACLE - Los nombre de cada uno de los usuarios de la Base de Datos ORACLE, - Derechos y privilegios que tienen cada uno de ellos, - Los nombres de cada uno de los objetos definidos en la Base de Datos, es decir, tablas, vistas, ndices, clsters, sinnimos y secuencias, - Claves primarias y externas referentes a los ndices existentes, - Valores por defecto para las columnas, - Enlaces entre columnas, - Espacio que ocupan los objetos definidos, - Informacin referente a las posibles auditorias realizadas en la Base de Datos, - Informacin general de la Base de Datos. He aqu una breve relacin de las tablas y vistas ms utilizadas en el diccionario de datos:
DICTIONARY: Relacin de las tablas y vistas que componen el Diccionario de Datos ALL_USERS: Informacin acerca de los usuarios de la Base de Datos ALL_OBJECTS: Informacin acerca de cada uno de los objetos, es decir, tablas, ndices, vistas, secuencias, synnimos, etc. ... existentes en la b.d. accesible por el usuario. ALL_TABLES: Descripcin de las Tablas accesibles por los usuarios ALL_INDEXES: Relacin de los ndices accesibles por los usuarios. ALL_SEQUENCES: Relacin de las secuencias existentes ALL_VIEWS: Texto de las Vistas accesibles en la Base de Datos ALL_SYNONYMS: Relacin de sinminos en la Base de Datos. ALL_TAB_COLUMNS: relacin de cada una de las columnas y tablas existentes en la b.d. TABLE_PRIVILEGES: Relacin de cada uno de los privilegios existentes en cada una de las tablas de la Base de Datos, asocindolo con cada uno de los usuarios. COLUMN_PRIVILEGES: Relacin similar a la anterior, a nivel de columnas.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 24

FUNCIONAMIENTO DE ORACLE Estructura de Memoria En ste apartado describiremos la estructura de memoria utilizada por ORACLE. Dicha estructura viene definida a partir de las siguientes reas: - Area Global del Sistema (SGA), - Bffers de base de datos, - Bffers de traza, - Area Global de Programas (PGA), - Areas de contexto, - Areas de software, - Memoria virtual. Es decir, en ella se almacenar bsicamente informacin del tipo: - El cdigo de sus programas ejecutables, - Los datos necesarios para la ejecucin de stos, - Informacin necesaria para comunicacin entre procesos. Todas las operaciones realizadas por el Gestor de la Base de Datos ORACLE estn basadas en la estructura de memoria y procesos existente. Esta se basa en la memoria principal de la computadora sobre la que est instalado el producto. Un proceso es un trabajo o tarea que realiza operaciones en memoria. Entre stos, se incluyen los procesos que cada uno de los usuarios ejecuta, ms los cinco procesos background de ORACLE ya presentados en la introduccin y que en captulos posteriores desarrollaremos. Veamos cada una de las reas en que se compone la estructura de memoria de manera separada. Area Global del Sistema (SGA) La SGA (System Global Area, Area Global del Sistema) es un conjunto de Bffers de memoria compartida que contiene tanto datos como informacin de control para una instancia de la Base de Datos. El SGBD es quien escribe directamente sobre dicha rea a partir de la ejecucin del cdigo que el usuario procesa. El SGA contiene entonces los bffers de la Base de Datos, los bffers de redo e incluso informacin cacheada del diccionario de datos. Por ello, cada instancia mantendr su propia SGA, y todas las SGAs existentes sern compartidas por cada uno de los usuarios conectados a la Base de Datos.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 25

FUNCIONAMIENTO DE ORACLE Veamos como actan los bffers de la Base de Datos existentes en el SGA durante la ejecucin de una transaccin que produce modificacin de datos: - Cada instruccin que ejecuta una transaccin modifica el bloque de segmento de datos correspondiente en su buffer correspondiente. Un bloque del buffer de la Base de Datos se corresponde unvocamente con un bloque de un fichero de base de datos (vistos anteriormente). Si es demandada una informacin de un bloque del fichero que no existe en el buffer de la Base de Datos, stas es leda y llevada al buffer. De sta manera, la transaccin modifica la informacin existente en el buffer de la Base de Datos, nunca directamente la informacin existente en el fichero de base de datos. - Al mismo tiempo, se almacena aquella informacin necesaria para realizar una posible vuelta atrs de la transaccin en su correspondiente bloque de rollback del buffer de redo correspondiente. - Al grabarse una transaccin, la informacin existente en el buffer de redo es escrita en su correspondiente fichero de traza (aquel que est on-line en el momento de la escritura). La informacin existente en el buffer de la Base de Datos no es escrita al terminar la transaccin, sino que dicha informacin queda en dicho buffer. El proceso DBWR ser el encargado de escribir dicha informacin en los ficheros fsicos de base de datos siguiendo un algoritmo llamado LRU (Least fRequence Used, el menos utilizado frecuentemente). Dicho algoritmo trabaja de la siguiente manera: - Los procesos de cada usuario provocan nuevas inserciones de bloques en el buffer de memoria, - Aquellos bloques que no son utilizados quedan marcadas en una 'lista de utilizacin de bloques', - De sta manera, inserciones de nuevos bloques provocan la salida de aquellos bloques situados al final de la 'lista'. Area Global de Programas El rea global de programas (Program Global Area, PGA) es un bffer de memoria de lectura-escritura no compartida que contiene datos e informacin de control acerca de cada uno de los procesos de un usuario. Por ello, diremos que cada proceso provocado por un usuario contendr su propia PGA. Un usuario, al conectar con la Base de Datos ORACLE (desde cualquiera de sus componentes) provoca la creacin de una PGA que contiene informacin acerca de la conexin. Si el sistema operativo no es capaz de suministrar dicha memoria, se producir Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 26

FUNCIONAMIENTO DE ORACLE un error de conexin por falta de memoria. Adems, cada PGA incluye las llamadas reas de contexto que sern descritas seguidamente. Los parmetros: - OPEN_CURSORS, - OPEN_LINKS, - SAVEPOINTS, - DB_FILES y - LOG_FILES del fichero de configuracin INIT.ORA permiten definir el tamao de cada PGA. El tamao para los procesos background (DBWR, LGWR, SMON, PMON y ARCH) vendr definido adicionalmente por stos y otros parmetros. Areas de Contexto El trmino rea de contenido es asociado frecuentemente al trmino cursor1, ya que en muchas ocasiones representan lo mismo. Cada instruccin SQL provocada por un proceso de un usuario requiere de su rea de contexto, un buffer de memoria de lectura-escritura no compartida creado para almacenar la informacin del proceso acerca de la ejecucin de la instruccin SQL. El SGBD crea automticamente una rea de contexto cada vez que una instruccin SQL lo requiere, y la cierra al finalizar la ejecucin de la misma. Por ello, un proceso puede tener varias reas de contexto asociadas a su PGA. Esta estructura contiene informacin acerca de: - El texto de la instruccin SQL, - La traduccin de dicho texto, - Una fila para el resultado de valores intermedios en la ejecucin de la instruccin, - Informacin de la ejecucin del cursor de la instruccin, - Informacin de control para instrucciones de ordenacin de datos. Areas de Software
1

El trmino cursor est asociado a la ejecucin de instrucciones SQL. La ejecucin de una instruccin SQL provoca la 'creacin de una tabla fictcia' sobre la que se opera, o consulta. El apuntador a cada una de stos registros que componen la tabla se denomina cursor. Diremos, pues que al iniciarse una instruccin SQL se abre un cursor, que es cerrado al finalizar la ejecucin de la misma. Un usuario es capaz de crear pues cursores de una manera implcita. El lector encontrar una mayor extensin acerca de la utilizacin de cursores explcitos en el captulo dedicado a la programacin de PRO*C.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 27

FUNCIONAMIENTO DE ORACLE Las reas de software proporcionan porciones de memoria de slo lectura, compartidas o exclusivas segn instalacin utilizadas para almacenar el cdigo que el usuario ejecuta. El cdigo contenido en cada uno de los cinco procesos background tambin ocupa espacio en dichas reas de memoria, aunque ste espacio ocupa un lugar protegido y exclusivo diferente al asignado a los usuarios. Estas reas estn asociadas al contenido de los ficheros programas de ORACLE vistos anteriormente. Memoria Virtual Dependiendo del sistema operativo sobre el que est instalado el producto ORACLE, ste puede utilizar parte de la llamada memoria virtual. Esta proporciona la ventaja de utilizar espacio de disco simulando espacio de memoria real o principal. El objetivo de ste apartado no es el de explicar el funcionamiento de la memoria virtual, sino simplemente hacer constancia de la existencia de ste tipo de estructura de memoria.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 28

FUNCIONAMIENTO DE ORACLE Estructura de Procesos Trataremos ahora la descripcin general de los tipos de procesos utilizados por el SGBD de ORACLE, su utilizacin, la implementacin actual y las opciones que nos ofrece el sistema operativo. Hablaremos de conceptos tales como los procesos de usuarios, los cinco procesos background utilizados por el sistema de usuarios y la diferencia de funcionamiento entre un sistema ORACLE funcionando en single-task o funcionando en two-task. Definimos un proceso como un mecanismo, dentro del sistema operativo sobre el que convive, capaz de ejecutar una serie de instrucciones en una rea, normalmente propia, de memoria. La estructura de procesos de un sistema define cuantos procesos pueden ejecutarse al mismo tiempo y como son ejecutados stos. Dicha estructura debe conseguir dos metas bsicas: - Simular un entorno privado en un entorno pblico de procesos, en donde todos ellos trabajan simultneamente y - Permitir que cada uno de los procesos comparta todos los recursos de la mquina sobre la que se ejecuta sin que ninguno de ellos hagan un uso individual de stos. En un sistema ORACLE existen diferentes tipos de procesos. Estos son: - Procesos de usuario, es decir, aquellos procesos que son utilizados directamente por un usuario o por las aplicaciones que ste ejecuta. - Procesos del servidor, aquellos invocados por otros procesos. Estos a su vez se dividen en: - Procesos sombra: asociados indefectiblemente a un proceso de usuario - Procesos background, compuesto por el conjunto de cinco procesos vistos anteriormente: SMON, PMON, DBWR, LGWR y ARCH, utilizados en un sistema multiproceso, no estn asociados a un proceso de usuario, aunque stos se sirven de los procesos background para realizar funciones contra la Base de Datos. Su ciclo de vida empieza al arrancar el SGBD y finaliza al hacerlo ste. Todos ellos sern descritos con mayor extensin en los siguientes puntos. Single-Task contra Two-Task La estructura de procesos del SGBD presenta dos variaciones principales dependiendo de s los programas que representan los procesos son compartidos o no.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 29

FUNCIONAMIENTO DE ORACLE Los procesos de usuario son creados cada vez que un usuario del sistema hace referencia a cualquier aplicacin que requiera conexin con ORACLE. Los procesos de usuario se comunican con la Base de Datos a travs del llamado program interface. En sistemas single-task, las aplicaciones del usuario, el ncleo de ORACLE y el program interface son todos ejecutados bajo un mismo proceso. Este ltimo es el encargado la proteccin del cdigo ejecutable de stos, as como del traspaso de datos entre el usuario y ORACLE. Bajo ste sistema solo se permite una nica conexin a la Base de Datos por proceso. Este sistema es utilizado cuando se requiere una clara separacin entre los programas de usuario y los de ORACLE, as como una integridad y privacidad de los datos que el sistema operativo no es capaz de asegurar.
Programa Usuario

Un Proceso para dos programas

Program Interface

Programa ORACLE

Figura 14. Single Task sobre un ordenador

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 30

FUNCIONAMIENTO DE ORACLE

Programa Usuario Proceso del Usuario Program Interface

Proceso Sombra

Programa ORACLE

Figura 15. Two Task sobre un ordenador Los sistemas two-task sitan los procesos sombra, aquellos generados a partir de los procesos de usuario de los que dependen, en diferentes procesos asociados. Para ello se utiliza el mecanismo de comunicacin entre procesos que ofrece el sistema operativo. De sta manera, cada proceso conectado a ORACLE tendr su propio proceso sombra. El sistema two-task es utilizado por el producto SQL*Net al ejecutar un programa en un ordenador cuya Base de Datos remota est situada en otra mquina externa a sta.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 31

FUNCIONAMIENTO DE ORACLE

Proceso del Usuario

Programa Usuario

Mquina Local Mquina Remota

Protocolo Program Comunicacin Interface

Proceso Sombra Programa ORACLE

Figura 16. Two Task sobre dos ordenador Instancias en Multiproceso contra Monoproceso El Gestor de la Base de Datos de ORACLE puede funcionar en cualquiera de los modos expuestos en el ttulo anterior dependiendo del valor del parmetro SINGLE_PROCESS (true false) dentro del fichero de configuracin INIT.ORA. Veamos las peculiaridades de cada uno de los modos de procesamiento que presenta el Gestor. El monoproceso, o tambin llamado nico usuario, permite la entrada a la Base de Datos de un nico usuario. As la entrada de ms de un usuario de forma concurrente no est permitida. Aquellas instalaciones de ORACLE sobre sistemas operativos que no soporten dicha concurrencia deben hacerse en ste modo (p.e. MS-DOS). Por ello stas instalaciones son tambin 'monoinstanciales', la Base de Datos no puede ser consultada por dos o ms instancias a la vez. El multiproceso es aquel que permite el acceso de dos o ms usuarios contra la Base de Datos de una manera concurrente. ste modo requiere de la puesta en marcha de los cinco procesos que anteriormente hemos llamado procesos background. La funcin de stos es la de mejorar el sistema de manera que se permita un acceso concurrente y fiable a Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 32

FUNCIONAMIENTO DE ORACLE la Base de Datos, por ello cada una de las instancias se sirve de stos procesos para realizar dicha concurrencia. Veamos de manera separada cada uno de stos procesos:
DBWR: Database Writer

Est encargado de escribir aquellas modificaciones provocadas en los bloques existentes en el buffer de la Base de Datos. El algoritmo que sigue dicho proceso asegura la existencia de los bloques que ltimamente han sido consultados, escribiendo aquellos bloques que no son consultados frecuentemente; de sta mantiene los bloques con aquella informacin que ms recientemente ha sido requerida y escribe los bloques que no son requeridos.
LGWR: Log Writer

Se ha dicho con anterioridad que la finalizacin de una transaccin mediante un COMMIT no aseguraba la escritura fsica del bloque correspondiente a disco, sino que es el proceso DBWR el encargado de dicha tarea (siguiendo el llamado algoritmo). El proceso LGWR permite la actualizacin de las modificaciones que realiza una transaccin en los ficheros de trazas a partir de las modificaciones anotadas en el buffer de redo. La terminacin de dicha transaccin en COMMIT provoca la escritura de las anotaciones realizadas en el buffer sobre el fichero de traza on-line que es el momento de la escritura est activo.
SMON: System Monitor

Este proceso se encarga de la recuperacin de instancias en caso de error. Por ello, ste es referenciado por aquellos procesos que los requieran.
PMON: Process Monitor

El proceso PMON acta en caso de errores en procesos de usuarios. Est encargado de liberar aquellos recursos utilizados por los usuarios. Por ello resetea la tabla de transacciones activas, modifica los bloqueos entre tablas y elimina los procesos que ya no actan.
ARCH: Archiver

Est encargado de realizar copia a cinta (u otro medio) de aquellos ficheros de traza on-line cuando stos se llenan siempre que est habilitado el modo ARCHIVELOG. Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 33

FUNCIONAMIENTO DE ORACLE

El Program Interface El program interface acta como interface entre los programas de usuario (aplicaciones, programas batch, etc ...) y los programas de ORACLE. Las funciones principales de ste son: - Asegurar una barrera de seguridad, previniendo la Base de Datos de accesos destructivos de procesos de usuarios no deseados, - Actuar como un mecanismo de comunicaciones entre los procesos de usuario y la Base de Datos, transformando y traduciendo datos y errores de sta entre posiblemente ordenadores diferentes y aplicativos con tipo de datos distintos, - Formatear la informacin requerida de la Base de Datos, traduciendo y devolviendo errores. Por ello, decimos que el program interface es un nivel, o 'capa' situada entre la Base de Datos y los aplicativos de los usuarios. La estructura viene definida a partir de estructuras bsicas, entre las que pueden distinguirse las siguientes: - UPI, User Program Interface (Program Interface del Usuario), - OPI, ORACLE Program Interface ( Program Interface de ORACLE), - Drivers, por ejemplo de comunicaciones, - Software de Comunicaciones propio del sistema operativo, - OCI, ORACLE Call Interface (Call Interface de ORACLE), - SQL, Interface del Precompilador de SQL.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 34

FUNCIONAMIENTO DE ORACLE Usuarios, Seguridad de Acceso. Hasta ahora hemos hablado de los elementos esenciales que integran el SGBD, pero es precisamente la presencia de los usuarios lo que activa la maquinaria del producto ORACLE. Obviamente, sin la existencia de dichos usuarios no se justificara de ningn modo la presencia de todas las estructuras vistas anteriormente. En ste captulo distinguiremos la accesibilidad de los usuarios respecto a la Base de Datos y de stos hacia cada uno de los objetos definidos en sta. Usuarios y Base de Datos Empezaremos por definir los tipos de acceso que se le otorga a un usuario, la manera en que se puede cambiar los atributos de ste y un procedimiento til a seguir para la creacin de los usuarios de la Base de Datos. Una de las tareas encomendadas al Administrador de la Base de Datos es la de permitir la entrada a aquellos usuarios que deban tener acceso a sta de una manera controlada. Para ello, el usuario debe tener un nombre de usuario y una contrasea de entrada definida en la Base de Datos ORACLE. Una vez creado el usuario, ORACLE define una serie de prioridades que pueden ser otorgadas a stos. Dichas prioridades marcan el tipo de acceso que un usuario puede realizar a la Base de Datos. La informacin referente a dichos privilegios, as como aquella asociada a cada usuario, queda almacenada en el diccionario de la Base de Datos, y por ello en ste tenemos informacin acerca de: - El tipo de acceso del usuario a la Base de Datos, es decir acceso del tipo CONNECT, RESOURCE o DBA, - Tablespace por defecto asociado al usuario, y por ello tablas, ndices, etc. ... asociados a dicho tablespace, - tablespace temporal para la ejecucin de aquellos procesos que los requieran, - Cuota de tablespace mxima de utilizacin dentro del tablespace. Como hemos visto anteriormente, es posible asociar un privilegio a cada uno de los usuarios de la Base de Datos, de manera que ste le permite realizar una serie de acciones u otras en funcin de dicho privilegio. En ORACLE es posible definir hasta tres tipos de entrada diferentes a la Base de Datos cada uno de ellos con unas peculiaridades. Veamos cada uno de ellos: - Usuarios con privilegio CONNECT: a un usuario con ste tipo de privilegio slo le es permitido una conexin simple a la Base de Datos. De sta manera, dicho usuario podr ejecutar cuantas transacciones requiera siempre que sean del tipo: Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 35

FUNCIONAMIENTO DE ORACLE - Conexin a la Base de Datos (CONNECT), - Consultas con tablas, vistas de otros usuarios, (SELECT) siempre que dichos objetos tengan uso pblico o uso privado definido para dicho usuario (veremos posteriormente los privilegios que pueden tener los objetos de la Base de Datos), - Realizar operaciones de modificacin e insercin (UPDATE, INSERT) contra objetos de la Base de Datos con privilegios para ello, - Crear objetos propios tales como vistas, sinnimos y enlaces a Bases de Datos externas. Sin embargo, no podr crear tablas, clsters, secuencias o ndices. Aquellos usuarios que convivan en un entorno con ms de una Base de Datos debern tener el privilegio CONNECT en cada una de las Bases de Datos en donde deseen acceder. - Usuarios con privilegio RESOURCE: los usuarios con el privilegio RESOURCE adquieren automticamente los privilegios anteriormente vistos. Adems, ste privilegio permite la posibilidad de crear aquellos objetos de la Base de Datos que no es posible crear con el privilegio anterior, es decir crear tablas, clsters, secuencias e ndices. El privilegio RESOURCE puede darse de tres maneras diferentes: - Sin restricciones de acceso a ninguna de las tablas de la Base de Datos, - Restringiendo el acceso a aquellas tablas de la Base de Datos asociadas a un tablespace, - Especificando una cuota de espacio para aquellas tablas pertenecientes a un tablespace. La manera normal de operar, y la que asegura una proteccin a la Base de Datos es la permitir a todos los usuarios un acceso con CONNECT a toda la Base de Datos, y asociar a los tablespaces requeridos el privilegio de RESOURCE a los usuarios que lo soliciten. - Usuarios con privilegio DBA: los usuarios con el privilegio DBA tienen asegurados los privilegios anteriores. Adems pueden realizar las siguientes operaciones: - Acceder a cualquier tabla existente en la Base de Datos y ejecutar cualquier instruccin SQL sobre sta, - Dar y/o eliminar los privilegios sobre objetos existentes a cualquiera de los usuarios, - Crear sinnimos de uso pblico, - Crear y/o modificar tablespaces, as como operar con ellos (poner en on/off-line, realizar copia de seguridad de un tablespace, etc. ...). Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 36

FUNCIONAMIENTO DE ORACLE

Aunque el nmero de usuarios DBA en un sistema ORACLE no est restringido, no es correcto que dicho nmero sea ilimitado por razones obvias. Por defecto, las instalaciones de ORACLE vienen configuradas con dos usuarios del tipo DBA, los usuarios SYSTEM y SYS. Es importante que tanto los privilegios como las caractersticas de stos no sean alterados. Es posible modificar los privilegios que a un usuario se le han otorgado, ya sea para incrementar las operaciones que ste puede realizar, como para disminuirlas. Existen otros atributos asociados a un usuario, alguno de ellos vistos anteriormente. Estos son: - El tablespace por defecto al sobre el que un usuario trabaja, y por tanto sobre el que crear sus objetos, - El tablespace temporal por defecto de dicho usuario, - La cuota de espacio permitida a un usuario sobre un tablespace. - Definiendo un usuario con el prefijo OPS$ en el nombre de un usuario, permitiremos un acceso directo2 a la Base de Datos de ste, tomando el nombre de usuario de sistema operativo. Es decir un usuario de sistema operativo llamado alfonso tendr acceso directo siempre que exista en la Base de Datos un usuario llamado ops$alfonso. Por todo ello, seguiremos el siguiente procedimiento para crear un usuario en la Base de Datos ORACLE: 1- Decidir el nombre y contrasea inicial del usuario, 2- Decidir si dicho usuario es de acceso directo, por ello aadiremos al nombre del usuario el prefijo OPS$, 3- Si el usuario va a crear objetos, identificar sobre que tablespace realizar dichas operaciones de creacin de objetos. Identificar el tablespace temporal que dicho usuario utilizar, 4- Decidir el tipo de acceso, as como la cantidad de espacio permitido sobre cada tablespace, 5- Permitir el privilegio RESOURCE sobre el tablespace requerido, con la cuota de espacio necesario, as como marcar el tablespace temporal que utilizar (segn pto. 3), 6- Informar al usuario de su nombre de usuario, password y si es de acceso directo o no. Usuarios y los Objetos de la Base de Datos
2

Acceso directo a la Base de Datos indica que podemos omitir la entrada de nombre_usuario/password en cualquier producto ORACLE simplemente pulsando Intro/Intro en cada una de ellas.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 37

FUNCIONAMIENTO DE ORACLE Este apartado est especialmente indicado a aquellos usuarios a los que se les ha asignado el privilegio DBA ya que ste explica, entre otras, los posibles accesos que puede realizarse hacia un objeto. Como ya es sabido, un objeto tiene como caracterstica principal la del propietario, es decir, la persona que cre dicho objeto (mediante la instruccin CREATE TABLE, INDEX, VIEW, etc.). Este propietario, en principio, est autorizado al acceso de todos los datos que representa dicho objeto (es decir, acceso a todas las filas y columnas) y a conceder acceso parcial o total a otros usuarios (mientras que un usuario del tipo DBA no se quite sta propiedad sobre el objeto determinado). Veamos los tipos de accesos que es posible definir a partir de la instruccin que permite otorgar dichos accesos:
GRANT SELECT, UPDATE, INSERT, DELETE, INDEX ON objeto TO usuario WITH GRANT OPTION

Ello nos indica los tipos de acceso que es posible otorgar a un usuario no propietario de un objeto. Por ello diremos que los usuarios podrn consultar, modificar y aadir filas o borrarlas (SELECT, UPDATE, INSERT, DELETE respectivamente) sobre un objeto segn el acceso que se haya definido sobre l. El parmetro WITH GRANT OPTION indica que el usuario, a su vez, puede otorgar accesos a otros usuarios. El acceso INDEX indica el uso, en caso de que existan, de los ndices asociados al objeto. Este tipo de acceso est definido especialmente sobre tablas y vistas. Existen algunas restricciones tales como: - No es posible ejecutar instrucciones del tipo UPDATE, INSERT o DELETE sobre vistas que estn basadas en expresiones, joins o operadores de conjunto (UNION, INTERSECT, etc. ...), - Los propietarios de una vista B basada en una tabla A no pueden otorgar a su vez acceso a otros usuarios en la vista B si no poseen el privilegio sobre la tabla A. La instruccin GRANT permite, adems, otorgar un acceso parcial a las columnas que el objeto representa. De sta manera, es posible ejecutar la instruccin:
GRANT SELECT, UPDATE, ... REFERENCES (columna_1, columna_2, ...) ON objeto TO usuario WITH GRANT OPTION

Obviamente, el uso de las opciones DELETE y REFERENCES son incompatibles, as como cualquiera de las opciones UPDATE, INSERT, DELETE, INDEX sobre secuencias. Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 38

FUNCIONAMIENTO DE ORACLE

De la misma manera que es posible definir GRANTs sobre objetos, es posible revocar dicho acceso sobre los mismos. La instruccin:
REVOKE SELECT, UPDATE, INSERT, DELETE, INDEX ON objeto

permite dicha accin.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 39

FUNCIONAMIENTO DE ORACLE La Estructura de Datos Ejemplo. Veamos lo anteriormente expuesto en un ejemplo prctico. Esta podra ser la estructura de datos simple de una empresa que haya elegido como gestor de Base de datos un entorno ORACLE: Estructura Lgica de la Base de Datos:
B. Datos
TABLESPACES OBJETOS SYSTEM TABLAS SISTEMA PERSONAL EMPLEADOS SALARIOS
CATEGORIAS ASISTENCIA

BASE DATOS EJEMPLO


... ... CONTABILIDAD ASIENTOS APUNTES CENTROS ... DE COSTE ... ... ADMINISTRACION FACTURAS RECIBOS CLIENTES ... ... IND_1 IND_3 INDICES IND_2 IND_N TEMPORAL ... ...

B.Datos
TABLESPACES OBJECTOS

BASE DATOS DESARROLLO APLICATIVOS


DESARROLLO_1 TABLAS DE PRUEBA PARA DESARROLLO DE PROGRAMAS

SEGMENTOS ROLLBACK

RS_BIG

RS_2

RS_3

RS_4

RS_5

RS_6

RS_7

RS_8

RS_9

RS_10

Estructura Fsica de la Base de Datos:


Ficheros de Base de Datos /home/oracle/dbs_1/system.dbf /home/oracle/dbs_1/personal.dbf /home/oracle/dbs_1/contabilidad.dbf /home/oracle/dbs_1/administracin_1.dbf /home/oracle/dbs_1/administracion_2.dbf /home/oracle/dbs_1/indices_1.dbf /home/oracle/dbs_1/indices_2.dbf /home/oracle/dbs_1/temporal.dbf /home/oracle/dbs_2/temporal.dbf /home/oracle/dbs_3/desarrollo.dbf Ficheros de Traza /home/oracle/dbs_t/trazas.dbf Montado en Disco Disco A Disco B Disco A Disco B Disco B Disco C Disco C Disco C Disco D Disco D Montado en Disco Disco C

Figura 13. Ejemplo de la Estructura Global de una Base de Datos Real. En sta se presentan seis tablespaces asociados a la Base de Datos Corporativa. Uno para cada una de las reas en que hemos dividido la empresa, y por tanto la Base de Datos asociada. Para ello hemos creado los tablespaces 'Personal', 'Contabilidad', 'Administracin'. Estos contendrn las tablas de datos asociadas a cada rea que representan, de sta manera, el primer tablespace 'Personal' contendr las tablas de 'Empleados', 'Categoras', 'Salarios', 'Asistencia', etc. ..., el segundo, las tablas de 'Asientos', 'Apuntes', 'Centros de Coste', etc. ... Se ha reservado un tablespace 'Indices' al Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 40

FUNCIONAMIENTO DE ORACLE que se le han asociado los ndices de las tablas de los tablespaces anteriores. El tablespace 'Temporal' contiene todos aquellos objetos utilizados en la Base de Datos que no estn representados en ningn tablespace particular y que sean utilizados de manera temporal, por ejemplo tablas de datos e ndices utilizados por procesos batch, etc. ... . De sta manera los accesos a las tablas, y por tanto a sus ndices se reparten de una manera ms uniforme a lo largo del disco ya que debemos tener en cuenta que el acceso a un registro de una tabla que tiene asociado un ndice supone el acceso a un registro de ndice para cada uno de los ndices definidos para la tabla.

Bartomeu Vives Sans , 1999 4003 Laboratori de software de gesti Curs 2006/2007 Pag 41

Você também pode gostar