Documente Academic
Documente Profesional
Documente Cultură
Tipuri de tranzacii
Tip Limbajul de manipulare a datelor (LMD) Limbajul de definire a datelor (LDD) Descriere Const din orice numr de instruciuni LMD pe care serverul Oracle le trateaz ca fiind o singur unitate logic de lucru. Const dintr-o singur instruciune LDD
O tranzacie ncepe cnd este ntlnit prima instruciune SQL executabil i se termin n momentul apariiei unuia din urmtoarele evenimentele: se execut instruciunea COMMIT sau ROLLBACK; se execut o instruciune LDD, cum ar fi, de exemplu, instruciunea CREATE; se execut o instruciune LCD (instuciuni de acordare provilegii); utilizatorul prsete mediul SQL*Plus; apare o eroare de sistem.
Dup ncheierea unei tranzacii, urmtoarea tranzacie va ncepe automat la ntlnirea primei instruciuni SQL. Modificrile realizate de o instruciune LDD sunt salvate automat i de aceea ncheie n mod implicit o tranzacie.
Punct salvare A
Descriere ncheie actuala tranzacie, toate modificrile efectuate asupra datelor devenind permanente. Marcheaz un punct de ntoarcere n cadrul tranzaciei curente. Instruciunea ROLLBACK ncheie tranzacia curent pierzndu-se toate modificrile temporare asupra datelor. Instruciunea ROLLBACK TO SAVEPOINT nume terge punctul de ntoarcere specificat de nume i anuleaz toate schimbrile survenite dup el.
Not: n SQL*Plus este disponibil o a treia comand, instruciunea AUTOCOMMIT, ce poate fi setat ON sau OFF. Dac este setat pe ON, fiecare instruciune LMD conduce la salvarea modificrilor imediat ce este executat. n acest caz nu se mai poate reface starea anterioar (un rollback nu mai este posibil). Dac este setat pe OFF, instruciunea COMMIT poate fi executat explicit. De asemenea, COMMIT este executat odat cu o instruciune LDD sau la prsirea mediului SQL*Plus. Fiecare modificare efectuat n timpul unei tranzacii este temporar pn n momentul execuiei comenzii COMMIT. Starea datelor nainte de un COMMIT sau ROLLBACK: operaiile de manipulare a datelor afecteaz iniial buffer-ul bazei de date; de aceea, starea iniiala a datelor poate fi reconstituit; utilizatorul curent poate revedea schimbrile efectuate prin interogarea tabelelor; ali utilizatori nu pot vedea modificrile fcute de utilizatorul curent. Serverul Oracle asigur consistena datelor la citire pentru a se asigura c fiecare utilizator vede datele aa cum existau ele n momentul ultimei salvri. nregistrrile afectate de modificri sunt protejate (locked), astfel nct ali utilizatori s nu poat efectua modificri asupra lor.
Starea datelor dup execuia instruciunii COMMIT: modificrile asupra datelor sunt salvate n baza de date; starea anterioar a datelor nu mai poate fi restaurat; toi utilizatorii pot vedea rezultatele tranzaciei; protecia nregistrrilor modificate este nlturat; astfel, aceste nregistrri pot fi modificate de ali utilizatori; toate punctele de ntoarcere sunt terse.
Urmtorul exemplu creeaz un nou departament ADVERTISING cu cel puin un angajat i salveaz modificrile fcute.
SQL> INSERT INTO department(deptno, dname, loc) 2 VALUES (50, 'ADVERTISING','MIAMI'); SQL> UPDATE employee 2 SET deptno = 50 3 WHERE empno = 7876; SQL> COMMIT;
1 row created.
1 row updated.
Commit complete.
Anularea modificrilor (refacerea strii iniiale) Anularea modificrilor temporare se face cu ajutorul instruciunii ROLLBACK. Dup un ROLLBACK: modificrile efectuate sunt anulate; este refcut starea anterioar a datelor; este ridicat protecia asupra nregistrrilor implicate n tranzacie.
Ca exemplu, n ncercarea de a terge o nregistrare din tabelul emp, se poate ntmpla s tergem accidental ntregul tabel. Aceast greeal se poate corecta, urmnd ca apoi s se execute instruciunile corecte i s se salveze modificrile.
SQL> DELETE FROM emp; SQL> ROLLBACK; SQL> DELETE FROM emp 2 WHERE empno = 7902; 14 rows deleted. Rollback complete.
1 row deleted.
No rows selected.
Commit complete.
Consistena la citire
Utilizatorii unei baze iniiaz dou tipuri de acces la baza de date: operaii de citire (instruciunea SELECT); operaii de scriere (instruciunile INSERT, UPDATE, DELETE).
Consistena la citire este necesar pentru ca: utilizatorii care citesc / modific datele s aib o vedere consistent asupra datelor; utilizatorii care citesc datele s nu vad datele care sunt n curs de modificare; utilizatorii care modific datele s aib sigurana c schimbrile n baza de date se fac n mod consistent; modificrile efectuate de un utilizator s nu intre n conflict sau s afecteze modificrile efectuate de un alt utilizator.
Scopul consistenei la citire este s asigure c fiecare utilizator vede datele n starea n care erau la ultima salvare, nainte de execuia unei instruciuni LMD.