Está en la página 1de 5

Asignatura Administracin de Bases de Datos - Ingeniera Tcnica en Informatica de Gesyin/Sistemas

Depto. Organizacin y Estructura de la Informacin - E.U. Informtica UPM

Pg. 1
Curso 2012/2013

PRCTICA DE ADMINISTRACIN DE BASES DE DATOS


Una compaa de salud gestiona datos relativos a las consultas mdicas a pacientes por parte de mdicos
asociados a la compaa. Un da se produce un incendio en la sala donde se encuentra la base de datos. Tras el
incendio se pierde la base de datos y toda la documentacin relativa a la base de datos y procesos que accedan a
ella, excepto una versin del esquema de datos (Anexo 1). Afortunadamente el ABD almacenaba regularmente
copia de los datos en otro lugar, si bien, las copias que realizaba consistan en una exportacin de la base de
datos a ficheros texto. Se desconoce si el esquema de datos es consistente respecto de los datos de los ficheros
de texto. En caso de existir diferencias entre ellos, prevalecer siempre el esquema derivado del contenido de los
ficheros de texto, ya que corresponde a la ltima versin utilizada de la base de datos. Tras el incidente, la
empresa solicita nuestros servicios para recuperar la base de datos y realizar otra serie de acciones.
Se pide realizar una memoria que contemple los apartados que se detallan a continuacin, justificando para cada
apartado las soluciones planteadas. Para la realizacin de la prctica se utilizar el SGBDR Oracle 11g o bien
Oracle 10g, que se encuentra disponible en la web de Oracle (http://www.oracle.com/es/index.html).
Para crear la base de datos se nos proporcionan seis ficheros de texto con registros de longitud fija que
contienen una pequea cantidad del conjunto global de datos.

1.

CREACIN Y CARGA INICIAL DE LA BASE DE DATOS

Se pide realizar las siguientes acciones, creando los correspondientes ficheros script SQL cuando sea posible:
1. Creacin de la base de datos, de nombre PracABD.
2. Creacin de un nuevo usuario de nombre ABDDBA y contrasea abddba, con el que se realizarn todas
las acciones relativas a esta base de datos.
3. Estimacin del espacio fsico necesario para almacenar cada una de las tablas de la BD. A continuacin
crear y asignar a la BD los espacios fsicos (datafiles) y lgicos (tablespaces) que se estimen oportunos,
justificando la estimacin realizada. Crear un tablespace para cada tabla, algunos de ellos de tamao fijo y
de tamao menor que el estimado para la tabla. Otros que permitan incrementos pero tambin de tamao
menor (aadir si es preciso ms datafiles) y otros de tamao mayor que el estimado. Los nombres de
tablespaces y datafiles irn precedidos del nombre del usuario: ABDDBA_TBLS_nombretabla,
ABDDBA_DF_nombretabla respectivamente.
4. Creacin de las tablas de la BD en los espacios creados anteriormente.
5. Insertar los datos en las tablas a partir de los ficheros de texto proporcionados, mediante la utilidad
SqlLoader de Oracle, creando los ficheros ctl necesarios (ver el fichero proporcionado de ejemplo de carga
de datos con SqlLoader).
6. Definicin de las claves principales y forneas de las tablas, creando los siguientes cuatro scripts:
a) Creacin de las claves primarias de cada tabla (sentencia Alter Table Add Constraint...)
b) Creacin de las claves forneas (sentencia Alter Table Add Constraint...)
c) Borrado de las claves forneas de las tablas
d) Borrado de las claves primarias de las tablas
Deber justificarse si los ndices se deben crear antes o despus de hacer la carga de los datos, tendremos en
cuenta solamente los ndices creados automticamente por Oracle con la definicin de clave primaria y fornea.
Para ello, se medir el tiempo de ejecucin en cada uno de los casos. Por tanto, se deber obtener el tiempo de
ejecucin de las sentencias de los ficheros script, en la siguiente secuencia de los pasos definidos anteriormente:
1. ndices antes de la carga:
4, 6a, 6b, 5
2. ndices despus de la carga: 4, 5, 6a, 6b
Nota:
La definicin de clave principal o fornea lleva implcita la creacin automtica de un ndice.

Asignatura Administracin de Bases de Datos - Ingeniera Tcnica en Informatica de Gesyin/Sistemas


Depto. Organizacin y Estructura de la Informacin - E.U. Informtica UPM

2.

Pg. 2
Curso 2012/2013

ESTUDIO DE INDICES

