lunes, 2 de julio de 2012

7.3. GESTIONANDO ESPACIO EN TABLESPACES


GESTIONANDO ESPACIO EN TABLESPACES
La gestión del espacio se produce en varios niveles. Primero, el espacio se asigna a un Tablespace. Esto es hecho por el tamaño asignado a los DataFiles, como ya se ha descrito. Segundo, el espacio dentro de un Tablespace es asignado a los Segmentos. Esto es hecho por la asignación de Extents. Tercero, el espacio dentro de los segmentos es asignado a las Filas. Esto es hecho mediante el mantenimiento de Bitmaps que dan seguimiento cuanto espacio está libre en cada Bloque.


EXTENT MANAGEMENT
El Método Extent Management se establece por Tablespace y se aplica a todos los Segmentos en el Tablespace. Hay dos técnicas para el Uso de Extent Management: Dictionary Management o Local Management. La diferencia es clara: La Local Management siempre debería ser utilizada; El Dictionary Management nunca debe ser utilizado. Extent Management Dictionary-Managed todavía es soportada, pero muy poco. Esto es un vestigio de versiones anteriores.
Dictionary Extent Management utiliza dos Tablas en el Diccionario de Datos. SYS.UET$ tiene filas que describen las extensiones utilizadas, y SYS.FET$ tiene filas que describen las extensiones libres. Cada vez que la Base de Datos necesita asignar un Extent a un Segmento, se debe buscar FET$ para encontrar un poco de espacio libre apropiado, y luego llevar a cabo operaciones DML contra FET$ y UET$ para asignar a el segmento. Este mecanismo causa problemas de mal rendimiento, porque todas las operaciones de gestión de espacio en la Base de Datos (Muchos de los cuales podrían serializarse al mismo tiempo) debe serializarse en el Código que construye las transacciones.
Local Extent Management se introdujo con la Versión 8i y se convirtió el default para la versión 9i. Utiliza Bitmaps almacenados en cada DataFiles. Cada Bit en el Bitmap cubre un rango de Blocks, y cuando el espacio es asignado, los bits apropiados son cambiados de cero a uno. Este mecanismo es mucho más eficiente que el mecanismo Basa en transacciones de Dictionary Management. El costo de la asignación de Extent es amortizado atraves de Bitmaps en cada DataFile que se puede actualizar concurrentemente, en lugar de estar concentrado en dos tablas.
Cuando creas un Tablespace Locally Managed, una importante opción es Uniform Size. Si se especifica uniform, entonces cada Extent cada vez asignado en el Tablespace será de ese tamaño. Esto puede hacer que la gestión de especio sea de alta eficiencia, porque el rango de Blocks cubiertas por cada bit pueden ser mas grande: Solo un Bit por Extent. Considerando la siguiente declaración:


create tablespace large_tabs datafile 'large_tabs_01.dbf' size 10g
extent management local uniform size 160m;

Cada Extent asignado a este Tablespace sera de 160 Mb, habrá cerca de 64 de ellos. El Bitmap necesita solo 64 bits, y 160 MB de espacio puede ser asignado por la actualización de un solo bit. Esto va a ser muy eficiente-siempre y cuando los Segmentos en el Tablespace son grandes. Si un segmento fue creado que solo el espacio necesario para unas pocas filas (tal como la tabla HR.REGIONS), todavía tendría un Extent de 160 MB Los objetos pequeños necesitan su propio Tablespace:


create tablespace small_tabs datafile 'small_tabs_01.dbf' size 1g
extent management local uniform size 160k;

La alternative sintaxis seria:


create tablespace any_tabs datafile 'any_tabs_01.dbf' size 10g
extent management local autoallocate;

Cuando los Segmentos son creados en este Tablespace, Oracle signará 64KB a un Extent. Como un Segmente que crece y requerirá mas Extents, Oracle asignará Extents de 64 KB hasta los 16 Extent, de la que asignará Extents cada vez mayores. Por lo tanto los segmentos de crecimiento rápido tienden a tener espacio en trozos cada vez mayor.

EN EL TRABAJO
Oracle Corporation recomienda AUTOALLOCATE, pero si usted conoce los Segmentos Grandes posibilidades de ser y los puede colocar en consecuencia, UNIFORM SIZE bien puede ser la mejor opción. Muchas aplicaciones so en diseñado de esta manera.

Es posible que si una Base de Datos ha sido actualizada desde una versión previa, se incluyen Tablespace Dictionary Managed. Comprueba esto cn esta consulta:

