lunes, 13 de mayo de 2013


Modos de operación de un SGBD
Rollback
Es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Son cruciales para la recuperación de crashes de un servidor de base de datos; realizando rollback(devuelto) cualquier transacción que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente.
En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde la última sentencia BEGIN WORK, o START TRANSACTION sean descartados por el sistema de gestión de base de datos relacional (RDBMS), para que el estado de los datos sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos cambios tuvieran lugar.

Commit
(Acción de comprometer) se refiere a la idea de consignar un conjunto de cambios "tentativos, o no permanentes". Un uso popular es al final de unatransacción de base de datos.
Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o más sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió BEGIN WORK. Una sentencia COMMIT publicará cualquiera de los savepoints (puntos de recuperación) existentes que puedan estar en uso.
En términos de transacciones, lo opuesto de commit para descartar los cambios "en tentativa" de una transacción, es un rollback.

Recovery
Los procesos de restauración (restore o recovery) de los que todo SGBD dispone pueden reconstruir la BD y darle el estado consistente y correcto anterior al incidente. Esto se acostumbra a hacer gracias a la obtención de copias periódicas de los datos (se denominan copias de seguridad o back-up) y mediante el mantenimiento continuo de un diario (log) donde el SGBD va anotando todas las escrituras que se hacen en la BD.
Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que en cuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena la actualización en disco.
Si usa tablas transaccionales (como InnoDB o BDB), puede desactivar el modo autocommit con el siguiente comando: SET AUTOCOMMIT = 0;
Tras deshabilitar el modo autocommit poniendo la variable AUTOCOMMIT a cero, debe usar COMMIT para almacenar los cambios en disco oROLLBACK si quiere ignorar los cambios hechos desde el comienzo de la transacción.


Rollback en MySQL
mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB; 
mysql> INSERT INTO innotest VALUES(1); 
mysql> INSERT INTO innotest VALUES(2); 
mysql> INSERT INTO innotest VALUES(3); 
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
|     1 |
|     2 |
|     3 |
+-------+
mysql> BEGIN;
mysql> INSERT INTO innotest VALUES(4);
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
|     1 |
|     2 |
|     3 |
|     4 |
+-------+
mysql> ROLLBACK; 
mysql> SELECT * FROM innotest;
+-------+
| campo |

+-------+

|     1 |
|     2 |
|     3 |

+-------+

Commit en MySQL
mysql> CREATE TABLE t (name CHAR(20), UNIQUE (name)) TYPE = INNODB; 
mysql> BEGIN; 
mysql> INSERT INTO t SET name = 'William'; 
mysql> INSERT INTO t SET name = 'Wallace'; 
mysql> COMMIT;
mysql> SELECT * FROM t;
+---------+

| name    |
+---------+
| Wallace |
| William |
+---------+
Restore Table en MySQL
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'

Commit en Oracle
INSERT INTO paisVALUES(‘PY’, ‘PARAGUAY’);
UPDATE persona SET pais = ‘PY’ WHERE id = 1;
COMMIT;
Rollback en Oracle
INSERT INTO paisVALUES(1, ‘PY’, ‘PARAGUAY’);
UPDATE persona SET pais = ‘PY’ WHERE id = 1;
ROLLBACK;
Restore Base de datos Oracle

RECOVER [AUTOMATIC] [FROM 'localizacion'] [BD]
   [UNTIL CANCEL]
   [UNTIL TIME fecha]
   [UNTIL CHANGE entero]
[USING BACKUP CONTROLFILE]

Restore (tabla) en Oracle
RECOVER [AUTOMATIC] [FROM 'localizacion']
   TABLESPACE nombre_tablespace [, nombre_tablespace]


No hay comentarios:

Publicar un comentario