Inicio » Oracle » Tablespaces » Manejo de extent

Manejo de extent

Hoy nos meteremos un poco en el denso mundo de los extends. Vamos a obviar una descripción detallada de que es un extends y nos vamos en a centrar en las dos formas que tiene Oracle de manejar los extends: 

Dictionary Manager: Esta era la forma antigua de controlar los extends, la base de datos registraba dentro del diccionario los extends libres y ocupados. Cada vez que se producía un movimiento en los extens se tenían que actualizar las tablas correspondientes. Consultaba constantemente las tablas FET$ y UET$ (la primera guarda los segmentos libres y la segunda los usados) localizadas en el diccionario. Esto provocaba contención en el tablespace de system.

Ejemplo de la creación de tablespace dictionary manager:

 CREATE TABLESPACE users
  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M
  EXTENT MANAGEMENT DICTIONARY
  DEFAULT STORAGE (
    INITIAL 64K
    NEXT 64K
    MINEXTENTS 2
    MAXEXTENTS 121
    PCTINCREASE 0);

Locally manager : Con este nuevo sistema que aparece a partir de Oracle 9, el registro de extends se hace a través de bitmaps. Cada bit dentro del bitmap corresponde a un bloque o grupo de bloques, cuando a un extends se le asigna espacio el servidor de oracle cambia los valores del bitmap para mostrar el nuevo status de los bloques. En oracle 9 si el parámetro COMPATIBLE =9.0.0 será la opción por defecto, si es inferior se creara como dictionary. A partir de Oracle 10 es la opción por defecto. Oracle recomienda la utilización de esta opción. 

Con locally manager tablespaces existen dos opciones para asignar el espacio de los extends: UNIFORM o AUTOLLOCATE:

La opción uniform  asigna y desasigna el espacio en los extens de un tamaño uniforme. Este es el valor por defecto en los tablespaces temporales y no se puede especificar en los tablespaces de undo.

Ejemplo de la creación de un tablespace locally uniform:

 CREATE TABLESPACE users
  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;

 El autoallocate (or automatic) sin embargo le dice a la base de datos que varíe el tamaño de los extends para cada segmento. Por ejemplo, en Windows y en Linux con bloques de datos de 8KB, los primero 16 extends de un segmento serán de 64 KB. Los siguientes 63 extends serán de 1MB, de 8MB los siguientes 64 extend, y así progresivamente. Este algoritmo permite que los segmentos pequeños sean pequeños, mientras los grandes irán creciendo si afectar a los demás segmentos.

Ejemplo de la creación de un tablespace localy autoallocate:

CREATE TABLESPACE users
  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Ventajas de la utilización de locally manager:

  1. Como no guarda la información sobre el espacio sobre en el diccionario, reduce la contención sobre estas tablas.
  2. Automáticamente rastrea el espacio adyacente libre, eliminando la necesidad de unirlo.
  3. Evita operaciones recurrentes sobre las tablas del diccionario.
  4. El tamaño de los extens puede ser determinado automáticamente por system,
  5. Los cambios en los bitmaps no generan información de rollback, porque no actualizan las tablas en el diccionario. (excepto casos especiales como información de cuota del tablespace).
  6. Reduce la fragmentación

Un pensamiento en “Manejo de extent

  1. Pingback: Gestión de espacio en Oracle | ACP-Servicios Informáticos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s