La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Transazioni. TIPI DI TRANSAZIONI DML – Data Manipulation Language un numero di DML statement che Oracle Server tratta come una singola entità DDL – Data.

Presentazioni simili


Presentazione sul tema: "Transazioni. TIPI DI TRANSAZIONI DML – Data Manipulation Language un numero di DML statement che Oracle Server tratta come una singola entità DDL – Data."— Transcript della presentazione:

1 Transazioni

2 TIPI DI TRANSAZIONI DML – Data Manipulation Language un numero di DML statement che Oracle Server tratta come una singola entità DDL – Data Definition Language una singola operazione DDL (create, alter,drop, truncate) DCL – Data Control Language una singola operazione DCL (grant, revoke)

3 TRANSAZIONI una transazione inizia quando il primo statement DML SQL viene eseguito una transazione finisce con uno dei seguenti eventi: -COMMIT o ROLLBACK statement - uno statement DDL o DCL viene eseguito (commit automatico) - lutente esce da iSQL*Plus - la macchina vai in crash

4 VANTAGGI DI COMMIT E ROLLBACK assicurano la consistenza permettono di vedere le modifiche apportate prima di renderle permanenti

5 CONTROLLO DI UNA TRANSAZIONE Time COMMIT Transaction Savepoint A Savepoint B DELETE INSERT UPDATE INSERT ROLLBACK al SAVEPOINT B ROLLBACK al SAVEPOINT A ROLLBACK

6 CONTROLLO DI UNA TRANSAZIONE StatementDescrizione COMMITTermina la transazione rendendo permanenti le modifiche SAVEPOINT nameSegna un savepoint (marca) nella transazione corrente ROLLBACKTermina la transazione cancellando le modifiche effettuate ROLLBACK TO SAVEPOINT nameEffettua il rollback nella transazione corrente fino al punto savepoint specificato. Omettendo la clausola savepoint, il rollback avviene sullintera transazione.

7 ROLLBACK TO SAVEPOINT il comando SAVEPOINT crea una marca nella transazione corrente in modo da dividerla in piccole sezioni ROLLBACK TO SAVEPOINT permette di effettuare un rollback fino al punto stabilito dal savepoint UPDATE … SAVEPOINT update done; Savepoint created. INSERT… ROLLBACK TO update done; Rollback complete. Creando un savepoint con lo stesso nome di uno creato precedentemente, il primo savepoint viene cancellato

8 TRANSAZIONE IMPLICITA Avviene una transazione implicita, cioè commit automatico: quando viene eseguito uno statement DDL quando viene eseguito uno statement DCL uscendo in modo normale (non anomalo) da SQL*Plus senza specificare COMMIT o ROLLBACK Si verifica un ROLLBACK automatico uscendo in modo anormale da SQL*Plus o quando la transazione viene interrotta per un errore di sistema

9 TRANSAZIONE IMPLICITA NOTA 1 : È possibile con SQL*Plus mettere il comando AUTOCOMMIT a ON. Questo significa che ogni statement DML verrà automaticamente committato dopo lesecuzione. NOTA2 : uscire in modo normale da SQL*Plus significa utilizzare il comando EXIT nel prompt. Chiudere la finestra senza uscire viene interpretato come chiudura anormale.

10 STATO DEI DATI PRIMA DI COMMIT O ROLLBACK si può tornare allo stato precedente dei dati, ogni operazione DML non committata è solo temporanea infatti viene prima effettuata nel database buffer in modo da poter ripristinare lutente che ha effettuato le operazioni DML può vedere il risultato con la SELECT gli altri utenti non possono vedere il risultato fino a dopo il commit le righe toccate dalle operazioni DML sono LOCCATE, gli altri utenti non possono modificare queste righe

11 STATO DEI DATI DOPO IL COMMIT le modifiche fatte ai dati diventano permanenti nel database lo stato precedente alle modifiche viene definitivamente perso tutti gli utenti possono vedere il risultato il LOCK sulle righe modificate viene rilasciato; le righe possono essere modificate da altri utenti tutti i SAVEPOINT vengono cancellati

12 STATO DEI DATI DOPO IL ROLLBACK le modifiche fatte vengono ripristinate viene riportato il database allo stato precedente le modifiche il LOCK sulle righe modificate viene rilasciato; le righe possono essere modificate da altri utenti

13 ROLLBACK A LIVELLO DI STATEMENT se un singolo statement DML di una transazione fallisce durante lesecuzione, verrà fatto il rollback solo di quello statement non viene fatto il rollback sulle modifiche fatte dai precedenti statement in caso si operazioni DDL, se uno statement non va a buon fine non è possibile fare rollback delle precedenti operazioni inquanto per ogni statement avviene un commit automatico

14 READ CONSISTENCY è possibile accedere al database in due modi : - lettura (SELECT statement) - scrittura (INSERT, UPDATE, DELETE statement) viene garantita, sia in lettura che in scrittura, la consistenza dei dati le modifiche fatte da un utente non vanno in conflitto con le modifiche fatte da un altro utente in lettura non si vedono le modifiche ancora in elaborazione (non committate) Lo scopo è di assicurare che ogni utente veda i dati allo stato dellultimo commit.

15 IMPLEMENTAZIONE READ CONSISTENCY Read consistency è unimplementazione automatica Quando unoperazione DML viene fatta sul database, Oracle Server mette una copia dei dati non ancora modificati sullUNDO SEGMENT Prima che venga effettuato il commit, tutti gli utenti che entrano in lettura, ad eccezione dellutente che ha effettuato le modifiche, vedrà uno snapshot dei dati nellUNDO SEGMENT Questo garantisce a chi entra in lettura la consistenza dei dati Al momento del commit, i dati diventano visibili a tutti gli utenti e lo spazio occupato dai vecchi dati nellundo segment viene liberato ed eventualmente riutilizzato Se si fa un rollback della transazione, la vecchia versione dellundo segment viene riscritta nelle tabelle e il database tornerà, anche per lutente che ha effettuato le modifiche, nello stato precedente la transazione


Scaricare ppt "Transazioni. TIPI DI TRANSAZIONI DML – Data Manipulation Language un numero di DML statement che Oracle Server tratta come una singola entità DDL – Data."

Presentazioni simili


Annunci Google