Rollback: En tecnologías de base de datos, un 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.
Commit: En el contexto de la Ciencia de la computación y la gestión de datos, 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 una transacción de base de datos.
Recovery: El Modo de Recuperación,
también conocido como Modelo de Recuperación ó Modo de Registro, es una opción
de configuración de base de datos que indica cómo se gestiona el uso del LOG
de Transacciones de SQL Server para dicha base de datos (esta opción se
configura para cada base de datos de forma independiente).
Como realizar estas operaciones en MySQL
1) Creamos una tabla
mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
2) Ahora realizamos una transacción
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Si aplicamos el Rollback los cambios no tendran efecto:
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
3) Si hacemos una operación commit por lo contrario, los cambios se realizaran:
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Como hacer el recovery:
Backup:mysqldump –host IP_DEL_SERVER –user USUARIO –opt DATABASE -p > BACKUP_NAME(La opción –opt optimiza el proceso de backup y es recomenado su uso)
Restore:mysql –host IP_DEL_SERVER -u USUARIO -p DATABASE < BACKUP_NAME
Como realizar las operaciones en Oracle
1) Para realizar un rollback en Oracle se hace lo siguiente:
ij> autocommit off;
ij> INSERT INTO menu VALUES ('dessert', 'rhubarb pie', 4);
1 row inserted/updated/deleted
ij> SELECT * from menu;
COURSE |ITEM |PRICE
-----------------------------------------------
entree |lamb chop |14
dessert |creme brulee |7
appetizer |baby greens |7
dessert |rhubarb pie |4
4 rows selected
ij> rollback;
ij> SELECT * FROM menu;
COURSE |ITEM |PRICE
-----------------------------------------------
entree |lamb chop |14
dessert |creme brulee |7
appetizer |baby greens |7
3 rows selected
2) Para hacer un commit:
ij> DROP TABLE menu; 0 rows inserted/updated/deleted
ij> CREATE TABLE menu (course CHAR(10), item CHAR(20), price INT); 0 rows inserted/updated/deleted
ij> INSERT INTO menu VALUES ('entree', 'lamb chop', 14), ('dessert', 'creme brulee', 6), ('appetizer', 'baby greens', 7);
3 rows inserted/updated/deleted
ij> commit; 3) Para hacer un recovery
RMAN> run {
set until time to_date('04-Aug-2004 00:00:00', 'DD-MON-YYYY HH24:MI:SS');
restore database;
recover database;
}
1) Creamos una tabla
mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
2) Ahora realizamos una transacción
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Si aplicamos el Rollback los cambios no tendran efecto:
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
3) Si hacemos una operación commit por lo contrario, los cambios se realizaran:
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Como hacer el recovery:
Backup:mysqldump –host IP_DEL_SERVER –user USUARIO –opt DATABASE -p > BACKUP_NAME(La opción –opt optimiza el proceso de backup y es recomenado su uso)
Restore:mysql –host IP_DEL_SERVER -u USUARIO -p DATABASE < BACKUP_NAME
Como realizar las operaciones en Oracle
1) Para realizar un rollback en Oracle se hace lo siguiente:
ij> autocommit off;
ij> INSERT INTO menu VALUES ('dessert', 'rhubarb pie', 4);
1 row inserted/updated/deleted
ij> SELECT * from menu;
COURSE |ITEM |PRICE
-----------------------------------------------
entree |lamb chop |14
dessert |creme brulee |7
appetizer |baby greens |7
dessert |rhubarb pie |4
4 rows selected
ij> rollback;
ij> SELECT * FROM menu;
COURSE |ITEM |PRICE
-----------------------------------------------
entree |lamb chop |14
dessert |creme brulee |7
appetizer |baby greens |7
3 rows selected
2) Para hacer un commit:
ij> DROP TABLE menu; 0 rows inserted/updated/deleted
ij> CREATE TABLE menu (course CHAR(10), item CHAR(20), price INT); 0 rows inserted/updated/deleted
ij> INSERT INTO menu VALUES ('entree', 'lamb chop', 14), ('dessert', 'creme brulee', 6), ('appetizer', 'baby greens', 7);
3 rows inserted/updated/deleted
ij> commit; 3) Para hacer un recovery
RMAN> run {
set until time to_date('04-Aug-2004 00:00:00', 'DD-MON-YYYY HH24:MI:SS');
restore database;
recover database;
}
Fuentes:
No hay comentarios:
Publicar un comentario