Anda di halaman 1dari 12

UNIVERSIDAD TCNICA DE AMBATO

Facultad de Ingeniera en Sistemas, Electrnica e


Industrial

Ingeniera en Sistemas Computacionales e Informticos

Ttulo: Fragmentacin de una Base de


Datos en el SGBD Oracle

Carrera: Ingeniera en Sistemas


Computacionales e Informticos

rea Acadmica: Desarrollo de Software

Lnea de Investigacin: Base de Datos

Ciclo Acadmico y Paralelo: Octavo

Alumno: Landa Patricio

Mdulo y Docente: Administracin de Bases de


Datos Ing. Urvina Renato
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

I. INFORME DEL PROYECTO


1. YY
1.1 Ttulo
Fragmentacin de una base de Datos con Oracle Database 11g.

1.2 Objetivos
Creacin de Tablespaces en Oracle Database 11g.
Implementacin de la BD fsica a partir del MER proporcionado.
Realizar la fragmentacin de la Base de Datos implementada.

1.3 Resumen
Esta prctica est orientada a la fragmentacin de una base de datos, para lo cual
haremos uso de Oracle Database 11g Release 2 versin Enterprise el cual est
instalado en un entorno Windows en un inicio crearemos varios tablespaces en los
diferentes discos que tenemos configurados como RAID 10, llegaremos a la
implementacin de una base de datos proporcionado por el docente en cual se
ilustra en la Figura 1 a partir del cual generaremos el Modelo Relacional haciendo
uso de una herramienta case como Power Designer con el propsito de facilitar y
agilizar el trabajo, tambin se realizaran las pruebas respectivas para constatar que
el trabajo se haya llevado de la manera correcta.

1.4 Palabras clave: Fragmentacin, Particin, Tablespace, Oracle, Virtual.

1.5 Introduccin

Particionado de Tablas en Oracle


Bsicamente, el particionado se realiza utilizando una clave de particionado
(partitioning key), que determina en que particin de las existentes en la tabla van a
residir los datos que se insertan. Oracle tambin permite realizar el particionado de
ndices y de tablas organizadas por ndices. Cada particin adems puede tener sus
propias propiedades de almacenamiento. Las tablas particionadas aparecen en el
sistema como una nica tabla, realizando el sistema la gestin automtica de lectura
y escritura en cada una de las particiones (excepto para el caso de la particin de
Sistema introducida en la versin 11g).

Tipos de Particionado en Oracle


UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

Particionado Range: la clave de particionado viene determinada por un rango de


valores, que determina la particin donde se almacenara un valor.
Particionado Hash: la clave de particionado es una funcin hash, aplicada sobre una
columna, que tiene como objetivo realizar una distribucin equitativa de los
registros sobre las diferentes particiones. Es til para particionar tablas donde no
hay unos criterios de particionado claros, pero en la que se quiere mejor el
rendimiento.
Particionado List: la clave de particionado es una lista de valores, que determina
cada una de las particiones.
Particionado Composite: los particionados anteriores eran del tipo simples (single o
one-level), pues utilizamos un nico mtodo de particionado sobre una o ms
columnas. Oracle nos permite utilizar mtodos de particionado compuestos,
utilizando un primer particionado de un tipo determinado, y luego para cada
particin, realizar un segundo nivel de particionado utilizando otro mtodo. Las
combinaciones son las siguientes (se han ido ampliando conforme han ido
avanzando las versiones): range-hash, range-list, range-range, list-range, list-list, list-
hash y hash-hash (introducido en la versin 11g).

Particionado Interval: tipo de particionado introducido igualmente en la versin


11g. En lugar de indicar los rangos de valores que van a determinar cmo se realiza
el particionado, el sistema automticamente creara las particiones cuando se inserte
un nuevo registro en la b.d. Las tcnicas de este tipo disponible son Interval, Interval
List, Interval Range e Interval Hash (por lo que el particionado Interval es
complementario a las tcnicas de particionado vistas anteriormente).

Particionado por Referencia: El particionamiento por referencia permite que las


tablas relacionadas por claves forneas sean lgicamente equi-particionadas. La
tabla hija es particionada utilizando la misma clave de particin como la tabla padre
sin tener que duplicar las columnas de clave. Las operaciones de mantenimiento de
la particin realizadas en la tabla padre se reflejan en la tabla hija, pero operaciones
de mantenimiento de particin no estn permitidos en la tabla secundaria o tablas
hija.
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