En este apartado se realizar un estudio de ndices para la base de datos, reflejando en la memoria el proceso
seguido y los resultados obtenidos en la ejecucin de las sentencias que se acompaan en el Anexo 2:
a) Eliminar las claves forneas y principales de las tablas. Medir los tiempos de ejecucin de cada sentencia
del Anexo 2.
b) Crear las claves principales y forneas de las tablas. Medir los tiempos de ejecucin de cada sentencia del
Anexo 2.
c) Con las claves primarias y forneas creadas, determinar el conjunto de ndices candidatos para cada
sentencia del Anexo 2:
1. Crear ndices para los atributos candidatos (salvo para los que sean clave o figuren nicamente en la
clusula Select)
2. Determinar el tiempo despus de la creacin de cada ndice, de forma individual, y en combinacin
con otros ndices. Deber indicarse el tiempo de ejecucin y los ndices que estn activos en ese
momento. Para indicar los tiempos de ejecucin utilizar una plantilla similar a la siguiente tabla:
Clave
Primaria

Claves
Forneas

fecha_nac

ciudad

apellido1

Fecha_nac
ciudad
apellido1

Tiempo

.
.
.
.

d) En funcin de los tiempos obtenidos, debe especificarse qu ndices se consideran ms adecuados para que
cada sentencia se ejecute en el menor tiempo posible.
Notas:

1. Para establecer correctamente los tiempos de ejecucin de las sentencias, debe tenerse en cuenta que
tras la ejecucin de una consulta, todos o parte de los datos se encuentran en memoria principal.
2. La medicin de tiempos se realizar por sentencias individuales, no debe medirse la ejecucin de
varias sentencias a la vez.
3. Para cada sentencia del Anexo 2 se definir un mximo de cinco ndices distintos, adems de los
correspondientes a claves primarias y forneas.

3.

REORGANIZACIONES FSICAS DE LA BD

Analizar y documentar el estado actual de los tablespaces creados en la BD, tanto para datos de tablas como de
ndices. Indicar el tanto por ciento de llenado y el nmero de extensiones que tiene cada tablespace. Analizar el
espacio asignado inicialmente y el utilizado finalmente para cada tabla de la BD, justificando razonadamente las
conclusiones de dicho anlisis.
Realizar una reorganizacin fsica de la base de datos, comprobando si se producen mejoras de rendimiento en
relacin a las sentencias SQL del Anexo 2. Indicar los valores de almacenamiento para los espacios de la base
de datos antes y despus de las reorganizaciones. Organizar primeramente solo algunos de los objetos tabla y/o
ndice, y despus el esquema o algunos tablespaces completos.

4.

REORGANIZACIN LGICA DE LA BD

En este apartado se pide realizar reorganizaciones lgicas de la base de datos (cambios en el esquema lgico)
que permitan mejorar el rendimiento de la base de datos reduciendo el espacio de almacenamiento y/o los
tiempos de respuesta. Para ello se deber crear una nueva base de datos, o modificar la estructura de la existente.
Ejecutar las sentencias SQL que se estimen necesarias (incluidas o no en el Anexo 2) para establecer y justificar
el aumento o prdida de rendimiento de la reorganizacin efectuada respecto del diseo de partida.

Asignatura Administracin de Bases de Datos - Ingeniera Tcnica en Informatica de Gesyin/Sistemas


Depto. Organizacin y Estructura de la Informacin - E.U. Informtica UPM

5.

Pg. 3
Curso 2012/2013

AREA DE MEMORIA

Modificar el tamao del rea SGA, al mnimo que se permita y al mximo (o un valor alto). En ambos casos,
indicar en qu medida vara el rendimiento del gestor en las consultas definidas, respecto del valor actual y del
valor que aconseja Oracle. Y el tamao de PGA influye en la ejecucin de las consultas?
Los parmetros de SGA y PGA pueden modificarse desde el Enterprise Manager, en la ventana de
administracin, opcin Parmetros de memoria. Ojo! al bajar el valor de SGA la consulta puede pasar a
tardar bastantes minutos. Si al intentar restaurar los valores Oracle no lo permite, iniciar sesin como usuario
SYS con rol SYSDBA, y realizar la modificacin. Para analizar el rendimiento al variar los parmetros de
memoria utilizar nicamente una de las consultas del Anexo 2 ya ejecutada en los apartados anteriores,
comparando los resultados de las ejecuciones.

6.

CATLOGO DE LA BASE DE DATOS

