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