Вы находитесь на странице: 1из 16

FRAGMENTACION EN ORACLE

Presentacin por: Diana Snchez Maria Fernanda Mejia


Bases de Datos II Junio 2006

FRAGMENTACION
DEFINICIN:
Es el particionamiento de la informacin para distribuir cada parte a los diferentes sitios de la red. Permite controlar donde se han almacenado los datos a nivel de tablas. Cada tabla se puede separar en varios fragmentos. Cada fragmento se almacena en un solo nodo. CARACTERISTICAS: til para aquellas apps. que manejen grandes volmenes de datos. Son transparentes a las apps. desde la perspectiva del usuario, una tabla fragmentada es igual que una no fragmentada. Con las mismas seleccionadas. sentencias DML podemos acceder a las tablas

Una tabla se puede particionar un numero limitado de veces dependiendo del DBMS.

LOS ESPACIOS DE TABLAS

TABLESPACES

Un espacio de tablas es una divisin lgica de la BD. Cada BD tiene al menos uno. Un espacio de tablas puede pertenecer slo a una BD. Los espacios de tablas se utilizan para mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o mejorar las prestaciones del sistema. Oracle permite realizar operaciones de backup/recovery a nivel de espacio de tabla mientras la BD sigue funcionando.

Tabla desde la perspectiva de la app se ve como si fuera una.

Realmente los datos se encuentran fragmentados y localizados en otros puntos Las tablas se descomponen en tablas mas pequeas

CREACION DE TABLESPACE EN ORACLE


Cuando se crean se les asigna un espacio en disco que Oracle reserva inmediatamente, se utilice o no. Si este espacio inicial se ha quedado pequeo Oracle puede gestionar el crecimiento dinmico de los ficheros sobre los que se asientan los espacios de tablas. Esto elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento inicial. Los parmetros de crecimiento del tamao de los espacios de tablas se especifican en la creacin de los mismos. (INITIAL, NEXT).

COMANDOS DE TABLESPACE EN ORACLE


Se pueden ver los espacios de tablas definidos en nuestra BD con el comando SQL siguiente: SQL> select * from user_tablespaces;

SEGMENTOS: Manera de separar los objetos de

distinta naturaleza dentro de cada espacio de tabla (tablespace). Un segmento est constituido por un conjunto de extensiones, que no son ms que grupos de bloques de disco ORACLE contiguos.

Existen 5 tipos de segmentos: Datos ndices Rollback Temporales Bootstrap La tabla que guarda la informacin de los segmentos de usuario es user_segments, y se puede visualizar la informacin sobre los segmentos con la sentencia SQL siguiente: SQL> select * from user_segments;

FRAGMENTACION EN ORACLE
La fragmentacin en Oracle solo se puede hacer en forma horizontal repartiendo de manera fsica la informacin pero teniendo en cuenta que lgicamente esta en una sola tabla, esto solo se da hasta la versin 9i. Para hacer la fragmentacin de un tablespace es necesario combinar segmentos libres adyacentes en uno. Para prevenir ciertos problemas al combinar segmentos es factible utilizar tablespaces locales-manejadas.

Como manejar BD instaladas con tablespaces diccionariomanejados existen dos versiones de Oracle que presentan soluciones para este caso: Oracle 8i Oracle 8.1.6 o ms alto Para convertir tablespace diccionario llamado USERS en tablespace local se utiliza el siguiente paquete: sys.dbms_space_admin.tablespace_migrate_to_local (USERS) Para convertir tablespace local llamado USERS en tablespace diccionario se utiliza el siguiente paquete:
sys.dbms_space_admin.tablespace_migrate_from_local (USERS)

TIPOS DE FRAGMENTACION EN ORACLE


Fragmentacin
permite especificar explcitamente la correspondencia entre las filas y las particiones. Se especifica una lista de valores discretos para la clave de particionamiento. Fragmentacin Hash: La correspondencia entre las filas y las particiones se realiza a travs de una funcin de hash. Es una opcin til cuando:
Cuando el mtodo de acceso a los datos y la distribucin de los datos es desconocida. Cuando las consultas realizan exploraciones secuenciales y se tenga poca informacin de los datos almacenados.

por

listas:

Fragmentacin por rango de valores Fragmentacin combinada

TIPOS DE FRAGMENTACION

FRAGMENTACION COMBINADA

EJEMPLO DE FRAGMENTACION POR RANGO:


CREATE TABLE sales_range (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), sales_date DATE) PARTITION BY RANGE(sales_date) ( PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')), PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')), PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')), PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY')) );

EJEMPLO DE FRAGMENTACION POR LISTA:


CREATE TABLE sales_list (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_state VARCHAR2(20), sales_amount NUMBER(10), sales_date DATE)

PARTITION ( PARTITION PARTITION 'Florida'), PARTITION PARTITION );

BY LIST(sales_state)
sales_west VALUES('California', 'Hawaii'), sales_east VALUES ('New York', 'Virginia', sales_central VALUES('Texas', 'Illinois') sales_other VALUES(DEFAULT)

EJEMPLO DE FRAGMENTACION POR HASH:


CREATE TABLE sales_hash (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), week_no NUMBER(2)) PARTITION BY HASH(salesman_id) PARTITIONS 4 STORE IN (data1, data2, data3, data4);

RPLICA Y FRAGMENTACIN DE DATOS


Un fragmento de un tabla se puede replicar y a su vez esa rplica ser fragmentada, para luego replicar alguno de esos fragmentos