select tablespace_name, extent_management from dba_tablespaces;

Cualquier Tablespace Dictionary-Managed se conviertan a Local Management con este Procedimiento PL/SQL:

execute dbms_space_admin.tablespace_migragte_to_local('tablespacename');

EN EL TRABAJO.
Conversión de Tablespaces a Local Management es fácil y rápido, excepto del Tablespace SYSTEM, donde algunos pasos extras son requeridos. Estos están bien documentadas en la guía del administrador del sistema de la documentación del producto.

SEGMENT SPACE MANAGEMENT
El Método de gestión de espacio en Segmentos es establecido por Tablespace y aplicado a todos los Segmentos en el Tablespace. Existen dos técnicas para administración de espacio en Segmentos. Manual o Automática. La diferencia es clara: Automatic Management debería siempre ser utilizada; Manual Management debería nunca ser utilizada. Manual Segment Space Management es todavía soportada pero nunca recomendada. Esto es una reliquia de versiones anteriores.
Automatic Segment Space Management fue introducido con la versión 9i y se ha convertido default con la versión 11g. Cada segmento creado en un Tablespace Automatic Management tiene un conjunto de Bitmaps que describen como es llenado cada Block. Hay cinco Bitmaps por cada segmento, y cada Block van aparecer en exactamente un Bitmap. Los Bitmaps dan un seguimiento del espacio utilizado en las bandas: hay un Bitmap para los Block completos; y hay Bitmaps para Bloques que están a 75% a 100% utilizado, 50& a 75% utilizado, 25% a 50% utilizado y 0% a 25% utilizado. Durante la búsqueda de un Block en el insertara una Fila, el proceso servidor de la sesión vera el tamaño de la fila para determinar que Bitmap buscar. Por ejemplo, si el tamaño de Block es 4 KB y la fila que se insertara es 1500 bytes, un block apropiado se encuentra buscando el Bitmap de 25% a 50%. Cada Block en este Bitmap garantiza que tiene al menos 2KB de espacio libre. En las filas se inserta, se borran o cambian de tamaño a través de actualizaciones, los mapas de bits se actualiza en consecuencia.
El Viejo método Manual Space Management utilizaba una simple lista, conocido como el Free List, que se afirma que los bloques estaban disponibles para insertar, pero sin ningún tipo de información sobre la forma completa que eran. Este método podría causar un exceso de actividad, como bloques tuvo que ser probado por el espacio a la hora de insertar y, a menudo resultó en una gran proporción de espacio desperdiciado.
Para ver si alguno de tablas se utiliza la administración manual, ejecute esta consulta:
select tablespace_name,segment_space_management from dba_tablespaces;
Si no es possible convertir Tablespace de Manual a Automatic Segment Space Management. La unica solucion esc rear un Nuevo Tablespace utilizando Automatic Segment space Management, moverlos los segmentos en él, y eliminar el viejo Tablespace.


EJERCICIO 7-3.
CAMBIANDO LAS CARACTERISTICAS DE UN TABLESPACE.
En este ejercicio, creara un Tablespace utilizando el Manual Space Management, para simular la necesidad de convertir a Automatic Segment Space Management después de una actualización.


1. Conectarse a su Base de Datos como usuario SYSTEM.
2. Crear un Tablespace utilizando Segment Space Management. Como OMF se ha habilitado en el ejercicio 7-2, no hay necesidad de cualquier clausula de DataFile:
create tablespace manualsegs segment space management manual;
3. Confirme que el Nuevo Tablespace es de hecho utilizando la Tecnica Manual:
select segment_space_management from dba_tablespaces where tablespace_name='MANUALSEGS';
4. Crear una Tabla y un Indice en el Tablespace:
create table mantab (c1 number) tablespace manualsegs;
create index mantabi on mantab(c1) tablespace manualsegs;
Estos segmentos serán creados con Freelist, no con Bitmaps.
5. Crear un nuevo Tablespace que utilizará Automatic Segment Space Management:
create tablespace autosegs;
6. Mueva los objetos al nuevo Tablespace:
alter table mantab move tablespace autosegs;
alter index mantabi rebuild online tablespace autosegs;
7. Confirme que los objetos están el Tablespace correcto:
select tablespace_name from dba_segments where segment_name like 'MANTAB%';
8. Elimine el Tablespace original:
drop tablespace manualsegs including contents and datafiles;
9. Renombre el Nuevo Tablespace con el nombre original. Esto es a menudo necesario, porque algunas aplicaciones comprueba el nombre del Tablespace:
alter tablespace autosegs rename to manualsegs;
10. Ponga en orden eliminando el Tablespace, primero con este commando:
drop tablespace manualsegs;
11. Tenga en cuenta el error provocado por el Tablespace no está vacio, y solucionarlo con esto:
drop tablespace manualsegs including contents and datafiles;


