Preguntas examen
De FdIwiki ABD
1. ¿Cuales son las diferencias entre SERIALIZABLE y READ COMMITED?
- La diferencia entre los dos niveles de aislamiento es que SERIALIZABLE es mas restrictivo y después del interbloqueo los cambios no son efectivos. Sin embargo, en READ COMMITED si se producen las últimas actualizaciones que se hayan realizado en ambas sesiones.
2. Diferencias entre SET AUTOCOMMIT OFF y SET AUTOCOMMIT ON.
- Son sentencias que sirven para fijar el actualizado automático de las tablas tras ejecutar una instrucción. El SET AUTOCOMMIT OFF hace que las tablas no se actualicen cuando se ejecuta una instrucción mientras que el SET AUTOCOMMIT ON las actualiza.
3. ¿Qué funciones realizan COMMIT y ROLLBACK?
- Con COMMIT confirmamos todos los cambios que hayamos realizado en la base de datos. - Con ROLLBACK deshacemos todos los cambios realizados volviendo al inicio de la transacción o hasta un punto de retorno dentro de la misma transacción.
4. ¿Qué es un SAVEPOINT?
- Un SAVEPOINT se trata de un punto de salvaguarda dentro de una transacción al que podemos volver en cualquier momento a través de ROLLBACK.
5. ¿Cuando comienza una nueva transacción?
- Una transacción comienza en la siguiente instrucción después de un COMMIT y un ROLLBACK.
6. ¿Cuales son las propiedades que deben cumplir las transacciones para evitar la inconsistencia de datos?
- Atomicidad: O se ejecutan todas las operaciones de una transacción o ninguna. - Consistencia: El programador debe garantizarla, por ejemplo con el uso de check, triggers, primary key, foreign key,… - Aislamiento entre transacciones: Una transacción en proceso no permite acceder a sus actualizaciones antes de que sea confirmada. El programador es el responsable de comprobarlo. - Durabilidad: Comprobar que ningún error posterior impida la correcta actualización de una transacción confirmada previamente.
7. ¿Qué tiene que cumplir una tabla para que estar en 1FN?
- Sus atributos solo pueden ser atómicos, para evitar atributos multivalorados, compuestos y sus combinaciones.
8. ¿Qué tiene que cumplir una tabla para que estar en 2FN?
- Estar en 1FN y que los atributos que no formen parte de la CP dependan de forma completa de la CP. Depender de forma completa significa que si la CP está formada por dos atributos, los atributos que no formen parte de la CP dependen de ambos. Si sólo dependiera de uno de ellos, se trataría de dependencia parcial.
9. ¿Qué tiene que cumplir una tabla para que estar en 3FN?
- Estar en 1FN, 2FN y que no exista ninguna dependencia funcional transitiva entre los atributos que no son CP, es decir, que no exista ningún atributo que dependa funcionalmente de atributos que no formen parte de la CP.
10. ¿De qué manera se puede bloquear una sola fila de una tabla?
- Con una operación select cuya última línea sea FOR UPDATE consigues que la sesión actual bloquee la fila.
11. ¿Cómo provocarías un deadlock?
- Comienzas indicando que el nivel de aislamiento de la transacción es read committed o serializable en dos sesiones diferentes. Modificas una fila diferente de una tabla en cada sesión. Intentas modificar de forma respectiva la fila de la otra sesión. Dado que oracle está esperando a que se realice un commit o un rollback en sendas sesiones, se produce un deadlock.