Está en la página 1de 16

FRAGMENTACION EN ORACLE

Bases de Datos II

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
segmentos de usuario es user_segments, y
puede visualizar la informacin sobre
segmentos con la sentencia SQL siguiente:
SQL> select * from user_segments;

los
se
los

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

por

listas:

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.

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 BY LIST(sales_state)
(
PARTITION sales_west VALUES('California', 'Hawaii'),
PARTITION sales_east VALUES ('New York', 'Virginia',
'Florida'),
PARTITION sales_central VALUES('Texas', 'Illinois')
PARTITION 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

También podría gustarte