Publicado el

Error ORA-30036 al ejecutar SHRINK sobre una tabla

Después de borrar millones de registros de una gran tabla en Oracle y tratar de reclamar espacio de dicha tabla, el comando SHRINK SPACE no terminaba y marcaba el error:

ORA-30036: unable to extend segment by 8 in undo tablespace ‘UNDO’.

El tamaño de la tabla no era tan grande como el espacio reservado para el tablespace UNDO (aquí se almacenan los registros para hacer un rollback de una transacción), sin embargo se llenaba y marcaba el error mencionado.

Cuando se ejecuta la sentencia ALTER TABLE … SHRINK SPACE es necesario también tomar en cuenta el tamaño de los índices de la tabla. Así que la suma del tamaño de la tabla de la cual necesitaba reclamar espacio y el tamaño de todos sus índices, si que superaba el espacio del tablespace UNDO por eso lanzaba el error.

La solución, borrar todos los índices (DROP INDEX) de la tabla, reclamar el espacio (SHRINK SPACE) de la tabla y volver a crear los índices.

Espero y les sirva mi experiencia.

¡Saludos!

Todo comentario es bienvenido