Por ejemplo una tabla padre PEDIDOS es particionada por rango en la columna
PEDIDO_DATE; su tabla hija PEDIDO_ITEMS no contienen una columna
PEDIDO_DATE pero puede ser particionada en funcin de la tabla PEDIDOS.

1.6 Materiales y Metodologa

Partimos del Modelo Entidad Relacin (Figura 1).

Figura 1. Modelo Entidad Relacin

Obtenemos el Modelo Relacional diseado con Power Designer (Figura 2).


UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

Figura 2. Modelo Relacional

A partir de nuestro Modelo Relacional y haciendo uso de las funcionalidades de


Power Designer generaremos el cdigo SQL para implementarlo en el SGBD Oracle.

En el Sistema Operativo tenemos los discos configurados como RAID 10 esta parte
es un requisito para empezar a realizar la implementacin de nuestra base de datos
ya que los ficheros de los diferentes Tablespaces que vamos a crear se guardaran en
dichos discos segn elijamos guardar en uno u otro, en este caso como se trata de
un Sistema Windows los discos estn etiquetamos como la unidad G y D, los
Tablespaces requeridos para esta prctica y los discos donde sern almacenados
cada uno de estos se detallan a continuacin.

Nombre Tablespace Disco lgico


TN ld1 (G) 512MB

T1, T2, T3, TA, TB, TC, TV ld2 (D) 512MB

CREACION DE TABLESPACE

Sintaxis para la creacin de un tablespace simple, las partes marcadas en negrita


son las que deberemos de cambiar.

CREATE TABLESPACE [NOMBRE_TABLESPACE] DATAFILE '[PATH


ABSOLUTO]\NOMBRE_ARCHIVO.DBF' SIZE [TAMAO] ONLINE;

Ejemplo: Creacin del Tablespace requeridos.

CREATE TABLESPACE TN DATAFILE 'G:\TN.DBF' SIZE 2M ONLINE;


CREATE TABLESPACE T1 DATAFILE 'D:\T1.DBF' SIZE 2M ONLINE;
CREATE TABLESPACE T2 DATAFILE 'D:\T2.DBF' SIZE 2M ONLINE;
CREATE TABLESPACE T3 DATAFILE 'D:\T3.DBF' SIZE 2M ONLINE;
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

CREATE TABLESPACE TA DATAFILE 'D:\TA.DBF' SIZE 2M ONLINE;


CREATE TABLESPACE TB DATAFILE 'D:\TB.DBF' SIZE 2M ONLINE;
CREATE TABLESPACE TC DATAFILE 'D:\TC.DBF' SIZE 2M ONLINE;
CREATE TABLESPACE TV DATAFILE 'D:\TV.DBF' SIZE 2M ONLINE;

Una vez creados los tablespaces necesarios queda listo el ambiente para realizar la
implementacin de nuestra base de datos, cabe recalcar que la fragmentacin de las
tablas se especifica al momento de crearlas en la parte final de la sentencia de
creacin de tabla, tal como se detalla a continuacin.

Nota: Solo se ha considerado documentar la implementacin de aquellas tablas que


requieren ser particionadas o aquellas que se deben de almacenar en tablespaces
especficos.

TABLA AREA TIPO DE FRAGMENTACION


crea te table AREA ( Particin por valor:
DESCRIPCION VARCHAR2(200) not null,
cons traint PK_AREA pri mary key (DESCRIPCION)
) Base de Datos->TA
PARTITION BY LIST(DESCRIPCION)
(
Hardware y Redes->TB
PARTITION PBSD VALUES('BASE DE DATOS')
TABLESPACE TA,
PARTITION PREDES VALUES('HARDWARE Y REDES') Desarrollo Software->TC
TABLESPACE TB,
PARTITION PDESARROLLO VALUES('DESARROLLO
SOFTWARE') TABLESPACE TC, Default->TN
PARTITION PDEFAULTAREA VALUES(DEFAULT)
TABLESPACE TN);
TABLA CAMPUS
crea te table CAMPUS ( Particin por valor:
CODCAM INTEGER not null, CAMPUS
VARCHAR2(100) not null,
cons traint PK_CAMPUS pri mary key (CODCAM) Huachi->T1
)
PARTITION BY LIST(CAMPUS)
Ingahurco->T2
(
PARTITION P1 VALUES('HUACHI') TABLESPACE T1,
PARTITION P2 VALUES('INGAHURCO') TABLESPACE Querochaca->T3
T2,
PARTITION P3 VALUES('QUEROCHACA') TABLESPACE
T3, PARTITION PDEFAULT VALUES(DEFAULT) Default->TN
TABLESPACE TN
);
TABLA ASIGNATURA
crea te table ASIGNATURA ( Particin por Referencia:
CODAS VARCHAR2(5) not null,
CODCAM INTEGER not null,
DESCRIPCION VARCHAR2(200) not null, La entidad Asignaturas es particionada
NOMBRE VARCHAR2(100) not null, de acuerdo al valor del rea a la que
cons traint PK_ASIGNATURA primary key (CODAS),
cons traint FK_ASIGNATURA_CAMPUS FOREIGN pertenece.
KEY(CODCAM) REFERENCES CAMPUS(CODCAM) ON
DELETE CASCADE,
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

cons traint FK_ASIGNATURA_AREA FOREIGN


KEY(DESCRIPCION) REFERENCES AREA(DESCRIPCION)
ON DELETE CASCADE
)
PARTITION BY REFERENCE(FK_ASIGNATURA_AREA);
TABLA HOBBIE
crea te table HOBBIE ( Entidad que se almacenar en el
CIEST CHAR(10) NOT NULL,
DESCHOBBIE VARCHAR2(200), Tablespace TV.
CONSTRAINT FK_HOBBIE_ESTUDIANTE FOREIGN
KEY(CIEST) REFERENCES ESTUDIANTE(CIEST) ON
DELETE CASCADE
)TABLESPACE TV;
TABLA PSICOLOGICO
crea te table PSICOLOGICO ( Entidad que se almacenar en el
CIEST CHAR(10) NOT NULL,
DESCPSIC VARCHAR2(200), Tablespace TV.
CONSTRAINT FK_PSICOLOGICO_ESTUDIANTE
FOREIGN KEY(CIEST) REFERENCES
ESTUDIANTE(CIEST) ON DELETE CASCADE
)TABLESPACE TV;
TABLA SALUD
crea te table SALUD ( Entidad que se almacenar en el
CIEST CHAR(10) NOT NULL,
DESCSALUD VARCHAR2(150), Tablespace TV.
CONSTRAINT FK_SALUD_ESTUDIANTE FOREIGN
KEY(CIEST) REFERENCES ESTUDIANTE(CIEST) ON
DELETE CASCADE
)TABLESPACE TV;
TABLA FORMACIN
crea te table FORMACION ( Entidad que se almacenar en el
CI CHAR(10) not null,
ESPECIALIDAD VARCHAR2(100) not null, Tablespace TV.
NIVEL VARCHAR2(50) not null,
ANO INTEGER,
UNIVERSIDAD VARCHAR2(200) not null,
TITULO VARCHAR2(200) not null,
PAIS VARCHAR2(150) not null,
CONSTRAINT FK_FORMACION_DOCENTE FOREIGN
KEY(CI) REFERENCES DOCENTE(CI) ON DELETE
CASCADE
)TABLESPACE TV;
TABLA TELEFONO (DOCENTE)
crea te table TELEFONO ( Entidad que se almacenar en el
CI CHAR(10) not null,
NUMERO CHAR(10) not null, Tablespace TV.
CONSTRAINT FK_TELEFONO_DOCENTE FOREIGN
KEY(CI) REFERENCES DOCENTE(CI) ON DELETE
CASCADE
)TABLESPACE TV;
TABLA NOTAS
crea te table NOTAS ( Particin por Referencia:
CODAS VARCHAR2(5) not null,
CIEST CHAR(10) not null,
CI CHAR(10) not null, Las notas se particionarn de acuerdo
NOTA1 DOUBLE PRECISION, al valor de la asignatura y del rea a la
NOTA2 DOUBLE PRECISION, PROMEDIO
DOUBLE PRECISION que pertence.
GENERATED ALWAYS AS
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

(
(NOTA1+NOTA2)/2
)VIRTUAL,
CONSTRAINT FK_NOTAS_DOCENTE FOREIGN KEY(CI)
REFERENCES DOCENTE(CI) ON DELETE CASCADE,
CONSTRAINT FK_NOTAS_ESTUDIANTE FOREIGN
KEY(CIEST) REFERENCES ESTUDIANTE(CIEST) ON
DELETE CASCADE,
CONSTRAINT FK_NOTAS_ASIGNATURA FOREIGN
KEY(CODAS) REFERENCES ASIGNATURA(CODAS) ON
DELETE CASCADE
)
PARTITION BY REFERENCE(FK_NOTAS_ASIGNATURA);

INSERCCIN DE DATOS

Para la insercin de los datos no se han considerado todas las tablas solamente las
ms principales.

NOMBRE SENTENCIA SQL


TABLA
AREA INSERT ALL
INTO AREA VALUES ('BASE DE DATOS')
INTO AREA VALUES ('HARDWARE Y REDES')
INTO AREA VALUES ('DESARROLLO SOFTWARE')
SELECT * FROM dua l;
CAMPUS INSERT ALL
INTO CAMPUS VALUES (1,'HUACHI')
INTO CAMPUS VALUES (2,'INGAHURCO')
INTO CAMPUS VALUES (3,'QUEROCHACA')
SELECT * FROM dua l;
ASIGNATURA INSERT ALL
INTO ASIGNATURA VALUES ('ASG1',1,'DESARROLLO SOFTWARE','DESARROLLO DE
SOFTWARE IV')
INTO ASIGNATURA VALUES ('ASG2',2,'BASE DE DATOS','ADMINISTRACION DE BASE DE
DATOS')
INTO ASIGNATURA VALUES ('ASG3',3,'HARDWARE &REDES','ADMINISTRACION DE
SISTEMAS OPERATIVOS Y REDES')
SELECT * FROM dua l;
ESTUDIANTE INSERT ALL
INTO ESTUDIANTE VALUES
('1804600912','RUIZ','JORGE',to_date('19960725','YYYYMMDD'))
INTO ESTUDIANTE VALUES
('1804600913','ALMACHE','CARLOS',to_date('19950625','YYYYMMDD'))
INTO ESTUDIANTE VALUES
('1804600914','PICO','ALFREDO',to_date('19940712','YYYYMMDD'))
SELECT * FROM dua l;
HOBBIE INSERT ALL
INTO HOBBIE VALUES ('1804600912','MONTAR A BICICLETA')
INTO HOBBIE VALUES ('1804600913','ESCUCHAR MUSICA')
INTO HOBBIE VALUES ('1804600914','VER TELEVISION')
SELECT * FROM dua l;
PSICOLOGICO INSERT ALL
INTO PSICOLOGICO VALUES ('1804600912','Embeleso')
INTO PSICOLOGICO VALUES ('1804600913','Normopatia')
INTO PSICOLOGICO VALUES ('1804600914','Compulsin a la repeticion')
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

SELECT * FROM dua l;


SALUD INSERT ALL
INTO SALUD VALUES ('1804600912','BUENA SALUD')
INTO SALUD VALUES ('1804600913','BUENA SALUD')
INTO SALUD VALUES ('1804600914','BUENA SALUD')
SELECT * FROM dua l;
DOCENTE INSERT ALL
INTO DOCENTE VALUES
('1904660912','GALARZA','RODRIGO',to_date('19750725','YYYYMMD D'))
INTO DOCENTE VALUES
('1904760913','PINCAY','ESTEBAN',to_date('19700720','YYYYMMDD'))
INTO DOCENTE VALUES
('1904860914','DURAN','MAYRA',to_date('19720525','YYYYMMDD'))
SELECT * FROM dua l;
FORMACIN INSERT ALL
INTO FORMACION VALUES ('1904660912','BASE DE
DATOS','TERCERO',2001,'UTA','INGENIERO EN SISTEMAS','ECUADOR')
INTO FORMACION VALUES ('1904760913','REDES
INFORMATICAS','CUARTO',2002,'ESPOCH','MASTER','ECUADOR')
INTO FORMACION VALUES ('1904860914','DESARROLLO DE
SOFTWARE','TERCERO',2004,'UTA','INGENIERO EN SISTEMAS','ECUADOR')
SELECT * FROM dua l;
TELEFONO INSERT ALL
INTO TELEFONO VALUES ('1904660912','0962926572')
(DOCENTE) INTO TELEFONO VALUES ('1904760913','0962035577')
INTO TELEFONO VALUES ('1904860914','0962136671')
SELECT * FROM dua l;
NOTAS INSERT ALL
INTO NOTAS (CODAS,CIEST,CI,NOTA1,NOTA2) VALUES
('ASG1','1804600912','1904660912',7.5,8.1)
INTO NOTAS (CODAS,CIEST,CI,NOTA1,NOTA2) VALUES
('ASG2','1804600913','1904760913',6.8,8.6)
INTO NOTAS (CODAS,CIEST,CI,NOTA1,NOTA2) VALUES
('ASG3','1804600914','1904860914',8.2,8)
SELECT * FROM dua l;

1.7 Resultados y Discusin


Para la implementacin de la base de datos se hizo uso de una herramienta CASE
como lo es Power Designer, herramienta que permite generar cdigo SQL a partir de
un modelo relacional para diferentes Gestores de Base de Datos entre estos
tenemos MySQL, PostgreSQL, Oracle, SQL Server, Informix y muchos otros ms.
Uno de los principales problemas encontrados en esta prctica fue que el Gestor de
Base de Datos Oracle tiene una interpretacin muy peculiar en cuanto al carcter &
pues ste estaba formando parte de la cadena Hardware &Redes al momento de
definir la lista de valores para la particin en la tabla rea, fue en ese entonces donde
gener un error, lo que se hizo fue reemplazar el carcter mencionado por una Y
quedando Hardware y Redes y el inconveniente quedo solucionado.
1.8 Conclusiones
En la tabla notas se pudo tambin a ver hecho una vista para mostrar la tabla original
ms una columna calculada que sera el promedio, pero considero que las columnas
virtuales que Oracle permite crear nos facilita la tarea al momento de definir campos
de este tipo, con lo que se ahorra el tiempo para realizar una vista.
Las particin por referencia es un concepto nuevo que se ha venido integrando
conforme han ido evolucionando las versiones de Oracle, el mismo que hace uso del
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

concepto de herencia para poder particionar una tabla hija utilizando la misma clave
de particin de la tabla padre sin tener que duplicar las columnas de clave.
La fragmentacin de la tablas nos permite mejorar el tiempo de respuesta de las
consultas ya que al estar divididas acceden a una o varias partes pero no tiene que
recorrer toda la tabla muy til cuando queremos mejorar el rendimiento de nuestra
base de datos.

1.9 Referencias bibliogrficas


Espinosa Roberto. Business Intelligence. Particionado de tablas en Oracle.
http://www.dataprix.com/blogs/respinosamilla/particionado-tablas-oracle

Baer Hermann. Oracle Corporation. 2 September 2009. U.S.A. Partitioning with


Oracle Database 11g Release 2.
https://es.scribd.com/doc/22401527/Partitioning-With-Oracle-Database-11g-R2

Hall Tim. Oracle Database Administrator Certified Professional. Partitioning


Enhancements in Oracle Database 11g Release 1.
https://oracle-base.com/articles/11g/partitioning-enhancements-11gr1

Learn Database Technologies. Oracle/PLSQL: CREATE TABLESPACE statement.


http://www.techonthenet.com/oracle/tablespaces/create_tablespace.php

1.10 Fotografas y grficos

CONSULTAS DE VERIFICACION

Se procede a realizar consultas a la base de datos para constatar que todo se haya
hecho de manera correcta.

Figura 3. Tablespaces creados


UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

Figura 4. Particiones de la tabla notas en sus correspondientes Tablespace

Figura 5. Particiones de la tabla Campus en sus correspondientes tablespace

Figura 6. Particiones de la tabla Asignatura en sus correspondientes tablespace

Figura 7. Particin por valor tabla Campus


UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
PERODO ACADMICO: ABRIL/2016 SEPTIEMBRE/2016

Figura 8. Particin por valor tabla rea

Figura 9. Particin por Referencia de la tabla Notas

Figura 10. Tablas contenidas en el Tablespace TV

Anda mungkin juga menyukai