Transacciones De La Base De Datos
Enviado por Dervek • 18 de Febrero de 2013 • 1.451 Palabras (6 Páginas) • 631 Visitas
Transacciones de la Base de datos
El servidor de Oracle garantiza la consistencia de los datos con base en
transacciones. Las transacciones proporcionan mayor flexibilidad y control
cuando los datos cambian y ello asegura la consistencia de los datos en el
caso de un fallo en el proceso del usuario o del sistema.
Las transacciones consisten de sentencias DML que componen un cambio
consistente en los datos. Por ejemplo, una transferencia de fondos entre dos
cuentas debe incluir el debito de una cuenta y el crédito a otra cuenta en la
misma cantidad. En su conjunto ambas acciones deben fallar o triunfar; el
crédito no se debe cometer sin el débito.
EL INICIO DE LAS TRANSICIONES
Una transacción inicia cuando la primera sentencia DML es encontrada y
finaliza cuando ocurre alguno de los siguientes puntos:
• Una sentencia COMMIT o ROLLBACK es usada
• Una sentencia DDL, como CREATE es utilizada
• Una sentencia DCL es usada
• El usuario sale de iSQL*Plus
• Una computadora falla o el sistema falla
Después de que una transacción finaliza, la siguiente sentencia SQL ejecutada
automáticamente inicia la siguiente transacción.
Una sentencia DDL o DCL es automáticamente completada y por consiguiente
implícitamente finaliza una transacción.
Ventajas de las sentencias COMMIT y ROLLBACK
• Asegurar la consistencia de datos
• Ver previamente los cambios de los datos antes de hacerlos
• permanentes
• Agrupar operaciones lógicamente relacionadas
Control explicito del control de transacciones
Se puede controlar la lógica de transacciones con el uso de las sentencias
COMMIT, SAVEPOINT y ROLLBACK.
Por cierto!: SAVEPOINT no es estándar ANSI de SQL.!!!
Deshaciendo cambios a un SAVEPOINT
Se pueden crear marcas en una transacción con la utilización de la sentencia
SAVEPOINT la cual divide la transacción en secciones más pequeñas.
Por lo que se pueden descartar los cambios pendientes hasta la marca con el uso de la sentencia ROLLBACK TO SAVEPOINT.
Si se crea una segunda marca con el mismo nombre de un savepoint anterior,
el savepoint anterior es eliminado.
Procesando transacciones implícitas
También dice que un tercer comando está disponible en iSQL*Plus. El comando
AUTOCOMMIT puede ser habilitado o deshabilitado. Si se habilita, cada
sentencia DML individual es cometida e inmediatamente es ejecutada. No se
pueden deshacer estos cambios. Si se deshabilita, la sentencia COMMIT debe
ser usada explícitamente. También, la sentencia COMMIT es usada cuando
una sentencia DDL es usada o cuando sales de iSQL*Plus.
Fallas en el sistema
Cuando una transacción es interrumpida por que el sistema falla, la transacción
entera es automáticamente deshecha. Esto previene errores por causas no
deseadas en el cambio de los datos y regresa las tablas de su estado al estado
del último commit. De esta manera, el servidor de Oracle protege la integridad
de las tablas.
Desde iSQL*Plus, una salida normal de una sesión es lograda oprimiendo el
botón “Exit”. Con SQL*Plus, una salida normal es lograda escribiendo el
comando EXIT en la línea de comandos. Cerrar la ventana es interpretado
como una salida anormal.
Cometiendo cambios (committing)
Cada dato que cambia durante la transacción es temporal hasta que la
transacción es cometida (committed). El estado de los datos antes de usar las
sentencias COMMIT o ROLLBACK es:
Las operaciones de manipulación de datos afectan en primera instancia
el buffer de la base de datos; por lo tanto, el estado previo de los datos
se puede recuperar.
El usuario actual puede revisar los resultados de las operaciones de
manipulación de datos para consultar las tablas con el uso de la
sentencia SELECT.
Otros usuarios no pueden ver los resultados de las operaciones de
manipulación de datos hechas por el usuario actual. El servidor de
Oracle establece la consistencia para asegurar que cada usuario vea los
datos como existieron desde el último commit.
Las filas afectadas son bloqueadas; otros usuarios no pueden cambiar
los datos de las filas afectadas.
Haga permanentes todos los cambios pendientes con el uso de la sentencia
COMMIT. Después de una sentencia COMMIT:
• Los cambios de datos son escritos en la base de datos
• El estado previo de los datos es perdido permanentemente
• Todos los usuarios pueden ver los resultados de la transacción
• Los bloqueos en las filas afectadas son liberados; las filas son ahora
• disponibles para que otros usuarios realicen nuevos cambios a los datos
• Todos los savepoints son borrados.
En el ejemplo se elimina una fila de la tabla EMPLOYEES y se inserta
una nueva fila en la tabla DEPARTMENTS. Para hacer estos cambios
permanentes se utiliza la sentencia COMMIT.
Ejemplo
• Remueva los departamentos 290 y 300 de la tabla DEPARTMENTS
• actualice una fila en la tabla COPY_EMP.
• Haga todos los cambios permanentes
Deshaciendo cambios (rolling back)
Deshaga todos los cambios pendientes con el uso de la sentencia ROLLBACK.
...