logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Gestión de espacios de tablespaces en oracle - oracle dba

mywebstudies.com

PorMyWebStudies

2024-04-05
Gestión de espacios de tablespaces en oracle - oracle dba


Gestión de espacios de tablespaces en oracle - oracle dba

La gestión del espacio en un tablespace se realiza en varios niveles:

  • Redimensionando o añadiendo nuevos datafiles.
  • Añadiendo extensiones a los segmentos.
  • Añadiendo registros.

Gestión de extensiones (extents)

El método para gestionar los extents se define al crear el tablespace y se aplica a todos los segmentos dentro de él.

Existen dos formas de gestionar los extents:

  • Gestión mediante el Diccionario de Datos: Este método es poco eficiente y no recomendado. Los extents libres y ocupados se registran en el diccionario, actualizando tablas como SYS.FET$ y SYS.UET$. Esto genera un uso intensivo del tablespace de sistema y afecta su rendimiento.
  • Gestión Local: Este método es el recomendado por Oracle. Utiliza mapas de bits para gestionar el espacio. Cada bit representa un bloque o grupo de bloques, y al asignar un extent, Oracle actualiza el bitmap para reflejar el nuevo estado de los bloques.

La gestión local permite dos métodos de asignación de extents:

  • UNIFORM: Todos los extents tienen el mismo tamaño. Esta opción es el valor por defecto en los tablespaces temporales, pero no puede usarse en tablespaces de undo.
  • AUTOALLOCATE: El tamaño de los extents varía según el segmento. En plataformas como Windows y Linux, los primeros 16 extents son de 64 KB, los siguientes 63 son de 1 MB, y a partir de ahí van aumentando hasta 8 MB, lo que permite una mayor flexibilidad según el tamaño del segmento.

Ejemplos de gestión de extents:

Para crear un tablespace con extents de tamaño uniforme:

  • CREATE TABLESPACE large_tabs
  • DATAFILE ‘large_tabs_01.dbf’
  • SIZE 10g
  • EXTENT MANAGEMENT LOCAL UNIFORM SIZE 160M;

Cada extent en este tablespace será de 160 MB. Un bitmap de 64 bits controlará el espacio libre, donde cada bit representa 160 MB.

Para crear un tablespace con extents que crecen dinámicamente, puedes usar AUTOALLOCATE:

  • CREATE TABLESPACE any_tabs
  • DATAFILE ‘any_tabs_01.dbf’
  • SIZE 10G
  • EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Inicialmente, los extents serán de 64 KB. A medida que el segmento crezca, los extents se irán asignando en tamaños más grandes.

Para saber si un tablespace se gestiona mediante el diccionario de datos:

  • SELECT tablespace_name, extent_management
  • FROM DBA_TABLESPACES;

Para convertir un tablespace de gestión por diccionario a local:

  • EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL (‘nombre_del_tablespace’);

Gestión de espacio de segmentos:

La gestión de espacio de segmento también se define al crear el tablespace y afecta a todos sus segmentos. Hay dos métodos principales:

Manual:

  • Este método utiliza mapas de bits para describir la ocupación de bloques en cada segmento.
  • Oracle recomienda siempre utilizar este método.

Automático:

  • Utiliza una lista simple para los bloques disponibles, pero no informa sobre la ocupación, lo que genera un uso ineficiente del espacio.
  • Oracle desaconseja este método por el exceso de actividad que genera.

Para conocer el tipo de gestión de espacio de un tablespace, puedes consultar la vista DBA_TABLESPACES.