Crear las siguientes vistas con informacin exclusivamente de las tablas creadas de la base de datos PRACABD
(es decir, excluyendo los objetos propios del catlogo), y efectuar despus una consulta sobre ellas mostrando
el resultado obtenido:
a) Por cada ndice: nombre del ndice, nombre de la tabla a la que indexa, y por cada atributo que
componga el ndice (si el ndice tiene ms de un atributo se visualizaran varias filas) el nombre, la
posicin que ocupa en la clave del ndice, el tipo de datos y la longitud en bytes del atributo.
b) Por cada ndice: nombre de la tabla a la que indexa, nombre del ndice, si est activo o no, y la
longitud total de la clave de ndice (para las tablas de la BD, excluyendo las del catlogo).
c) Informacin sobre estadsticas de cada tabla de la base de datos, incluyendo el nombre de la tabla, el
nmero de filas, longitud media de las filas, el nmero de bloques ocupados, nmero de bloques
vacos, y fecha de realizacin del ltimo anlisis.
La informacin del catlogo de una base de datos de Oracle puede obtenerse a partir de una serie de vistas que
Oracle define al crear la base de datos. Entre ellas, algunas de las que nos pueden interesar para resolver este
apartado, son:

dba_indexes
dba_ind_columns
dba_tab_columns
dba_tab_statistics

Para que el usuario ABDDBA pueda consultar estas vistas del catlogo ser necesario asignarle privilegios de
consulta sobre ellas. Por otra parte, para actualizar las estadsticas de una tabla concreta se debe ejecutar el
comando:
ANALYZE TABLE nombre_tabla COMPUTE STATISTICS FOR TABLE;

7.

SEGURIDAD

En este apartado comprobaremos la asignacin de privilegios a usuarios. Realizar lo siguientes pasos,


especificando en la memoria las sentencias ejecutadas y los resultados obtenidos:
a) Crear dos usuarios de nombre usuclinica y usugestor respectivamente.
b) Asignar a ususucursal todos los privilegios sobre las tablas paciente, medico, consulta y
atencion_medica.
c) Asignar a usugestor:
1. Todos los privilegios sobre las tablas clinica y personal_servicio.
2. Privilegio de consulta sobre las tablas medico y consulta.
3. Privilegio de modificacin del atributo salario de la tabla medico.
d) Acceder a la BD como usuario usuclinica, y ejecutar al menos dos sentencias sobre las que tenga
privilegios y otras dos sobre las que no lo tenga.
e) Acceder a la BD como usuario usugestor, y ejecutar al menos dos sentencias sobre las que tenga
privilegios y otras dos sobre las que no lo tenga.
f) Intentar crear con uno de estos usuarios, cualquier nuevo objeto sobre la BD, por ejemplo un ndice
sobre alguna tabla. Explicar el resultado

Asignatura Administracin de Bases de Datos - Ingeniera Tcnica en Informatica de Gesyin/Sistemas


Depto. Organizacin y Estructura de la Informacin - E.U. Informtica UPM

8.

Pg. 4
Curso 2012/2013

EJECUCIN CONCURRENTE DE TRANSACCIONES


Realizar un estudio detallado de la ejecucin de transacciones mediante dos sesiones de isqlplus y explicar
el resultado obtenido, con todas las opciones de bloqueo y modos de operacin permitidos. Ejecutar
concurrentemente dos transacciones utilizando la sentencia SQL SET TRANSACTION, cubriendo los
siguientes casos:
1. lectura-lectura
2. lectura-escritura
3. escritura-escritura
Cuando sea posible deber forzarse una situacin de interbloqueo entre las transacciones participantes en la
ejecucin.

ANEXO 1. ESQUEMA DE LA BASE DE DATOS


PACIENTE:
Atributo
CodPaciente
Dni
Nombre
Apellido1
Apellido2
Direccion
Ciudad
Telefono
Fecha_Nac
Medicamentos
Operaciones
Habitos

Tipo
Integer
Integer
Varchar (30)
Varchar (20)
Varchar (20)
Varchar (60)
Varchar (30)
Varchar (9)
Date
Varchar (100)
Varchar (100)
Varchar (50)

Restricciones
Clave primaria
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo

Tipo
Smallint
Integer
Varchar (30)
Varchar (20)
Varchar (20)
Varchar (60)
Varchar (5)
Varchar (9)
Varchar (9)
Varchar (9)
Decimal (8,2)
Varchar(6)
Date
Smallint

Restricciones
Clave Primaria
No nulo
No nulo
No nulo

Tipo
Smallint
Varchar(60)
Varchar(30)
Varchar (9)

Tipo
Integer
Varchar(10)
Varchar(2)
Varchar (20)
Smallint

Restricciones
Clave Primaria
No nulo
No nulo
No nulo
No nulo

PERSONAL_SERVICIOS:

