3.2. Segmentos

Un segmento es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro objeto) está dentro de su segmento, y nunca podrá salir de el, ya que si la tabla crece, el segmento tambien crece con ella. Físicamente todo objeto en base de datos no es mas que un segmento dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace; el segmento es la representación física del objeto en base de datos (el objeto es solo una definición lógica).

Los segmentos son los equivalentes físicos de los objetos que almacenan datos. El uso efectivo de los segmentos requiere que el DBA conozca los objetos, que utiliza una aplicación, cómo los datos son introducidos en esos objetos y el modo en que serán recuperados.

Un segmento está constituido por secciones llamadas extensiones, que son conjuntos contiguos de bloques Oracle. Una vez que una extensión existente en un segmento no puede almacenar más datos, el segmento obtendrá del espacio de tabla otra extensión. Este proceso de extensión continuará hasta que no quede más espacio disponible en los archivos del espacio de tablas, o hasta que se alcance un número máximo de extensiones por segmento.

Existen 5 tipos de segmento:

Fuente: cristianunab.ublog.cl/archivos/932/conceptos_oracle.doc

Visualización de segmentos de discos

La mejor manera de crear agrupaciones de almacenamiento ZFS es utilizar discos enteros en lugar de segmentos de discos, porque los discos enteros son más fáciles de gestionar. La única vez que necesita utilizar un segmento de disco es cuando el disco está destinado para la agrupación raíz ZFS. Ésta es una limitación de inicio antigua. Para agrupaciones que no sean raíz, utilice discos enteros. Al crear una agrupación con discos enteros, se aplica una etiqueta EFI. Consulte el siguiente ejemplo de etiqueta de disco EFI.

Si necesita preparar un disco para utilizar un disco de agrupación raíz, cree el segmento 0 que contenga la capacidad de disco entero, como se muestra en el siguiente ejemplo de etiqueta de disco VTOC.

Para obtener información sobre la configuración de discos para usar con agrupaciones de almacenamiento ZFS, consulte el Capítulo 12, SPARC: configuración de discos (tareas) o el Capítulo 13, X86: configuración de discos (tareas).

Nota - La utilidad format usa el término partición en lugar de segmento.

Cómo visualizar información de segmentos de discos

Es posible que sea necesario visualizar información de segmentos del disco si el disco está destinado para usarse con la agrupación raíz ZFS. También debe incluir una etiqueta SMI.

  1. Conviértase en un administrador.

    Para obtener más información, consulte Cómo obtener derechos administrativos de Administración de Oracle Solaris: servicios de seguridad.

  2. Invoque la utilidad format.# format

    Se muestra una lista numerada de discos.

  3. Escriba el número del disco para el que desea mostrar información de segmentos.Specify disk (enter its number):1
  4. Seleccione el menú partition.format> partition
  5. Visualice la información de segmentos para el disco seleccionado.partition> print
  6. Salga de la utilidad format.partition> q
  7. format> q
  8. Verifique la información de segmentos mostrada mediante la identificación de etiquetas de segmentos y segmentos específicos.

    Si la salida de la pantalla muestra que no hay tamaños de segmentos asignados, es posible que el disco no tenga segmentos.

Ejemplo 3 Visualización de información de segmentos de discos

En el ejemplo siguiente, se muestra información de segmentos para un disco con una etiqueta VTOC.

# format
Searching for disks...done
Specify disk (enter its number):3
Selecting c2t3d0
format> partition
partition> print
Current partition table (c2t3d0):
Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14086      136.71GB    (14087/0/0) 286698624
  1       swap    wu       0                0         (0/0/0)             0
  2     backup    wu       0 - 14086      136.71GB    (14087/0/0) 286698624
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6        usr    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0
partition> q
format> q

Para obtener una descripción detallada de la información de segmentos en estos ejemplos, consulte el Capítulo 10, Gestión de discos (descripción general).

En el ejemplo siguiente, se muestra la información de segmentos para un disco con una etiqueta EFI.

# format
Searching for disks...done
Specify disk (enter its number): 3
selecting c2t3d0
[disk formatted]
format>partition
partition> print
Current partition table (default):
Total disk sectors available: 286722878 + 16384 (reserved sectors)

Part      Tag    Flag     First Sector         Size         Last Sector
  0        usr    wm                34      136.72GB          286722911    
  1 unassigned    wm                 0           0               0    
  2 unassigned    wm                 0           0               0    
  3 unassigned    wm                 0           0               0    
  4 unassigned    wm                 0           0               0    
  5 unassigned    wm                 0           0               0    
  6 unassigned    wm                 0           0               0    
  7 unassigned    wm                 0           0               0    
  8   reserved    wm         286722912        8.00MB          286739295
partition> q
format> q

Reducción de Segmentos en Oracle 10g: Shrink Table

En Oracle 10g existe una nueva funcionalidad para DBA's de Oracle para a la recuperación del espacio ocupado por una tabla sin necesidad de recrearla: SHRINK TABLE

Es habitual en versiones anteriores a la versión 10g el problema generado por el borrado de registros de una tabla y la generación de “huecos” a nivel de los bloques que componen esa tabla. A modo de ejemplo: es habitual para un DBA de Oracle la duda tras el borrado masivo de muchos registros de una tabla (o de todos) y la comprobación tras la eliminación de los registros de que la tabla ocupa exactamente lo mismo (misma HWM – High Water Mark).

Esta situación también se da en sistemas OLTP donde con el tiempo, y con las inserciones/borrados de registros en determinadas tablas, se van generando espacio no reutilizables por las nuevas inserciones por falta de espacio en los bloques incompletos, y a la larga caídas de rendimiento en los sistemas.

El método tradicional para recuperar este espacio consistía en realizar periódicamente export/import de la tabla en cuestión o recreación de la misma. Eso conllevaba una serie de problemas en la práctica como invalidación de índices, vistas, procedimientos…

En Oracle 10g surge la funcionalidad shrink table, que no sólo permite la recuperación de este espacio y recuperación del acceso óptimo a la misma, sino que permite realizarlo en 2 fases diferenciadas disminuyendo el tiempo de afectación a los usuarios.

Para que el DBA lleve a cabo esta recuperación de espacio puede seguir los siguientes pasos:

Tan solo durante el último punto del procedimiento existe bloqueo de tabla, pero sin duda el punto 2 es el más costoso en tiempo y se puede hacer totalmente online.



Anterior
Valid XHTML
home

Siguiente