Vous êtes sur la page 1sur 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 sentencias DML podemos acceder a las tablas
seleccionadas.

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 diccionario-
manejados 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

Vous aimerez peut-être aussi