Parámetros para trabajar con el UNDO
En versiones anteriores de ORACLE, teníamos los ROLLBACK SEGMENTS, que era la manera de tener segmentos UNDO, pero había cuestión que hacia el trabajo de los DBA un poco complicado, a la vez que en ocasiones los obligaba a estar pendientes de estos ROLLBACK SEGMENTS. Y es que todo se hacia de forma manual, tanto la gestión del espacio, el número de segmentos de rollback, cómo se llenaban, etc.
Desde hace algunas versiones, el proceso del UNDO por parte de ORACLE es automático, usando los llamados UNDO SEGMENTS, que sustituyen a los ROLLBACK SEGMENTS que mencionamos antes. Aunque se puede volver a ellos en el supuesto que queramos tener la gestión del UNDO de forma manual.
Se recomienda, que como administradores de la base de datos evitemos tocar nada en el UNDO, salvo casos especiales, ya que es preferible que la base de datos ajuste de forma automática, tanto el rendimiento, el número de segmentos de UNDO, sus creaciones, sus borrados, etc.
Oracle nos proporciona la opción de cambiar la gestión del UNDO de modo automático a manual, y viceversa, pero no es nada recomendable. Veamos los parámetros de UNDO que podemos manejar en ORACLE, para ello, tenemos un terminal de Linux, que si observamos ya estamos dentro del SQLPLUS, además estamos trabajando con el usuario sysdba, que tiene permisos de administrador.
Entonces escribimos:
- SHOW PARAMETER UNDO
Primero tenemos el temp_undo_enabled, que determina si las transacciónes dentro de una sesión particular pueden tener un registro de deshacer temporal. Aquí tenemos el undo_management en AUTO, si queremos cambiar al modo manual, bastaria con cambiar este parámetro a MANUAL.
Undo_retention, indica en segundos, el tiempo mínimo que se guardan los datos de UNDO a partir de que se haga un COMMIT, para la consistencia de lectura y sobre todo para FlashBack. En nuestro caso, tenemos 900 segundos, lo que es lo mismo, 15 minutos. Esto no quiere decir que ORACLE borrará estos datos pasados los 15 minutos, sino que a partir de los 15 minutos que se hizo el COMMIT, ORACLE borrará esos datos si necesita ocupar ese espacio, pero nunca antes del tiempo en segundos que se indica en este parámetro.
Y por último, tenemos el parámetro undo_tablespace, que indica el tablspace a donde van a parar los UNDO, en este caso, van a ir hacia el tablespace UNDOTBS1. Por defecto solo hay uno funcionando, aunque podemos tener más de un tablespace para los UNDO por dife
parametros trabajar undo