In termini meccanici un commit fa una transazione. Cioè, una transazione è tutta l'attività (una o più istruzioni DML) che si verifica tra due istruzioni COMMIT (o ROLLBACK).
In Oracle un'istruzione DDL è una transazione a sé stante semplicemente perché un COMMIT implicito viene emesso prima che l'istruzione venga eseguita e nuovamente in seguito.
Da una prospettiva di progettazione del sistema una transazione è una business unit di lavoro. Potrebbe consistere in una singola istruzione DML o in una di esse. Non importa: solo le transazioni complete richiedono COMMIT. Letteralmente non ha senso emettere un COMMIT a meno che o fino a quando non abbiamo completato un'intera unità aziendale di lavoro.
Questo è un concetto chiave. I COMMIT non rilasciano solo i blocchi. In Oracle rilasciano anche latch, come l'Elenco transazioni interessate. Ciò ha un impatto a causa del modello di coerenza di lettura di Oracle. Eccezioni come ORA-01555: SNAPSHOT TOO OLD
o ORA-01002: FETCH OUT OF SEQUENCE
si verificano a causa di commit inappropriati. Di conseguenza, è cruciale che le nostre transazioni restino bloccate per tutto il tempo necessario.
'truncate' rimuove i dati direttamente senza copiarli in Rollback Tablespace. È una dichiarazione DDL. – danihp
DCL deve essere eseguito? cioè concedere + revocare – toop
Unisci. Seleziona anche per l'aggiornamento accetta i blocchi, anche se non modifica nulla. –