Practica3 - Apartado 2c

De FdIwiki ABD
Saltar a: navegación, buscar

Los resultados deberían ser los mismos para todos, excepto la transaction Id que cada uno obtendremos una diferente.

Instruccion Que ha cambiado?Escribe el resultado Por que da ese resultado?
***** ejecuta el script BDejemplo.sql ***** ESCENARIO NUEVO
SET AUTOCOMMIT OFF; Autocommit a off
SELECT dbms_transaction.local_transaction_id FROM dual; Recibes la id 13.11.1078
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 Client A                       911111111111 
00000003 Client B                       911111111113 
00000002 Client C                       911111111112 
00000005 Client A                       911111111115 
00000004 Client A                       911111111114 
00000006 Client D                       911111111116 
6 filas seleccionadas
Se hace una consulta sobre la tabla cliente que muestra dni nombre y telefono
INSERT INTO Cliente VALUES ('30000006','Client 3D','direc 312','391111111116'); Añade una fila a la tabla cliente Se añade correctamente
UPDATE Cliente SET NombreC = 'anulado' where Telefono LIKE '91%'; Se modifican 6 filas Confirmación correcta, se modifican las filas con el nombre= anulado, donde el telefono empiece por 91
SAVEPOINT Cliente_Anulado; Crea un nuevo punto de salvaguarda con el nombre Cliente_Anulado. Resultado: SAVEPOINT Cliente_Anulado Se hace correctamente
select dni, NombreC, Telefono from Cliente;
DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 anulado                        911111111111 
00000003 anulado                        911111111113 
00000002 anulado                        911111111112 
00000005 anulado                        911111111115 
00000004 anulado                        911111111114 
00000006 anulado                        911111111116 
30000006 Client 3D                      391111111116 
7 filas seleccionadas
Consulta de la tabla cliente
UPDATE Cliente SET NombreC = 'XXXXXXX'where NombreC='anulado'; 6 filas actualizadas. Correcto, donde nombre=anulado se cambia por XXXXXXX
UPDATE Cliente SET Telefono = 'XXXXXXX' where NombreC='XXXXXXX'; 6 filas actualizadas. Correcto de nuevo, donde nombre XXXXXXX se cambia el telefono por XXXXXXX
SAVEPOINT NombreC_Tel_XXXXXXX; SAVEPOINT NombreC_Tel_XXXXXXX Creado save point con el nombre NombreC_Tel_XXXXXXX
select dni, NombreC, Telefono from Cliente;
DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 XXXXXXX                        XXXXXXX      
00000003 XXXXXXX                        XXXXXXX      
00000002 XXXXXXX                        XXXXXXX      
00000005 XXXXXXX                        XXXXXXX      
00000004 XXXXXXX                        XXXXXXX      
00000006 XXXXXXX                        XXXXXXX      
30000006 Client 3D                      391111111116 
7 filas seleccionadas
Muestra la tabla con los cambios
ROLLBACK TO SAVEPOINT Cliente_Anulado; rollback terminado. Se hace rollback al saveopoint cliente_anulado
select dni, NombreC, Telefono from Cliente;
DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 anulado                        911111111111 
00000003 anulado                        911111111113 
00000002 anulado                        911111111112 
00000005 anulado                        911111111115 
00000004 anulado                        911111111114 
00000006 anulado                        911111111116 
30000006 Client 3D                      391111111116 
7 filas seleccionadas
Se ha vuelto al rollback con la información que se tenía en ese momento
ROLLBACK TO SAVEPOINT NombreC_Tel_XXXXXXX; -- da un error
Error que empieza en la línea 1 del comando:
ROLLBACK TO SAVEPOINT NombreC_Tel_XXXXXXX
Informe de error:
Error SQL: ORA-01086: nunca se ha establecido el punto de grabación 
NOMBREC_TEL_XXXXXXX 
en esta sesión o no es válido
01086. 00000 -  "savepoint '%s' never established"
*Cause:    Trying to roll back to a save point that was never established.
*Action:
Da error porque se ha ejecutado un rollback a una situación anterior a la al SAVEPOINT NombreC_Tel_XXXXXXX;
SELECT dbms_transaction.local_transaction_id FROM dual; LOCAL_TRANSACTION_ID

13.11.1078

