Sunteți pe pagina 1din 4

Gestiunea utilizatorilor

Obiectiv: n aceast lecie se vor crea i gestiona roluri, profile i utilizatori.


1. Verificai dac exist utilizatorul cu numele INVENTORY. Putei s utilizai acest script:
Select * from dba_users;

Dac acest utilizator nu exist l putei crea folosind sciptul de mai jos. Atenie! Asigurai-v
c tablespace-ul INVENTORY este creat (vezi Gestiunea tabelelor spaiu).
drop user inventory cascade;
create user inventory identified by verysecure
default tablespace inventory;
grant connect, resource to inventory;

2. Creai un profil denumit HRPROFILE, cu un timp de ateptare de max 15 minute astfel:


a) Deschidei Enterprise Manager Console i v conectai cu utilizatorul DBA1.
b) Selectai tab-ul Administration > Schema > Users & Privileges > Profiles.
c) Click pe butonul Create.
d) Introducei HRPROFILE n caseta de text Name.
e) Introducei ca timp de ateptare 15 min n caseta de text Idle Time (Minutes).
f) Lsai celelalte casete cu opiunile implicite (DEFAULT).
g) Click pe tab-ul Password, vizualizai opiunile fr a le schimba (lsai valorile
DEFAULT).
h) Opional, putei vizualiza codul SQL generat automat fcnd click pe butonul Show SQL,
la final click Return.
i) La final, click pe OK pentru a crea profilul.
3. Pentru a funciona restriciile de timp, setai parametrul de iniializare RESOURCE_LIMIT
la valoarea TRUE astfel:
a) Selectai tab-ul Administration > Database Administration > Database Configuration > All
Initialization Parameters.
b) n caseta de text Filter introducei RESOURCE_LIMIT i click Go.
c) Selectai valoarea TRUE din lista de valori Value i click Apply.
4. Creai un rol denumit HRCLERK cu drepturi de SELECT i UPDATE pe tabela
HR.EMPLOYEES astfel:
a) Selectai tab-ul Administration > Schema > Users & Privileges > Roles.
b) Click pe butonul Create din dreapta paginii.
c) Introducei ca denumire HRCLERK n caseta de text Name.
d) Click pe Object Privileges.
e) Selectai opiunea Table din lista de valori Select Object Type i click pe Add.
f) Introducei HR.EMPLOYEES n caseta de text Select Table Objects.
g) Cu mouse-ul mutai drepturile de SELECT i UPDATE n caseta Selected Privileges. Click
OK.
h) Click pe butonul Show SQL pentru a vizualiza codul surs SQL.
i) Click Return pentru a reveni i apoi click OK pentru a crea rolul.

5. Creai un alt rol denumit HRMANAGER care are drepturi de INSERT i DELETE pe
tabela HR.EMPLOYEES. Acordai rolul HRCLERK rolului HRMANAGER astfel:
a) Selectai tab-ul Administration > Schema > Users & Privileges > Roles.
b) Click Create.
c) Introducei denumirea HRMANAGER n caseta de text Name.
d) Click pe Object Privileges.
e) Selectai Table din lista de valori Select Object Type i click Add.
f) Introducei HR.EMPLOYEES n caseta de text Select Table Objects.
g) Mutai cu mouse-ul drepturile de INSERT i DELETE n caseta Selected Privileges. Click
OK.
h) Click Roles i apoi click Edit List.
i) Mutai rolul HRCLERK n caseta Selected Roles i apoi click OK.
j) Click pe butonul Show SQL pentru a vizualiza codul surs SQL.
k) Click Return pentru a reveni i apoi click OK pentru a crea rolul.
6. Creai un cont pentru un angajat al departamentului HR cu numele de David, astfel:
a) Selectai tab-ul Administration > Schema > Users & Privileges > Users.
b) Click Create i introducei DAVID n caseta de text Name.
c) Selectai HRPROFILE ca profil pentru acest utilizator.
d) Selectai Password Authentication, i introducei ca parol: newuser (la fel i n caseta de
text Confirm Password). Selectai opiunea Expire Password now astfel nct utilizatorul s-i
schimbe parola dup la prima conectare.
e) Click pe Roles. Observai c n EM rolul CONNECT este implicit acordat utilizatorului.
f) Acordai rolul HRCLERK fcnd click pe Edit List i mutnd rolul HRCLERK n caseta
Selected Roles. Click OK pentru a nchide fereastra Modify Roles.
g) Click OK pentru a crea utilizatorul.
Creai un alt utilizator pentru un alt angajat al departamentului HR cu numele Mihaela
urmrind aceeai pai ca la punctul 6.
7.

Creai un alt utilizator pentru un nou manager al departamentului HR cu numele Marcel


urmrind aceeai pai ca la punctul 6, dar selectai rolul HRMANAGERn loc de HRCLERK.
8.

