sql >> Base de Datos >  >> RDS >> Oracle

¿Qué es Deshacer y rehacer en la base de datos Oracle?

Muchas personas a menudo me hacen las preguntas

¿Qué es Deshacer y Rehacer en la base de datos de Oracle? ? ¿Para qué sirve?

Estoy tratando de despejar todas las dudas al respecto aquí en la publicación

¿Qué es Deshacer en Oracle?

Deshacer se almacena en el espacio de tabla Deshacer en la base de datos. Almacenó los valores anteriores de los bloques de datos modificados cada vez que emitimos una declaración de inserción, actualización o eliminación (operación DML). Cuando emitimos cualquier declaración DML, los bloques modificados se almacenan en la memoria caché del búfer y los valores anteriores para esos bloques modificados en los segmentos UNDO. Cada vez que emitimos un comando ROLLBACK, utiliza el segmento de deshacer para retroceder al valor anterior.

Es igual que Deshacer en el Bloc de notas o en Microsoft Word

Deshacer una eliminación es más útil que una inserción. Esto se debe a que deshacer una eliminación es en realidad la reinserción de toda la fila. Por lo tanto, tiene valores de conservación para cada una de las columnas de la fila para poder "Deshacer" la eliminación.
Por el contrario, deshacer para una inserción es una Eliminación de la fila por ROWID, que no tiene que conservar los valores que se eliminan.

Deshacer también nos proporciona  la coherencia de lectura para un usuario, ya que solo puede ver los valores anteriores hasta que se confirma una transacción. Para explicarlo, daría un ejemplo

El usuario A inicia el cursor de selección en la tabla en el momento t. El cursor se ejecutará durante algún tiempo

El usuario B comienza a actualizar la misma tabla en el momento t'.

Ahora, el usuario A debería obtener la versión coherente de lectura de la tabla en el momento t. Pero el usuario B actualiza los bloques después de un tiempo.

Por lo tanto, Oracle usa segmentos Deshacer para restaurar la imagen anterior de la actualización para esos bloques de segmentos Deshacer para obtener vistas consistentes de lectura

Las operaciones de deshacer no se destruyen inmediatamente después de la confirmación o la reversión, ya que se utilizarán en el mecanismo de lectura coherente.

También se usan en consultas de flashback para ver los datos confirmados antiguos mediante la restauración de deshacer.

¿Cuánto tiempo se deshacen los datos almacenados en la base de datos?
Oracle proporciona flexibilidad sobre cuánto tiempo se deben almacenar los datos de deshacer con la ayuda del parámetro undo_retention. Podemos establecer el parámetro undo_management en automático para que Oracle administre la retención de deshacer (predeterminado), o incluso establecer este valor manualmente y su valor debe ser mayor que el tiempo que toma la consulta de ejecución más larga en su base de datos. En 11g en adelante, Oracle ajustó este parámetro automáticamente según el tamaño del tablespace de deshacer

Qué es Transacción ?
Una transacción es una colección de sentencias del lenguaje de manipulación de datos SQL (DML) tratadas como una unidad lógica.
La falla de cualquier sentencia da como resultado que la transacción se "deshaga". Si todas las sentencias se procesan, SQLPlus o el La aplicación de programación emitirá un COMMIT para hacer que los cambios en la base de datos sean permanentes. Las transacciones se confirman implícitamente si un usuario se desconecta de Oracle normalmente.
Las desconexiones anormales provocan la reversión de la transacción. progreso.

¿Qué es rehacer en Oracle?

Redo significa registrar los trabajos que se han hecho, para que el trabajo no se pierda. Los registros REDO se utilizan en la recuperación. Cada vez que insertamos en la base de datos, hace lo siguiente

  1. Insertar la fila en el búfer
  2. generar el deshacer en el búfer
  3. Escriba los cambios de rehacer, es decir, inserte filas en los registros de rehacer
  4. Escriba los cambios de rehacer para los segmentos de deshacer en los registros de rehacer

Por lo tanto, cada operación DML realizada en la base de datos se registra en los registros de rehacer con fines de recuperación

Las rehacer se escriben primero en el búfer de registro de rehacer en SGA. El proceso de escritor de registro (LGWR) escribe estos cambios desde el 'búfer de registro de rehacer' a los archivos de registro de rehacer en el disco

Los registros de rehacer ayudan a restaurar cualquier pérdida de datos debido a un error humano, falla del sistema operativo, falla del disco duro.

Los registros de rehacer son fundamentales para el funcionamiento de la base de datos, ya que proporcionan tolerancia a errores.

Antes de escribir los cambios en las tablas en el archivo de datos, Oracle primero escribe el búfer de rehacer en el archivo de registros de rehacer.

tenemos la opción de no registrar disponible para ciertas operaciones para no generar búferes de rehacer.

Cómo funcionan los registros de rehacer
El servidor de Oracle registra secuencialmente todos los cambios realizados en la base de datos en el búfer de registro de rehacer. Las entradas de rehacer se escriben desde el búfer de registro de rehacer en uno de los grupos de registros de rehacer en línea denominado grupo de registro de rehacer en línea actual por el proceso LGWR. LGWR escribe en
las siguientes situaciones:
• Cuando se confirma una transacción
• Cuando el búfer de registro de rehacer se llena en un tercio
• Cuando hay más de un megabyte de registros modificados en el búfer de registro de rehacer
• Antes de que DBWn escriba bloques modificados en el caché del búfer de la base de datos en los archivos de datos
Los registros de redo se utilizan de forma cíclica. Cada grupo de archivos de registro de rehacer se identifica mediante un número de secuencia de registro que se sobrescribe cada vez que se reutiliza el registro. LGWR escribe secuencialmente en los archivos de registro de rehacer en línea. Cuando se completa el grupo de registro de rehacer en línea actual, LGWR comienza a escribir en el siguiente grupo. Esto se denomina cambio de registro. Cuando se llena el último archivo de registro de rehacer en línea disponible, LGWR regresa al primer grupo de registro de rehacer en línea y comienza a escribir nuevamente.

Artículos relacionados

cómo encontrar una sesión que genere muchas tareas de rehacer
alterar el archivo de registro de cambios del sistema v/s registro de archivo actual
recrear archivos de registro de rehacer en la base de datos de Oracle
preguntas de la entrevista con el administrador de base de datos de Oracle senior