Documente Academic
Documente Profesional
Documente Cultură
AA10-EV1
CURSO
APRENDIZ
AA10-Ev1
Socialización y evaluación del modelo transaccional en un motor de Bases
de Datos específico
TUTOR
Camilo Andres Gutierrez Oviedo
INTRODUCCIÓN
Una transacción es una unidad de trabajo lógica y atómica que contiene una o más
declaraciones SQL.
Una transacción agrupa las sentencias de SQL para que estén todas confirmadas, lo que
significa que se aplican a la base de datos, o todas se retrotraen, lo que significa que se
deshacen de la base de datos. La base de datos Oracle asigna a cada transacción un
identificador único llamado ID de transacción.
Todas las transacciones de Oracle obedecen a las propiedades básicas de una transacción
de base de datos, conocidas como propiedades ACID.
Atomicidad
Se realizan todas las tareas de una transacción o ninguna de ellas se realiza. No hay
transacciones parciales. Por ejemplo, si una transacción comienza a actualizar 100 filas,
pero el sistema falla después de 20 actualizaciones, entonces la base de datos revierte los
cambios a estas 20 filas.
Consistencia
La transacción lleva la base de datos de un estado consistente a otro estado
consistente. Por ejemplo, en una transacción bancaria que carga a una cuenta de ahorros
y acredita a una cuenta corriente, una falla no debe hacer que la base de datos acredite
solo una cuenta, lo que podría llevar a datos inconsistentes.
Aislamiento
El efecto de una transacción no es visible para otras transacciones hasta que se confirma
la transacción. Por ejemplo, un usuario que actualiza la hr.employeestabla no ve los
cambios no confirmados employeesrealizados por otro usuario simultáneamente. Por lo
tanto, a los usuarios les parece que las transacciones se están ejecutando en serie.
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
AA10-EV1
Durabilidad
Los cambios realizados por transacciones comprometidas son permanentes. Una vez que
se completa una transacción, la base de datos garantiza a través de sus mecanismos de
recuperación que los cambios de la transacción no se pierden.
Una instrucción SQL ejecutable es una instrucción SQL que genera llamadas a
una instancia de base de datos , incluidas las declaraciones DML y DDL y la SET
TRANSACTIONdeclaración.
Un usuario ejecuta un comando DDL tales como CREATE, DROP, RENAME, o ALTER.
Una vez que finaliza una transacción, la siguiente instrucción SQL ejecutable inicia
automáticamente la siguiente transacción. El siguiente ejemplo ejecuta una UPDATE
para iniciar una transacción, finaliza la transacción con una ROLLBACK declaración y
luego ejecuta una UPDATE para iniciar una nueva transacción (tenga en cuenta que los
ID de transacción son diferentes):
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
AA10-EV1
En Oracle hay una vista v$lock que nos indica los objetos que se encuentran en
bloqueo, el identificador de usuario y sesión y el tipo de bloqueo.
Un join con la tabla dba_objects nos proporciona además el nombre y tipo de los
objetos bloqueados:
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
AA10-EV1
Esto ocurre porque se ha bloqueado uno o varios registros mediante setencias SQL.
Select´s especificados como “NO WAIT” o “FOR UPDATE NOWAIT” o por una
operación DDL que fue bloqueada. La solución podía pasar por hacer el commit o
rollback. El commit no funcionó porque no hay espacio en el tablespace.
En Oracle hay una vista llamada v$lock que nos indica los objetos que se encuentran en
bloqueo, el identificador de usuario, sesion y el tipo de bloqueo. Un join con la tabla
dba_objects nos proporcionará además el nombre y tipo de los objetos bloqueados. La
consulta seria de la siguiente manera:
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
AA10-EV1
Por defecto, Oracle activa los protocolos de concurrencia a nivel de sentencias, que
consisten en que una consulta utilice los valores que se encontraban en los registros
justo antes de comenzar la consulta (y no antes de comenzar la transacción). De esta
forma se evita que la consulta acceda a datos que no fueron confirmados (Uncommited
Data) o que están siendo actualizados por otras transacciones.
GESTIÓN Y SEGURIDAD DE BASES DE DATOS
AA10-EV1
Como las transacciones son aisladas (según las propiedades ACID), Oracle posee
distintos niveles de aislamiento para asegurar la consistencia. Entre ellos se encuentran:
• Lectura Confirmada: Una consulta solo utiliza datos que fueron confirmados
(Commited Data) antes del comienzo de la ejecución de la consulta.
• Serializable: Cada consulta utiliza los datos que fueron confirmados antes del
comienzo de la ejecución de la transacción, además de acceder también a los cambios
realizados por sentencias INSERT, DELETE, UPDATE que hayan sido ejecutadas
dentro de esta transacción.
• Sólo Lectura: Sólo es visible la versión de los datos al momento del comienzo de
la transacción y no se permiten sentencias INSERT, UPDATE, DELETE, dentro de la
transacción.