Este documento describe la gestión de los datos de UNDO en Oracle 11g. Los datos de UNDO almacenan versiones anteriores de los datos para permitir deshacer transacciones y ejecutar consultas flashback. Se generan automáticamente cuando se ejecutan operaciones DML y se clasifican en activos, expirados y no expirados. El DBA puede ajustar parámetros como el tablespace de UNDO y el tiempo de retención para gestionar eficazmente estos datos.
1. ADMINISTRACIÓN DE ORACLE 11G
Gestión de los datos de UNDO
1Carmen Soler Chorro - http://www.linkedin.com/in/casoch
2. INTRODUCCIÓN
Cuando ejecutamos operaciones DML:
Se escriben los datos en los segmentos de los
tablespaces persistentes.
Y una versión anterior de estos datos se escribe
en los tablespaces de UNDO (deshacer).
El objetivo es ver cómo se pueden gestionar
estos datos de UNDO.
2Carmen Soler Chorro - http://www.linkedin.com/in/casoch
3. INTRODUCCIÓN
La utilidad de tener 1 tablespace de UNDO es asegurar las
propiedades básicas de debe tener una base de datos: ACID
ATOMICIDAD
Asegura que una operación no se queda a medias. O se hace toda o no se
hace.
CONSISTENCIA
Ninguna de las operaciones romperá las reglas de integridad de la base de
datos.
AISLAMIENTO
Asegura que una operación no puede afectar a otra. Si dos usuarios atacan
a los mismos datos, se asegura que las operaciones no interferirán.
DURABILIDAD
Una vez validada una operación, se conservará aunque falle el sistema.
3Carmen Soler Chorro - http://www.linkedin.com/in/casoch
4. VISIÓN GENERAL
Los datos de UNDO guardan la información que
podría servir para revertir los efectos de las
sentencias DML.
Los procesos de servidor mandan hacer una
copia de los datos antes de empezar su
transacción.
Al tener datos anteriores podemos ejecutar
flashback queries.
Las flashback queries permiten consultar datos de
copias anteriores de la base de datos.
4Carmen Soler Chorro - http://www.linkedin.com/in/casoch
7. IDENTIFICAR LOS SEGMENTOS DE UNDO
Los segmentos de UNDO se identifican como TYPE2
UNDO.
Los Rollback Segments se utilizaban en versiones
anteriores de Oracle como algo parecido a los TYPE2
UNDO. Ya no se utilizan pero se mantienen por
retrocompatibilidad.
Aun así, desde Oracle se puede escoger trabajar con
segmentos de UNDO o segmentos de ROLLBACK.
Han acabado ganando los segmentos de UNDO porque
son mucho más fáciles de gestionar.
Sólo pueden existir en tablespaces de tipo UNDO.
Aunque podría ocurrir que no hubiera un tablespace de
UNDO en nuestra configuración de Oracle.
7Carmen Soler Chorro - http://www.linkedin.com/in/casoch
8. TALLER 1
Uso de los datos de UNDO.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 8
9. GENERACIÓN DE DATOS DE UNDO
Al iniciarse una transacción, Oracle le asigna
un segmento de UNDO.
Si la transacción necesitara más espacio de
lo que cabe en ese segmento, Oracle le
asignará otro automáticamente.
Es posible que más de una transacción
comparta el mismo segmento de UNDO.
9Carmen Soler Chorro - http://www.linkedin.com/in/casoch
10. TIPOLOGÍA DE DATOS DE UNDO
Los datos de UNDO se pueden agrupar en varios
niveles:
Active UNDO
Guardan datos de transacciones que se están ejecutando en
este momento.
Expired UNDO
Datos de transacciones ya validadas.
Oracle no tiene la obligación de almacenarlas. Sobre todo las
más antiguas.
Unexpired UNDO
También son datos de transacciones ya validadas, pero no
pueden sobrescribirse porque hay operaciones anteriores a la
modificación que, que deben utilizar los datos antiguos.
10Carmen Soler Chorro - http://www.linkedin.com/in/casoch
12. TRANSACCIONES ACTIVAS
La primera consulta es para ver qué
transacciones están a medias.
Podemos ver el segment_id del segmento de undo
que se le ha asignado.
Y los bloques que lleva usados dentro de ese
segmento de undo.
La segunda consulta es para ver el tamaño
actual de los segmentos de UNDO.
La vista V$ROLLSTAT se puede relacionar con
DBA_ROLLBACK_SEGS a través del campo usn.
12Carmen Soler Chorro - http://www.linkedin.com/in/casoch
13. TALLER 2
Trabajar con transacciones y Flashback Query.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 13
14. GESTIÓN DE UNDO
La característica más importante de los segmentos de
undo, es que se gestionan automáticamente.
A pesar de eso, el DBA puede ajustar determinados
límites en función del volumen y la actividad de la base
de datos.
Para dimensionarlo, hemos de tener en cuenta:
Que todas las transacciones que se prevé que haya tengan
espacio.
Que además puedan almacenarse los unexpired.
Que además puedan guardarse los históricos que
consideremos necesarios.
Si no podemos asegurar los dos primeros puntos, Oracle
nos dará un error.
14Carmen Soler Chorro - http://www.linkedin.com/in/casoch
15. PARÁMETROS PARA LA GESTIÓN DE UNDO
Existen 3 parámetros para gestionar UNDO:
UNDO_MANAGEMENT, UNDO_TABLESPACE,
UNDO_RETENTION
UNDO_MANAGEMENT
Valores: AUTO (default) y MANUAL.
Usaremos MANUAL cuando queramos trabajar con
ROLLBACK SEGMENTS.
Oracle recomienda utilizar AUTO.
Si utilizamos AUTO, tenemos que tener definido el
UNDO_TABLESPACE.
Es un parámetro estático.
15Carmen Soler Chorro - http://www.linkedin.com/in/casoch
16. PARÁMETROS PARA LA GESTIÓN DE UNDO
UNDO_TABLESPACE
Marca cuál es el nombre del UNDO tablespace que
debe utilizar la base de datos.
UNDO_RETENTION
Se indica en segundos.
Es el tiempo que se tienen que mantener los datos
unexpired en el tablespace de undo.
Por si acaso una transacción durara mucho tiempo.
Si no indicamos nada o lo ponemos a cero, trata de
mantener los datos el máximo tiempo posible
16Carmen Soler Chorro - http://www.linkedin.com/in/casoch
17. TALLER 3
Dimensionar y monitorizar el tablespace de UNDO.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 17
18. TALLER 4
Ejemplo de ejecución de una Flashback Query.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 18
19. TALLER 5
Gestión de tablespaces de UNDO.
Carmen Soler Chorro - http://www.linkedin.com/in/casoch 19