DENTRO DEL EXAMEN.
GESTIONANDO ESTRUCTURAS DE ALMACENAMIENTO DE BASE DE DATOS.
Es esencial ser absolutamente claro en el Modelo de Almacenamiento Oracle: La Abstracción del almacenamiento lógico del físico, lo que significa que no hay una relación directa entre una Tabla (o cualquier tipo de segmento) y un DataFile. La gestión del espacio es mucho más sencillo con la versión actual que con versiones anteriores y, de hecho puede ser completamente automatizado utilizando OMF. Todo lo que es siempre necesario, una vez que los parámetros se han establecido, es el simple comando:


CREATE TABLESPACE tablespacename;

y luego dejar que Oracle manos a la obra. El uso de Bitmaps para Extent Management y de gestión de espacios dentro de los segmentos es una gran mejora de rendimiento respecto a las versiones anteriores. Las técnicas anteriores sólo son compatibles con la compatibilidad hacia atrás, la conversión de las estructuras existentes de almacenamiento de los nuevos métodos es posible. El Database Control incluye excelentes herramientas graficas para administrar Tablespace y DataFiles, pero para efectos de información por lo general será necesario consultar el diccionario de datos y vistas dinámicas.

RESUMEN DE CERTIFICACION
El paradigma de Base de Datos Relacional requiere una separación del Almacenamiento Lógico, según los visto por los programadores, del almacenamiento físico visto por los Administradores de sistema. Oracle implementa esto con los Tablespace. Dentro de un Tablespace, los Segmentos están conformados por Extents que con conformados por Oracle Blocks.
La actual técnica de gestión de espacio es con Bitmaps, tanto para la asignación de Extents a los Segmentos y para identificar Blocks dentro de Segmentos que son adecuados para inserción de filas. son muy superiores a las técnicas anteriores y siempre debe ser utilizado. Combinado con OMF y ASM, pueden hacer la gestión del espacio totalmente automático.

DOS MINUTOS
Comprendiendo Tablespace y DataFiles.
• Un Tablespace puede estar conformado por Muchos DataFiles.
• Un Tablespace puede tener muchos Segmentos
• Un Segmento es uno o más Extents.
• Un Extents son muchos Blocks consecutivos, en un DataFile.
• Un Oracle Block debe ser uno o más Blocks de sistema operativo.
• Los Oracle Block es la Granularidad de la Entrada Salida de la Base de Datos.

Crear y Gestionar Tablespace
• Tablespaces SMALLFILE pueden tener muchos DataFiles, pero un Tablespace BIGFILE puede tener uno solamente.
• El Tablespace por Default usa Local Extent Management, Automatic Segment Space Management, pero no para un Uniform Extent Size (Tablespaces default to local extent management, automatic segment space management, but not to a uniform extent size.).
• OMF nombra automáticamente DataFiles, inicialmente de 100MB, y puede AUTOEXTENT sin limite.
• Un Tablespace que contiene segmentos no puede ser eliminado, a menos que se incluya la clausula. UNCLUDING DATAFILES.
• Los Tablespace puede ser online o offline, read-write o read-only.
• Los Tablespace pueden almacenar tres tipos de objetos: Objetos permanentes, objetos temporales o Segmentos Undo.

Gestionar espacio en los Tablespace.
• Local Extent Management da seguimiento en la Asignación de Extent con Bitmaps en cada DataFile.
• La clausula UNIFORM SIZE cuando creas un Tablespace obliga a todos los Extent a ser del mismo Tamaño.
• La clausula AUTOALLOCATE permite a Oracle determinar el Tamaño del siguiente Extent, que se basa en cómo las extensiones están siendo asignados a un segmento.
• Automatic Segment Space Management da seguimiento al espacio libre en cada block de un Extent utilizando Bitmaps.
• Es posible convertir un Tablespace de Dictionary Extent Management a Local Extent Management, pero no de Freelist Segment Management a Automatic Management.

No hay comentarios:

Publicar un comentario