9. Testai dac utilizatorii creai anterior se pot conecta prin deschiderea unei sesiuni
SQL*Plus i ncercai s realizai anumite operaii astfel:
a) V conectai n iSQLPLUS cu utilizatorul DAVID i parola NEWUSER. Va apare mesajul
prin care suntei rugai s schimbai parola. Introducei o nou parol pentru acest utilizator.
b) Selectai salariul angajatului cu ID-ul =197din tabela HR.EMPLOYEES:
SELECTsalaryFROMhr.employeesWHEREEMPLOYEE_ID=197;

c) ncercai s tergei acest angajat:


DELETEFROMhr.employeesWHEREEMPLOYEE_ID=197;

Vei observa un mesaj de eroare prin care suntei avertizai c nu avei suficiente drepturi.
10. ncercai s v conectai cu utilizatorul Marcel (HR manager) i s realizai aceleai
operaii. Observai c se poate realiza tergerea unei nregistrri din tabela HR.EMPLOYEES.
La final anulai tergerea prin comanda ROLLBACK.
11. V conectai cu utilizatorul Mihaela, schimbai parola i rmnei conectai aproximativ
20-25 de minute. Dup aceast perioad ncercai s selectai angajaii din tabela
HR.EMPLOYEES. Observai mesajul de eroare aprut. Datorit limitrii de timp utilizatorul
a fost deconectat dup 15 min.

Gestiunea concurenei
Obiectiv: vizualizarea i deblocarea anumitor resurse la care au acces mai muli
utilizatori simultan.
1. Provocai o blocare a unei resurse (tabele) prin realizarea unei actualizri a nregistrrilor
fr finalizarea tranzaciei respective. Aparent sesiunea se va bloca. Sunt creai 2 utilizatori
noi, angajai ai departamentului HR care au acces concurent la tabela HR.EMPLOYEES.
a) Creai utilizatorii i le acordai drepturile de acces:
Prompt se creaza utilizatorii
-- Se sterg utilizatorii in cazul in care exista dj:
drop user spopa;
drop user ngeorgescu;
drop role hremployee;
-- Creati un rol pentru a gestiona drepturile
utilizatori
create role hremployee;
grant create session to hremployee;
grant select, update on hr.employees to hremployee;

acestor

grant hremployee to spopa identified by stud;


grant hremployee to ngeorgescu identified by stud;
b) V conectai cu utilizatorul ngeorgescu i modificai nr de telefon al angajatului cu ID-ul
110
--la conectare n comanda de mai jos adaugati si numele bazei
de date (de exemplu @orcl) sau va conectati prin varianta
vizuala
connect ngeorgescu/stud
set echo on
show user
update hr.employees set phone_number='650.555.1212' where
employee_id = 110;
prompt Utilizatorul "ngeorgescu" a realizat o actualizare fara
a finaliza tranzacia.
c) Lsai sesiunea anterioar deschis i ntr-o alt fereastr SQL v conectati cu utilizatorul
ngeorgescu si modificati nr de telefon al angajatului cu ID-ul 110. Atenie! Trebuie s rulai
acest script ntr-o alt sesiune (fereastr SQL):
--la conectare n comanda de mai jos adaugati si numele bazei
de date (de exemplu @orcl) sau va conectati prin varianta
vizuala
connect spopa/stud
show user

prompt Se incearca un nou Update


update hr.employees set phone_number='650.555.1212'
employee_id = 110;
prompt Actualizarea s-a finalizat

where

Observai c sesiunea aceasta este blocat i pare s nu reacioneze la comenzi.


2. Deschidei Enterprise Manager i rezolvai blocarea sesiunilor.
a) In Enterprise Manager, click pe pagina Performance.
b) Click pe Blocking Sessions din zona Additional Monitoring Links.
Vizualizai sesiunile care sunt blocate.
3. Vizualizai detaliile sesiunilor blocate:
a) Selectai sesiunea ngeorgescu i click pe butonul View Session.
b) n seciunea Application facei click pe link-ul din dreptul Previous SQL.
c) n fereastra aprut observai comanda SQL care a generat blocarea (apare n seciunea
TEXT).
4. Rezolvai conflictul prin terminarea unei sesiuni - n cazul nostru a sesiunii utilizatorului
ngeorgescu.
a) Click pe butonul Back al browseru-lui.
b) Selecai NGeorgescu i click pe butonul Kill Session.
c) n fereastra aprut lsai opiunea implicit (Kill Immediate) i vizualizai comanda SQL
(click pe Show SQL).
d) Click Return i apoi click Yes pentru a termina sesiunea.
5. Revenii n fereastra aferent sesiunii utilizatorului spopa i observai c actualizarea s-a
finalizat cu succes.
Atenie! La nchiderea unei ferestre SQL tranzaciile deschise n acea sesiune sunt finalizate,
fie prin ROLLBACK fie prin COMMIT n funcie de opiunile iniiale. Implicit este COMMIT.
De asemenea, dac dup execuia unei comenzi DML (insert, update, delete) se execut o
comand DDL (create, alter, drop) sau de gestiune a utilizatorilor (grant, revoke) tranzaciile
sunt automat finalizate.