viernes, 21 de agosto de 2009

Como determinar el tamaño ideal para los tablespaces de UNDO

Para los que sufrimos con el famoso error ORA-01555 SNAPSHOT TOO OLD, en las versiones de Oracle 8i ó inferiores, el cambio de la administración automática de los segmentos de rollback, introducido en la versión Oracle 9i, fue una muy grata noticia.
El poder llegar a tener la cantidad y tamaño ideales de segmentos de rollback, era laborioso y costoso para las organizaciones, sobre todo, en aquellos viejos procesos que se ejecutaban nocturnamente, por la gran cantidad de recursos que necesitaban y que daban errores a la media noche despues de varias horas de ejecución, teniendo el operador de turno que recurrir, al clásico "beeper" para despertar al DBA de turno, para que este soluccionará el problema.
A partir de las versiones Oracle 9i, Oracle, puso a disposición un mecanismo automático de total referencia y administración, para el espacio de información de "UNDO" - Disolver -. En este modo de administración, el tablespace de UNDO creado, es administrado automáticamente por el servidor, en relación a los segmentos, espacio y monto requeridos.
El parámetro de inicialización UNDO_MANAGEMENT es el responsable de habilitar el modo automático de administración.
Con esto desapareció el ORA-01555 ?. La respuesta correcta es NO. Sin embargo, el poder tener el datafile en modo autoextent, el que la base de datos pudiera determinar la cantidad de segmentos y espacio, si colabora en un 99% que el error sea controlado.
Cuando el error se puede dar.?. Cuando el espacio en la partición, sistema de archivos ó disco, es insuficiente para poder autoextender el ó los datafiles del tablespace de UNDO, cuando sea necesario.
Cuánto espacio es requerido por el tablespace de UNDO.?
Depende del parámetro dinámico UNDO_RETENTION. Este parámetro define en monto de segundos, la cantidad de información retenida en el tablespace UNDO, para poder hacer rollback de una transacción ó bien, poder utilizar la facilidad de FLASHBACK QUERY.
Con la consulta a continuación, podemos obtener la información del espacio requerido en cantidad de MB para nuestro tablespaces de UNDO, basado en el tiempo de retención definido en UNDO_RETENTION y las estadísticas almacenadas de la base de datos, las cuáles determinaran, tomando en cuenta el nivel de redo generado por la base de datos, que tanto espacio sería requerido como máximo.

SELECT d.undo_size/(1024*1024) "TAMANO ACTUAL UNDO TBS [MByte]",
SUBSTR(e.value,1,25) "PARAMETRO UNDO RETENTION [Sec]",
(TO_NUMBER(e.value) * TO_NUMBER(f.value) *
g.undo_block_per_sec) / (1024*1024)
"UNDO REQUERIDO [MByte]"
FROM (
SELECT SUM(a.bytes) undo_size
FROM v$datafile a,
v$tablespace b,
dba_tablespaces c
WHERE c.contents = 'UNDO'
AND c.status = 'ONLINE'
AND b.name = c.tablespace_name
AND a.ts# = b.ts#
) d,
v$parameter e,
v$parameter f,
(
SELECT MAX(undoblks/((end_time-begin_time)*3600*24))
undo_block_per_sec
FROM v$undostat
) g
WHERE e.name = 'undo_retention'
AND f.name = 'db_block_size'
/

Desde la consola JAVA de OEM ( Oracle Enterprise Manager ), se puede consultar en forma gráfica esta información.
Un tema aún pendiente, es el obtener una administración más flexible, cuando nuestro tablespace UNDO reclama gran cantidad de espacio y luego este es liberado en el datafile. En otro posteo, hablaremos de como resolver en parte este problema.

2 comentarios:

  1. Exelente aporte amigo. ¿Que pasa si yo le asigno mas espacio que el indicado al tablespace? funciona mejor? ... no pasa nada? es contraproducente? ...

    gracias por tus comentarios.. estare pendiente del resto que falta sobre el undo.. ya que a mi me ha dado ciertos problemitas su crecimiento desmezurado.

    ResponderEliminar
  2. este espacio requerido se suma al actual? o es lo que debe tener, por ejemplo si el actual es 2000 Mgas y el tiempo de ret es 900 y el espacio reuqerido es 400 Megas. debe quedar como 2400 Mgs o de 400M.

    Solo como ejemplo que quede claro.

    ResponderEliminar

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar