Está en la página 1de 6

Introduccin Los SGBD deben proporcionar instrumentos para evitar o remediar fallos.

Ante cualquier tipo de fallo hay que asegurar que despus de una actualizacin, la BD queda en estado consistente. Un sistema de recuperacin consiste en restaurar la BD a un estado que se sepa correcto, tras cualquier fallo que la haya dejado en un estado incorrecto o al menos sospechoso. 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 crdito a otra cuenta en la misma cantidad. En su conjunto ambas acciones deben fallar o triunfar; el Crdito no se debe cometer sin el dbito.

En esta investigacin tenemos como objetivos los siguientes puntos. Entender el concepto de transaccin en un sistema de bases de datos Comprender las propiedades bsicas que toda transaccin debe poseer Identificar las operaciones que pueden realizarse dentro de una transaccin Comprender los conceptos de confirmacin y reversin de una transaccin Identificar los diferentes estados por los que pasa una transaccin desde su inicio hasta su finalizacin

Concepto Transacciones Secuencia de operaciones que han de ejecutarse de forma atmica. . Una transaccin es atmica O se ejecutan todas las operaciones que componen la transaccin, o no se realiza ninguna. En Oracle es una secuencia de sentencias SQL que se trata como una nica unidad. Caractersticas Una transaccin est formada por una serie de instrucciones DML. Una transaccin comienza con la primera instruccin DML que se ejecute y finaliza con alguna de estas circunstancias: Una operacin COMMIT o ROLLBACK Una instruccin DDL (como ALTER TABLE por ejemplo) Una instruccin DCL (como GRANT) El usuario abandona la sesin Cada del sistema

Hay que tener en cuenta que cualquier instruccin DDL o DCL da lugar a un COMMIT implcito, es decir todas las instrucciones DML ejecutadas hasta ese instante pasan a ser definitivas. Tipos de transacciones
Tipo Lenguaje de Manipulacin de Datos (DML Data manipulation Language) Lenguaje de Definicin de datos(DDL Data Definition Language) Lenguaje de Control de Datos (DCL Data Control Language) Descripcin Consiste de cualquier nmero de sentencias DML que el servidor de Oracle trate como una sola entidad o una unidad lgica de trabajo

Tipo Descripcin
Consiste de solo una sentencia DDL

Consiste de solo una sentencia DCL

Propiedades ACID Se dice que toda "Base de Datos" debe cumplir con la prueba del acido, denominada"ACID"(Atomicity, Consistency, Isolation, Durability). Atomicidad: La atomicidad de una transaccin garantiza que todas sus acciones sean realizadas o ninguna sea ejecutada, en el caso de la transaccin bancaria o se ejecuta tanto el "deposito-deduccin" o ninguna accin ser realizada.( Todo o nada)

Consistencia : Muy similar a la "Atomicidad", la consistencia garantiza que las reglas que hayan sido declaradas para una transaccin sean cumplidas, regresando a la transaccin bancaria, supongamos que cada vez que se realice una transferencia interbancaria de $100,000 sea necesario notificar a la sucursal del tarjeta-habiente, si no es posible comunicarse y actualizar la informacin en la sucursal del cliente, toda la transaccin ser abortada.(-T lleva la BD de un estado de consistencia a otro No necesariamente se mantiene la consistencia a mitad de T) Aislamiento : Esto garantiza que las transacciones que se estn realizando en el sistema sean invisibles a todos los usuarios hasta que estas hayan sido declaradas finales, en la transaccin bancaria es posible que el sistema este programado para intentar en 5 o 10 ocasiones ms antes de abortar una transaccin por completo, a pesar que este ltimo paso no ha sido finalizado ya existen otras modificaciones en el sistema, este aislamiento "Isolation" garantiza que los usuarios del sistema no observen estos cambios intermedios hasta que sea finalizada la ltima accin de actualizacin. ( T no muestra los cambios que produce hasta que finaliza Puede no imponerse de forma estricta (niveles de aislamiento)) Durabilidad: La durabilidad de una transaccin garantiza que al instante en el que se finaliza la transaccin esta perdure a pesar de otras consecuencias, esto es, si el disco duro falla, el sistema an ser capaz de recordar todas la transacciones que han sido realizadas en el sistema.( Una vez que T finaliza con xito y es confirmada, los cambios perduran aunque el sistema falle despus)

