Professional Documents
Culture Documents
INNOVA Desarrollos Informticos, SL Paseo Mallorca, 34 Entlo C 07012 Palma Tel. 971 72 92 13
INTRODUCCIN
Prlogo
Hoy en da nadie discute sobre las ventajas de utilizar bases de datos para el almacenamiento de la informacin. Por ello resulta imprescindible conocer el funcionamiento general de las bases de datos, de forma que el programador sea capaz de obtener el mximo rendimiento posible a sus aplicaciones, rendimiento que por otra parte se ver recompensado en una mayor calidad de las aplicaciones en cuanto a rendimiento y estabilidad de cara a los usuarios.
Pg. 3
NDICE
INTRODUCCIN ................................................................. 3
Prlogo............................................................................................................... 3 Metodologa del mdulo.................................................................................. 3 Evaluacin del mdulo .................................................................................... 3
Pg. 4
Duracin de imparticin
12 Horas
Meta
El objetivo es conseguir que al finalizar, el alumno sea capaz de entender los conceptos bsicos de bases de datos, en cuanto a estructura, diseo y funcionamiento.
Bibliografa
Oracle 8i Concepts. Documentacin interna de INNOVA.
Pg. 5
Objetivos especficos
Entender porque se debe utilizar bases de datos. Definir a grandes rasgos la estructura de una base de datos en todos sus apartados.
Contenidos
1.1 Definiciones 1.2 BD frente a ficheros 1.3 Objetivos de una organizacin de BD 1.4 Abstraccin de datos. Niveles de Descripcin 1.5 Estructura de la BD 1.5.1 Estructura fsica 1.5.2 Estructura lgica 1.5.3 Estructura de memoria y procesos 1.5.4 Diccionario de datos 1.6 Concurrencia y Consistencia de datos 1.7 Procesos Distribuidos y BD Distribuidas 1.8 Lenguajes que intervienen en una BD 1.9 El SGBD 1.10 Acceso a la base de datos Oracle 1.11 Comandos SQL *Plus
Pg. 6
Cuaderno de notas
Pg. 7
Pg. 8
Actividades
Sesiones totalmente tericas que garanticen la correcta comprensin de los conceptos fundamentales, combinadas con sesiones prcticas de SQL Plus.
Pg. 9
1.1
Definiciones
Base de Datos: Es una coleccin de datos interrelacionados almacenados en conjunto, sin tener ninguna clase de redundancia innecesaria, de forma que sean independientes de los programas que acceden. Sistema de Bases de Datos: Es un sistema de mantenimiento de registros basado en ordenadores, es decir, un sistema cuyo propsito general es registrar y mantener informacin. Tal informacin puede estar relacionada con cualquier cosa que sea significativa para la organizacin donde el sistema opera, es decir, cualquier dato necesario para los procesos de toma de decisin inherentes a la administracin de esa organizacin. Posee 4 partes fundamentales: SGBD
USUARIOS
Informacin: Est integrada y es compartida por varios usuarios. Equipo: Entendido como el conjunto de los diversos dispositivos fsicos donde reside la base de datos, tales como discos duros, unidades de control, buses de acceso, la memoria, etc. Programas: Entre ellos destaca el SGBD (Sistema Gestor de Base de Datos), este software ejecuta todas las solicitudes de acceso a la base de datos formuladas por los usuarios. La funcin principal del SGBD es por lo tanto, la proteccin y control de la base de datos. Usuarios: Se consideran tres grandes tipos de usuarios: Programador de aplicaciones: Es el encargado de escribir programas de aplicacin que utilicen la base de datos, por lo general en un lenguaje de alto nivel. Estos programas de aplicacin operan con la informacin de la base de datos, creando datos nuevos, modificando algunos existentes, o eliminando los innecesarios o ya obsoletos.
Pg. 11
Usuarios finales: Son aquellos que acceden a la base de datos, bien sea a travs de los programas de aplicacin o bien mediante el SQL interactivo. Administrador de la base de datos: Lleva a cabo las tareas de configuracin, mantenimiento y administracin de la base de datos, tales como tunning, copias de seguridad, etc.
1.2
BD frente a ficheros
El primer punto a plantear es por qu debemos utilizar bases de datos en lugar de los sistemas de ficheros clsicos. La respuesta general a esta pregunta es que un sistema de base de datos proporciona un control centralizado de sus datos. La alternativa es disponer de diferentes ficheros asociados a cada aplicacin, de modo que los datos se encuentran dispersos, y son ms difciles de controlar. Los sistemas de ficheros presentan una serie de carencias que las BD solucionan, los principales son: Redundancia de datos: Si cada aplicacin mantiene sus propios ficheros, lo normal es que determinadas informaciones se encuentren duplicadas, con el consiguiente desperdicio de espacio y la inevitable inconsistencia de datos. En bases de datos se evita al mximo la repeticin innecesaria de datos. Inconsistencia de datos: Si los datos se encuentran duplicados, y stos se modifican, esa modificacin se produce slo parcialmente en los ficheros asociados a una de las aplicaciones, con lo que dos entradas determinadas de dos aplicaciones diferentes pueden, en un momento dado, no concordar. En una base de datos se evita la inconsistencia. Comparticin de datos: En un fichero compartir los datos es algo muy complicado, cosa que no sucede en las bases de datos, stas pueden permitir el acceso concurrente de varias personas a la misma informacin. Dificultad para acceder a los datos: En un fichero los datos slo pueden ser accedidos mediante un programa especfico. Problemas de seguridad: Para proteger la informacin en un fichero hay que recurrir a programas de terceros, pero en una BD pueden asignarse privilegios de acceso a la informacin por usuarios.
Pg. 12
1.3
1.4
Pg. 13
1.5
Estructura de la BD
Una base de datos se divide en la estructura fsica y lgica, al estar separada una de otra, el almacenamiento fsico de los datos puede ser gestionado sin que afecte al acceso lgico de la estructura de datos.
1.5.1
Estructura fsica
Viene determinada por ficheros del sistema operativo que constituyen la base de datos. En Oracle cada base de datos est formada por tres tipos de ficheros: Ficheros de datos: Almacenan todos los datos de la BD, incluyendo la estructura lgica. Ficheros redo log: Estos ficheros slo se utilizan en caso de tener que recuperar la BD de una cada del sistema. En estos ficheros se almacenan los cambios realizados en los datos antes de almacenarlos de forma permanente en los ficheros de datos. Ficheros de control: Almacenan la informacin relativa a la estructura fsica de la BD. En l se almacena el nombre de la BD, el nombre y la localizacin de los ficheros de datos y los ficheros redo log.
1.5.2
Estructura lgica
Una base de datos Oracle est formada por: Uno o ms Tablespaces: Una base de datos est dividida en unidades lgicas de almacenamiento llamadas Tablespaces. stos se usan para mantener agrupados los distintos objetos de una aplicacin. Schema Objects: Un Schema es una coleccin de los objetos de base de datos que estn disponibles para un usuario. Por otra parte los Schema Objects son las estructuras lgicas que hacen referencia directa a los datos. Entre ellos estn las tablas, vistas, secuencias, procedimientos almacenados, sinnimos, ndices, etc. No existe ningn tipo de relacin entre los Tablespaces y los Schema, los objetos de un Schema pueden residir en diferentes Tablespaces, y un Tablespace puede almacenar objetos de diferentes Schema.
Pg. 14
Data Blocks: En el nivel ms bajo de almacenamiento Oracle guarda los datos en los llamados Data Blocks. Un Data Block se corresponde con un nmero especfico de bytes de espacio fsico de base de datos en el disco. Extents o extensiones: Son el siguiente nivel de espacio lgico en base de datos. Estn formados por un nmero especfico de Data Blocks contiguos. Se utilizan para almacenar un tpo especfico de informacin. Segments o segmentos: El nivel lgico de almacenamiento de base de datos que est por encima de las extensiones son los segmentos. A continuacin se describen los diferentes tipos de segmentos: Data Segment: Todos los datos de las tablas se almacenan en las extensiones del Data Segment. Index Segment: Cada ndice tiene un Index Segment que almacena en l todos los datos. RollBack Segment: Este tipo de segmentos son creados por el administrador, en ellos se almacena de forma temporal la informacin que permite cancelar una accin. Esta informacin se utiliza para permitir que la lectura de datos sea consistente; durante la recuperacin de una base de datos y para cancelar las transacciones de los usuarios no confirmadas.
Pg. 15
Temporary Segment: Cuando la ejecucin de una sentencia SQL necesita un rea de trabajo temporal, Oracle crea los Temporary Segments para poder completar su ejecucin. Una vez finalizada vuelven a quedar libres para su uso futuro. Oracle asigna el espacio dinmicamente cuando las extensiones estn llenas, por ello medida que se van llenando reserva otra extensin del mismo segmento. Debido a que Oracle reserva el espacio a medida que lo necesita, las extensiones de un segmento pueden no estar contiguas en el disco. 1.5.3
Pg. 16
1.5.3.1
Cada instancia de base de datos tiene su propia rea global de sistema, si tenemos en cuenta que stas son compartidas por todos los usuarios que se conectan, parece evidente que para incrementar el rendimiento, el SGA debe ser tan grande como sea posible, pero solo ser cierto siempre y cuando permanezca en memoria de modo que se puedan evitar al mximo los accesos a disco. Los parmetros que ms influyen en el tamao del SGA y por tanto en el rendimiento de Oracle son: db_block_size db_block_buffers log_buffer shared_pool_size La informacin almacenada en el SGA se divide en varios tipos de estructuras de memoria, los cuales tienen un tamao fijo y son creados cada vez que se inicia la instancia de base de datos.
Pg. 17
Database Buffer Cache: Almacenan los bloques de datos que se hayan utilizado recientemente, tanto si se han modificado como si permanecen intactos. Redo Log Buffer: Almacenan los cambios que se han hecho en la base de datos. Todos los datos almacenados en los Redo Log Buffer, siempre se almacenan en los Redo Log Files que estn activos. Shared Pool: Es una porcin del SGA que contiene construcciones de memoria compartidas. Por ejemplo las reas compartidas de SQL. Large Pool: Es una rea opcional en el SGA que provee una gran cantidad de memoria que se utiliza en operaciones de backup, restore y otros procesos del servidor que requieran de ella. Statement Handles or Cursor: Un cursor no es ms que un puntero que permite acceder a porciones de memoria que estn asociadas a una expresin concreta.
1.5.3.2
Pg. 18
1.5.4
Diccionario de datos
El diccionario de datos es una de las partes ms imporantes de las bases de datos de Oracle, est formado por un conjunto de tablas que contienen informacin relacionada con la base de datos. Entre est informacin destaca: La definicin de absolutamente todos los Schema Objects en la base de datos. El espacio necesario para los Schema Objects y el espacio real utilizado. Los valores por defecto de las columnas. Informacin sobre las restricciones de integridad. Los usuarios Oracle. Los privilegios y roles que posee cada usuario. Informacin de auditoria. Los datos del diccionario son: Base tables: Son tablas que contienen informacin relativa a la base de datos. Solo Oracle debe escribir o leer de estas tablas, por norma general los usuarios no suelen acceder directamente. Vistas accesibles al usuario: Contiene informacin visible y resumida de los datos almacenados en las Base Tables. Debido a la estructura de Oracle el diccionario de datos debe pertenecer a un usuario, este es el usuario SYS. Ningn usuario Oracle debera poder modificar alguna fila o objeto del esquema SYS, ya que podra daar permanentemente la integridad del sistema.
Pg. 19
1.6
1.6.1.1
Concurrencia
En un sistema en el cual se permiten mltiples transacciones accediendo a la misma base de datos de forma simultnea es necesario mantener un control de concurrencia. El mecanismo para resolverlos es el bloqueo o lock. Bsicamente existen tres problemas relacionados con la concurrencia: Modificacin perdida: Si dos personas intentan modificar a la vez, la ltima en grabar machaca las modificaciones realizadas por la otra. Dependencia de una modificacin no confirmada: Se produce cuando por ejemplo se est consultando una factura, mientras se est registrando un cobro de sta que no se llegar a confirmar. Anlisis inconsistente: Cuando se realiza una consulta del saldo de facturas pendientes de cobro, mientras se estn cobrando algunas de ellas. Bloqueos: Cuando una transaccin necesita garantizar que los datos que utiliza no sern modificados por ninguna otra transaccin, se adquiere un bloqueo sobre ellos. Oracle gestiona los bloqueos al nivel de registro. Pueden ser de dos tipos: Compartidos (C): Cuando varios usuarios acceden en modo lectura los mismos datos, automticamente se produce un bloqueo compartido, que previene la modificacin de los datos por un usuario que necesite escribir o modificar. En este tipo de bloqueos pueden realizarse varios bloqueos sobre los mismos recursos. Exclusivos (X): Se producen de forma automtica cuando se modifican los datos. La primera transaccin que bloquee un
Pg. 20
recurso de modo exclusivo ser la nica que pueda realizar modificaciones sobre el recurso hasta que se libere el bloqueo. Hay una serie de instrucciones propias del lenguaje para realizar los bloqueos, estas instrucciones son LOCK y UNLOCK, bloquean tanto de forma exclusiva como compartida (EXCLUSIVE, SHARED) toda una tabla completa. La utilizacin de estas instrucciones se suelen realizar cuando se producen procesos masivos. Por ejemplo: LOCK TABLE, cuando vayamos a modificar de forma masiva una tabla de precios, una vez finalizado el proceso desbloquearamos la tabla, UNLOCK TABLE. A la hora de modificar un dato y si se ha programado con un WAIT el SGBD te deja en modo de espera cuando se accede a un mismo objeto. Con un NO WAIT se puede salir de la accin cuando se quiera, este ltimo es la operacin ms habitual. Un problema que puede surgir es el DEADLOCK, que aparece al utilizar la opcin Wait en los bloqueos. Se produce cuando dos transacciones necesitan los datos de ambas para continuar. El siguiente grfico muestra de forma clara lo que sucede.
El SGBD de Oracle detecta automticamente las situaciones en las que se produce un Deadlock y lo soluciona haciendo Rollback de las sentencias involucradas en l.
Pg. 21
1.6.1.2
Consistencia
Oracle posee una serie de mecanismos que garantizan que la lectura de los datos sea siempre consistente: Garantiza que los datos recuperados en una sentencia sean consistentes respecto a un punto determinado en el tiempo y no cambien durante la ejecucin de la sentencia. Asegura que los usuarios que leen en la base de datos no tengan que esperar por otros usuarios que escriben o leen los mismos datos. Garantiza que los usuarios que escriben en base de datos slo deban esperar por aquellos usuarios que intenten actualizar los mismos registros en una transaccin concurrente, y no deban esperar por que haya gente accediendo en modo lectura a los datos. La solucin que aporta Oracle, a grandes rasgos, para garantizar la consistencia de la informacin es imaginar que cada usuario trabaja sobre una copia privada de la base de datos. Cuando una tabla es consultada y modificada al mismo tiempo Oracle, genera una copia consistente de los datos. Para ello copia los datos modificados en uno de los segmentos de Rollback de la base de datos, de modo que hasta que no se ha confirmado la operacin de actualizacin mediante un commit, cuando alguien consulta esos datos recupera la informacin original. Esto se consigue creando una vista sobre los datos de la tabla, para ello utiliza la informacin almacenada en el SGA y en los Rollback Segments. Solamente cuando se ha confirmado la operacin, los usuarios podrn consultar los datos ya modificados.
1.7
Pg. 22
Cuando hablamos de bases de datos distribuidas, nos encontramos ante una red de servidores de bases de datos que actan como una sola de forma lgica. Los datos almacenados en ellas pueden consultarse y modificarse simultneamente. En este tipo de sistemas la administracin de base de datos se realiza por separado en cada uno de los servidores.
1.8
1.9
SGBD
Es el conjunto de programas que gestionan todo el acceso a la BD. Para ello utiliza un complejo sistema de buffers que utiliza para el traspaso y visualizacin de la informacin. Por ejemplo: Cuando un usuario ejecuta una instruccin el SGBD interpreta la instruccin, si es correcta la ejecutar sino devolver un error. Las funciones principales del SGBD son: Definicin de los datos: Ha de permitir crear todo el modelo de la BD y a la vez instrucciones para manipular los datos. Optimizacin del acceso: Debe buscar el camino ms ptimo para realizar los accesos. Seguridad de los datos: Atendiendo a la seguridad que ha determinado el administrador de la BD debe encargarse de llevar a cabo la poltica de seguridad Recuperacin de datos: Cuando cae el sistema debe tener mecanismos de recuperacin de datos. Permitir acceso concurrente: Debe permitir a varios usuarios acceder a un mismo dato simultneamente. Gestin del diccionario de datos o repositorio: El repositorio incluye toda la base de datos propia de la configuracin del SGBD, tambin incluye los distintos mens, programas, etc. que realiza el usuario. El SGBD posee una serie de herramientas para facilitar la gestin de la base de datos, a grandes rasgos se pueden catalogar en herramientas de:
Pg. 23
Monitorizacin: Permite ver en un momento dado todo lo que se desee (informacin sobre HD, CPU, memoria...) Auditora: Graban todo lo que hacen los usuarios, por si existe un error saber lo que se ha hecho y como se ha producido el error. Exportacin: Permite volcar en un fichero de texto los datos y llevarlos a otra BD. Importacin: Se vuelcan los datos en la base de datos desde ficheros de texto. Estadstica: Informacin del porcentaje de crecimiento de las tablas. Reorganizacin: Permiten la reorganizacin de ndices y compactacin de datos.
1.10
1.11 1.11.1
Pg. 24
1.11.2
Comandos generales
Adems de ejecutar las sentencias propias de SQL, el intrprete permite utilizar comandos especiales para la edicin de las sentecias y otros aspectos de ayuda al desarrollador. Algunos ejemplos que pueden ser tiles son: DESCRIBE <Nombre_de_Tabla>: Lista los atributos (campos) de la tabla especificada en <Nombre_de_Tabla>. EDIT: Abre una ventana del editor por defecto de Windows (por lo general, el Bloc de Notas) con el contenido del buffer del SQL *Plus (la ltima sentencia editada). GET <Nombre_de_Fichero>: Abre el fichero especificado en <Nombre_de_Fichero> y lo inserta en el Buffer del SQL *Plus. START <Nombre_de_Fichero>: Ejecuta el contenido del <Nombre_de_Fichero> en SQL *Plus. SAVE <Nombre_de_Fichero>: Guarda el contenido del Buffer en el Fichero especificado en <Nombre_de_Fichero>. CLEAR BUFFER: Borra el Buffer del SQL *Plus.
1.11.3
Pg. 25
Si accedemos a la subopcin Define, podremos especificar el path de acceso a otro editor que no sea el que existe por defecto (bloc de notas). Una vez hayamos terminado de editar la sentencia, saliendo simplemente del editor, podemos ejecutar la sentencia mediante el comando RUN. Adems, una vez en el editor, podemos guardar la sentencia o conjunto de sentencias en un fichero, y luego podemos ejecutar el fichero con el comando START desde el SQL *Plus. 1.11.4
Pg. 26
Pg. 27
Autenticacin de usuarios
Para prevenir el uso no autorizado de la base de datos, Oracle proporciona tres mtodos para validar el acceso de los usuarios de base de datos: Autenticacin mediante el sistema operativo. Autenticacin mediante el servicio de red. Autenticacin mediante la base de datos. Estos tres mtodos pueden ser utilizados conjuntamente en la misma instancia de base de datos.
Privilegios y roles
Un privilegio es el derecho a ejecutar un tipo especfico de sentencia SQL o a tener acceso sobre los objetos de otro usuario. Un usuario puede recibir los privilegios de dos formas distintas: Concesin de privilegios directamente al usuario. Concediendo los privilegios a un rol (un rol es un conjunto de privilegios) y luego asignando ese rol a los usuarios que lo precisen. Existen dos tipos de privilegios: Privilegios de sistema: Es el derecho a realizar una determinada accin sobre cualquier objeto de esquema en la base de datos. Existen ms de 60 privilegios distintos de privilegios. Privilegios de objetos de esquema: Es el derecho a realizar una determinada accin sobre un objeto especfico. A continuacin se muestran los bsicos. - Select: Permite consultar los datos de una tabla o vista. - Update: Permite actualizar los datos de una tabla o vista. - Delete: Permite borrar los datos de una tabla o vista. - Insert: Permite insertar datos en una tabla o vista. - Alter: Permite modificar la definicin de una tabla o vista. - Index: Permite definir ndices sobre una tabla. Con los permisos de insert y update se puede restringir para unas columnas especficas de la tabla, de modo que cuando se realice una insercin en la tabla, las columnas sobre las que no tenga permisos recibirn el valor nulo. En el caso del update no se podrn actualizar aquellas columnas sobre las que no se tengan permisos.
Pg. 28
Las instrucciones SQL que permite otorgar o revocar permisos son grant y revoque respectivamente. La sintaxis que debemos utilizar para controlar los permisos son: Grant privilegios on tabla/vista to usuarios [with grant option]; Revoque privilegios on tabla/vista from usuarios; La clasula with grant option se utiliza para que el usuario o usuarios a los que se conceden los permisos puedan tambin otorgarlos. En caso que se otorgue ms de un privilegio stos debern separarse por comas, lo mismo sucede para los usuarios. Para realizar operaciones de otorgamiento o revocacin de permisos, tenemos la posilbilidad de utilizar la palabra public en lugar de nombrar a los usuarios, de esta forma se actuar sobre todos los usuarios. Por otra parte tambin existe la posibilidad de sustituir la lista de permisos por la palabra all de esta forma se trabajar con todos los permisos.
Pg. 29