En términos mecánicos un COMMIT hace una transacción. Es decir, una transacción es toda la actividad (una o más declaraciones DML) que se produce entre dos instrucciones COMMIT (o ROLLBACK).
En Oracle, una sentencia DDL es una transacción en sí misma simplemente porque se emite una COMMIT implícita antes de que se ejecute la instrucción y luego otra vez.
Desde el punto de vista del diseño del sistema, una transacción es una unidad de trabajo comercial. Puede consistir en una única declaración de DML o varios de ellos. No importa: solo las transacciones completas requieren COMMIT. Literalmente no tiene sentido emitir un COMMIT a menos que o hasta que hayamos completado una unidad de trabajo comercial completa.
Este es un concepto clave. Los COMPROMISOS no solo lanzan bloqueos. En Oracle también liberan pestillos, como la Lista de transacciones interesadas. Esto tiene un impacto debido al modelo de coherencia de lectura de Oracle. Excepciones como ORA-01555: SNAPSHOT TOO OLD
o ORA-01002: FETCH OUT OF SEQUENCE
se producen debido a compromisos inapropiados. En consecuencia, es crucial que nuestras transacciones se cuelguen de las cerraduras todo el tiempo que las necesiten.
'truncate' elimina datos directamente sin copiarlos en el espacio de tabla de reversión. Es una declaración DDL. – danihp
¿Hay que contratar DCL? es decir, conceder + revocar – toop
Fusionar. También seleccione para la actualización lleva bloqueos, aunque no modifique nada. –