Comandos Sentencias para el control de transacciones. COMMIT La instruccin COMMIT hace que los cambios realizados por la transaccin sean definitivos, irrevocables. Slo se debe utilizar si estamos de acuerdo con los cambios, conviene asegurarse mucho antes de realizar el COMMIT ya que las instrucciones ejecutadas pueden afectar a miles de registros. Adems el cierre correcto de la sesin da lugar a un COMMIT, aunque siempre conviene ejecutar explcitamente esta instruccin a fin de asegurarnos de lo que hacemos. Su sintaxis es:
COMMIT TO nombre_de_punto;

ROLLBACK Esta instruccin regresa a la instruccin anterior al inicio de la transaccin, normalmente el ltimo COMMIT, la ltima instruccin DDL o DCL o al inicio de sesin. Anula definitivamente los cambios, por lo que conviene tambin asegurarse de esta operacin. Un abandono de sesin incorrecto o un problema de comunicacin o de cada del sistema dan lugar a un ROLLBACK implcito.Su sintaxis:
ROLLBACK TO nombre_de_punto;

SAVEPOINT Esta instruccin permite establecer un punto de ruptura. El problema de la combinacin ROLLBACK/COMMIT es que un COMMIT acepta todo y un ROLLBACK anula todo. SAVEPOINT permite sealar un punto intermedio entre el inicio de la transaccin y la situacin actual. Su sintaxis es:
...instrucciones DML... SAVEPOINT nombre_de_punto;

....instrucciones DML... Para regresar a un punto de ruptura concreto se utiliza ROLLBACK TO SAVEPOINT seguido del nombre dado al punto de ruptura. Cuando se vuelve a un punto marcado, las instrucciones que siguieron a esa marca se anulan definitivamente.

Procesamiento de una transaccin Operaciones: Iniciar: Con la primera instruccin SQL ejecutada por el usuario desde que finaliz la ultima transaccin o desde el inicio de la sesin. Finalizar: el usuario la finaliza explcitamente con COMMIT [WORK] (Transaccin confirmada parcialmente) la anula explcitamente con la sentencia ROLLBACK [WORK] (Transaccin anulada) El sistema la finaliza implcitamente debido al cierre de la sesin. (Transaccin confirmada parcialmente) El sistema la anula implcitamente debido a la ocurrencia de un error (Transaccin anulada)

Estados y operaciones de una transaccin


Puede terminar de dos formas: - Con xito: las actualizaciones de que consta la transaccin se graban (commit) Con fracaso: Restaurar el estado inicial en el que se encontraba la BD antes de que empezara la transaccin. Las actualizaciones de que consta la transaccin debern por tanto, deshacerse (rollback).

Estado de los datos durante la transaccin Si se inicia una transaccin usando comandos DML hay que tener en cuenta que: Se puede volver a la instruccin anterior a la transaccin cuando se desee Las instrucciones de consulta SELECT realizadas por el usuario que inici la transaccin muestran los datos ya modificados por las instrucciones DML

El resto de usuarios ven los datos tal cual estaban antes de la transaccin, de hecho los registros afectados por la transaccin aparecen bloqueados hasta que la transaccin finalice. Esos usuarios no podrn modificar los valores de dichos registros. Tras la transaccin todos los usuarios ven los datos tal cual quedan tras el fin de transaccin. Los bloqueos son liberados y los puntos de ruptura borrados.

Ejemplos: Ejemplo 1.-Remueva los departamentos 290 y 300 de la tabla DEPARTMENTS, y actualice una fila en la tabla COPY_EMP. Haga todos los cambios permanentes.
DELETE FROM departments WHERE department_id IN (290, 300); 2 rows deleted. UPDATE copy_emp SET department_id = 80 WHERE employee_ id=206; 1 row updated. COMMIT; Commit complete.

Ejemplo 2.- Mientras se intenta eliminar un registro de la tabla TEST, se puede accidentalmente vaciar la tabla. Se puede corregir el error, utilizando la sentencia apropiada, y haciendo permanente el cambio a los datos.
DELETED FROM test; 25, 000 rows deleted. ROLLBACK; Rollback complete. DELETE FROM test WHERE id=100; 1 row deleted. SELECT* FROM test WHERE id= 100; No rows selected. COMMIT; Commit complete.

También podría gustarte