Id de la transaction esperando al commit
select dni, NombreC, Telefono from Cliente;
DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 anulado                        911111111111 
00000003 anulado                        911111111113 
00000002 anulado                        911111111112 
00000005 anulado                        911111111115 
00000004 anulado                        911111111114 
00000006 anulado                        911111111116 
30000006 Client 3D                      391111111116 
7 filas seleccionadas
No hay ningún cambio
ROLLBACK; rollback terminado. Ejecuta el rollback
select dni, NombreC, Telefono -- ha borrado todo

from Cliente;

no se ha seleccionado ninguna fila El rollback es anterior a la ejecución del script ejemplo
SELECT dbms_transaction.local_transaction_id FROM dual; -------- No hay ninguna transaction esperando al commit
COMMIT; confirmado Realiza un commit guardando los cambios ejecutados
NUEVA TRANS
SELECT dbms_transaction.local_transaction_id FROM dual;
LOCAL_ID_TRANSACTION
--------------------
No hay id porque se han confirmado los cambios con el commit y no hay ninguna transacción esperando
vuelve tú a ejecutar el script BDejemplo.sql ***** ESCENARIO NUEVO
SELECT dbms_transaction.local_transaction_id FROM dual;
LOCAL_TRANSACTION_ID
----------------
12.10.1154
Devuelve el id correspondiente a la transaccion
COMMIT; -- para confirmar la creación de la BDejemplo.sql confirmado Confirma la creación de la tabla.
NUEVA TRANS
SELECT dbms_transaction.local_transaction_id FROM dual;
LOCAL_TRANSACTION_ID
----------------
No hay ninguna transacción a la espera de que se realice commit.
UPDATE Cliente

SET NombreC = 'suspendido' where Telefono LIKE '91%';

6 filas actualizadas. Actualiza la tabla poniendo suspendido en los nombres de los clientes con telefono que empiece por 91
SAVEPOINT Cliente_Suspendido; SAVEPOINT Cliente_Suspendido Se crea el savepoint cliente_suspendido
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 suspendido                     911111111111 
00000003 suspendido                     911111111113 
00000002 suspendido                     911111111112 
00000005 suspendido                     911111111115 
00000004 suspendido                     911111111114 
00000006 suspendido                     911111111116 
6 filas seleccionadas
Consulta sobre la tabla cliente
ROLLBACK TO SAVEPOINT Cliente_Anulado; -- da error: ejecutar la siguiente instrucción: da una pista
Error que empieza en la línea 1 del comando:
ROLLBACK TO SAVEPOINT Cliente_Anulado
Informe de error:
Error SQL: ORA-01086: nunca se ha establecido el punto de grabación 
CLIENTE_ANULADO en esta sesión o no es válido
01086. 00000 -  "savepoint '%s' never established"
*Cause:    Trying to roll back to a save point that was never established.
*Action:
El savepoint cliente_anulado ha sido borrado
SELECT dbms_transaction.local_transaction_id

FROM dual;

LOCAL_TRANSACTION_ID
14.26.662
Id de la transaction que espera el commit
INSERT INTO Cliente VALUES ('30000006','Client 3D','direc 312','391111111116'); 1 filas insertadas. Inserta el valor en la tabla cliente
UPDATE Cliente

SET NombreC = 'especial' where Telefono LIKE '391%';

1 filas actualizadas. Actualiza la fila añadida en el paso anterior
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 suspendido                     911111111111 
00000003 suspendido                     911111111113 
00000002 suspendido                     911111111112 
00000005 suspendido                     911111111115 
00000004 suspendido                     911111111114 
00000006 suspendido                     911111111116 
30000006 especial                       391111111116 
7 filas seleccionadas
Muestra las columnas seleccionadas de la tabla cliente
SELECT dbms_transaction.local_transaction_id

FROM dual;

LOCAL_TRANSACTION_ID
14.26.662
Id de la transaction esperando el commit
ROLLBACK; rollback terminado. Se ejecuta el rollback a la ultima vez que se ha ejecutado el commit
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 Client A                       911111111111 
00000003 Client B                       911111111113 
00000002 Client C                       911111111112 
00000005 Client A                       911111111115 
00000004 Client A                       911111111114 
00000006 Client D                       911111111116 
6 filas seleccionadas
Devuelve la tabla sin los cambios por el rollback
SELECT dbms_transaction.local_transaction_id

FROM dual;

-------- No hay ningún Id porque no hay ninguna transaction esperando
UPDATE Cliente

SET NombreC = 'recuperado' WHERE NombreC='suspendido';

