You are on page 1of 3

ALGO DE TEORA SOBRE UNDO

Los antiguos segmentos de rollback se llaman a partir de Oracle9i segmentos de undo. El tablespace de UNDO es el lugar donde se van guardando las transacciones, esto es, las modificaciones sobre la base de datos antes de hacer commit. Que se almacena en el UNDO? No se guarda los bloques de datos modificados. Lo que se guarda es la informacin mnima necesaria para cumplir los 2 objetivos del UNDO: 1. Asegurar la consistencia en lectura. Significa que si hay 100 usuarios trabajando concurrentemente y uno de ellos hace una consulta sobre la base de datos para obtener un informe, aunque la consulta tarde 10 minutos en dar una respuesta Oracle debe darle la informacin del momento en el que la ha lanzado el usuario. Mientras se ejecutaba esa consulta ha podido haber cambios, pero el usuario necesita saber la situacin en el momento de lanzarla. 2. Permitir la recuperacin en caso de rollback. Un usuario puede lanzar varias sentencias que formen una sola transaccin. Un cliente compra un billete de avin. Hay que actualizar la tabla de billetes vendidos, la del cliente con sus datos y una cuantas ms. Si cualquiera de las actualizaciones falla toda la transaccin hay que echarla atrs deshaciendo los cambios realizados. Cual es esa informacin mnima? Pues depende: Si el usuario inserta una fila nueva en una tabla al undo slo ir el rowid del registro insertado, ya que para deshacer lo nico que tiene que hacer es una delete de ese rowid. Que se actualiza un campo de un registro? El undo guardar la informacin de ese campo antes de su modificacin. Los errores que se producen con el UNDO: En Oracle 9i surge la gestin automtica del UNDO. Una de las cosas que tiene que decidir el DBA es cuanto tiempo (en segundos) debe ser capaz Oracle de retener esa informacin en el UNDO. Se llama UNDO_RETENTION. Hay 2 errores tpicos que se producen en Oracle por el tema del UNDO. Uno es el temido ORA-01555, Snapshot too old que ocurre cuando hay una consulta en la base de datos que sobrepasa el UNDO_RETENTION. Como Oracle no es capaz de asegurar la consistencia en lectura devuelve un error. As es Oracle, mejor un error que unos datos inconsistentes (aunque sean buenos). El otro error tpico es el contrario. Tenemos un UNDO_RETENTION suficiente para cualquiera de nuestras potenciales consultas largas, pero el tablespace de UNDO se ha quedado pequeito para poder almacenar todos los datos necesarios. Entonces se produce el error ORA-30036: Unable to extend segment by <> in undo_tablespace <>. Sentencias sql para la gestin del UNDO. Para ejecutarlas podemos abrir una sesin sql*plus como sysdba. Para ver los parmetros actuales del undo: show parameter undo; Para ver qu tablespaces y qu ficheros fsicos componen el undo: Select tablespace_name, file_name from dba_data_files where tablespace_name like UNDO% order by 1,2;

Creacin de un tablespace de undo compuesto por un fichero de 25 Gigas: El nombre UNDOTBS es un ejemplo. Create undo tablespace UNDOTBS datafile /undo/undotbs01.dbf size 25000M; Aadir un fichero (datafile) a un tablespace de undo: Alter tablespace undotbs1 add datafile /undo/undotbs03.dbf size 20480M; Modificacin del undo_retention. 19800 son segundos. Si ponemos scope = memory los registros no se mantendran al reiniciar la base de datos. alter system set undo_retention=19800 scope = both; Para monitorizar el uso de UNDO se puede lanzar la siguiente sentencia: SELECT A.SID, A.USERNAME, B.XIDUSN, B.USED_UREC, B.USED_UBLK FROM V$SESSION A, V$TRANSACTION B WHERE A.SADDR=B.SES_ADDR; XIDUSN: Segmento de UNDO asociado a una transaccin USED_UREC: Numero de registros guardados en UNDO por la transaccin USED_UBLK: Numero de bloques usado por la transaccin

PRACTICA- SEGMENTO UNDO 1. Conectado como usuario system a la base de datos, consultar la vista database_properties. Observar los distintos parmetros de los que se nos ofrece informacin en la vista. 2. Consultar el fichero de inicializacin de la base de datos y averiguar cuales de los parmetros de undo estn definidos y su valor actual. 3. Averiguar cuantos espacios de undo estn definidos en la base de datos (nombre, caractersticas de almacenamiento, ...). 4. En qu sistema/s de ficheros estn definidos los anteriores espacios de almacenamiento?, cul es su tamao?

5. Consultar el valor actualmente activo de los parmetros de undo en la base de datos. 8. Crear un segundo espacio de almacenamiento de undo con las siguientes caractersticas: Nombre ... UNDO02 Localizacin ... /home/u03/oradata/CURSOxx/undo02.dbf Tamao ... 1M Autoextensible ... 2M, hasta 3M Comprobar su creacin.

9. Crear un espacio de almacenamiento caractersticas:

de undo

con las siguientes

Nombre ... UNDO03 Localizacin ... /home/u03/oradata/CURSOxx/undo03.dbf Tamao ... 1M 10. Modificar el espacio de undo por defecto, de forma que sea a partir de este momento UNDO02. Comprobarlo antes y despus de hacerlo.

You might also like