Академический Документы
Профессиональный Документы
Культура Документы
Pg. 1
Curso 2012/2013
1.
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.
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.
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.
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
8.
Pg. 4
Curso 2012/2013
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
Pg. 5
Curso 2012/2013
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.