0 filas actualizadas. No hay ningún cliente con nombre suspendido, debido a que se volvió al valor original con el rollback
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 Client A                       911111111111 
00000003 Client B                       911111111113 
00000002 Client C                       911111111112 
00000005 Client A                       911111111115 
00000004 Client A                       911111111114 
00000006 Client D                       911111111116 
6 filas seleccionadas
Devuelve la tabla cliente con las columnas elegidas
ROLLBACK TO SAVEPOINT Cliente_Suspendido;
Error que empieza en la línea 1 del comando:
ROLLBACK TO SAVEPOINT Cliente_Suspendido
Informe de error:
Error SQL: ORA-01086: nunca se ha establecido el punto de grabación 
CLIENTE_SUSPENDIDO en esta sesión o no es válido
01086. 00000 -  "savepoint '%s' never established"
*Cause:    Trying to roll back to a save point that was never established.
*Action:
No se puede hacer el rollback, ya que no hay ningun savepoint con ese nombre
select dni, NombreC, Telefono

from Cliente;

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
00000001 Client A                       911111111111 
00000003 Client B                       911111111113 
00000002 Client C                       911111111112 
00000005 Client A                       911111111115 
00000004 Client A                       911111111114 
00000006 Client D                       911111111116 
6 filas seleccionadas
Devuelve la tabla pero no ha tenido ningún cambio
commit; confirmado. Se ejecuta commit aunque no haya habido ningún cambio
NUEVA TRANS
INSERT INTO Cliente VALUES ('30000006','Client 3D','direc 312','391111111116'); 1 filas insertadas. Inserta 1 fila en cliente
UPDATE Cliente

SET NombreC = 'especial' where Telefono LIKE '391%';

1 filas actualizadas. Cambia la fila insertada en el paso anteior
commit; confirmado. Se ejecuta commit guardando los cambios
NUEVA TRANS
SET TRANSACTION READ ONLY NAME 'Consultar'; transaction READ correcto. Establece la transacción de tipo read only de manera que no se puede

insertar actualizar o suprimir

Select dni, NombreC, Telefono

from Cliente where Telefono LIKE '391%';

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
30000006 especial                       391111111116
Devuelve la fila de la tabla cliente insertada anteriormente
UPDATE Cliente -- da error

SET NombreC = 'especial' where Telefono LIKE '391%';

Error que empieza en la línea 1 del comando:
UPDATE Cliente           -- da error
SET NombreC = 'especial'
where Telefono LIKE '391%'
Informe de error:
Error SQL: ORA-01456: no se puede realizar operaciones insertar/suprimir
/actualizar en una transacción READ ONLY
01456. 00000 -  "may not perform insert/delete/update operation inside a
 READ ONLY transaction"
*Cause:    A non-DDL insert/delete/update or select for update operation
          was attempted
*Action:   commit (or rollback) transaction, and re-execute
Da error porque no se pueden realizar operaciones de inserción

suprimir o actualizar en una transacción de tipo read only

commit; confirmado. Realiza el commit de la transacción guardando todos los cambios y terminando el read only
NUEVA TRANS
Select dni, NombreC, Telefono

from Cliente where Telefono LIKE '391%';

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
30000006 especial                       391111111116
Devuelve la fila de la tabla cliente
UPDATE Cliente

SET NombreC = 'Cambio 1º !!' where Telefono LIKE '391%';

1 filas actualizadas. Ahora si que se puede modificar porque se ejecuto el commit anterior y termino el commit read only
UPDATE Cliente

SET NombreC = 'Cambio 2º !!' where Telefono LIKE '391%';

1 filas actualizadas. Actualiza la tabla cliente
Select dni, NombreC, Telefono

from Cliente where Telefono LIKE '391%';

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
30000006 Cambio 2º !!                   391111111116
Devuelve la fila seleccionada
ROLLBACK; rollback terminado. Ejecuta el rollback al ultimo commit
Select dni, NombreC, Telefono

from Cliente where Telefono LIKE '391%';

DNI      NOMBREC                        TELEFONO   
-------- ------------------------------ ------------
30000006 especial                       391111111116
Devuelve la fila con el valor cuando se ejecuto el ultimo commit(los últimos dos cambios a la fila no se guardaron ya que no se hizo commit después de hacer el update)
Cuántas transacciones hay en este script?

Señaladonde termina una transacción y empieza la siguiente: escribe "NUEVA TRANS" después de última instrucción de cada Trans.

Cuantas?5