No nulo
No nulo

Atributo
Cod_Personal
Dni
Nombre
Apellido1
Apellido2
Direccion
Ciudad
Telefono
Movil
Salario
Fecha_incorp
Puesto
Cod_Clinica

Tipo
Integer
Integer
Varchar (15)
Varchar (15)
Varchar (15)
Varchar (60)
Varchar (5)
Varchar (9)
Varchar (9)
Decimal (8,2)
Date
Varchar (10)
Smallint

No nulo

ATENCION_MEDICA:

Restricciones
Clave Primaria
No nulo
No nulo
No nulo

Atributo
CodPaciente
Cod_Medico
Cod_Consulta
Fecha
Hora
Motivo
Observaciones

CLINICA:
Atributo
Cod_Clinica
Direccion
Ciudad
Telefono

Atributo
Cod_consulta
Planta
Sala
Especialidad
Cod_Clinica

No nulo

MEDICO:
Atributo
Cod_Medico
Dni
Nombre
Apellido1
Apellido2
Direccion
Ciudad
Telefono
Movil
Num_Busca
Salario
Turno
Fecha_incorp
Cod_Clinica

CONSULTA:

Tipo
Smallint
Smallint
Smallint
Date
Varchar(5)
Varchar(12)
Varchar (100)

Restricciones
Clave Primaria
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo
No nulo

Restricciones
Clave Primaria
Clave Primaria
Clave Primaria
Clave Primaria
Clave Primaria
No nulo

Asignatura Administracin de Bases de Datos - Ingeniera Tcnica en Informatica de Gesyin/Sistemas


Depto. Organizacin y Estructura de la Informacin - E.U. Informtica UPM

Pg. 5
Curso 2012/2013

ANEXO 2. SENTENCIAS SQL


Consulta 1.
SELECT nombre, apellido1, apellido2, p.ciudad
FROM paciente p, atencion_medica a, consulta c
WHERE fecha_nac BETWEEN 01/01/1970 AND 31/12/1989
AND especialidad = Especialidad 5
AND p.cod_paciente=a.cod_paciente
AND a.cod_consulta=c.cod_consulta
ORDER BY apellido1, apellido2, nombre

Consulta 2.
SELECT dni, apellido1, apellido2, nombre, telefono, fecha_nac
FROM paciente p, atencion_medica a
WHERE fecha_nac < '01/01/1940' AND operaciones IS NULL
AND p.cod_paciente =a.cod_paciente
ORDER BY fecha_nac, ciudad, apellido1
Comprobar que solo se muestran filas que tengan un valor nulo en el atributo operaciones.

Consulta 3:
SELECT cod_clinica, especialidad, count(*)
FROM atencion_medica a, consulta c, medico m
WHERE motivo <> 'Motivo 6' AND turno = 'Maana' AND
a.cod_consulta = c.cod_consulta
AND
a.cod_medico = m.cod_medico
GROUP BY cod_clinica, especialidad
ORDER BY 3, especialidad

Consulta 4.
Definir una actualizacin (comando UPDATE), de manera que creando los ndices necesarios se
reduzca o se aumente el tiempo de ejecucin, indicando cul puede ser el motivo de la
reduccin o el aumento de tiempo.

NORMAS Y PLAZO DE ENTREGA


La prctica se realizar preferiblemente en grupo de dos personas. Para aprobar la prctica se deber:
A. Entregar y aprobar la memoria de la prctica, que incluir obligatoriamente:
1. Portada, especificando el nombre de la asignatura, el del autor y la fecha de entrega.
2. ndice con numeracin de los apartados, y el nmero de pgina donde se encuentren en la memoria.
3. Solucin a cada uno de los apartados solicitados. En ellos aparecer obligatoriamente el
planteamiento seguido para solucionarlo, las sentencias SQL utilizadas, as como una descripcin
de las opciones del gestor que se hayan ejecutado para la resolucin.
4. Conclusiones
La no inclusin de alguno de estos apartados supondr el suspenso automtico de la prctica.
La memoria se enviar por correo electrnico al profesor de la asignatura, antes del da 30 de mayo de
2013 para la convocatoria de junio, y del 4 de julio para la convocatoria extraordinaria de julio.
B. Aprobar el examen especfico de la prctica. El examen de prcticas tendr lugar el mismo da que el
examen de teora (3 de junio / 10 de julio). El examen de prcticas podr realizarse siempre y cuando se
haya entregado previamente la memoria de la prctica de la asignatura. Se recuerda que para aprobar la
asignatura es requisito indispensable tener aprobada la parte prctica.