Sunteți pe pagina 1din 4

Gestiunea utilizatorilor

Obiectiv: În această lecţie se vor crea şi gestiona roluri, profile şi utilizatori.

Interfaţa Enterprise Manager Console poate fi accesată utilizând


http://37.120.250.20:5500/em pentru server-ul ASE. Numele bazei de date este oracle si
portul 1521.
Pentru instanta locala (masina virtuala):
Enterprise manager console http://xpone:1158/em
Instanta BD
host: xpone
port 1521
service name: orcl

Pentru conexiunea in SQL Developer folositi urmatoarele detalii in fereastra New


database Connection (click dr pe Connection-> New Connection):

Connection Name: numele Dvs


Username: DBA1_NUME
Parola: oracle
Server Masina virtuala
Host: 37.120.250.20 Host: xpone
Port 1521 Port: 1521
Service_name: oracle Service_name: orcl

1. Verificaţi dacă există utilizatorul cu numele INVENTORY_NUME (unde NUME este


numele vostru) astfel:
a) Deschideţi SQL Developer.
b) Vă conectaţi cu MS_DBA şi parola oracle.
c) Rulaţi acest script penru a vizualiza utilizatorii bazei de date:
Select * from dba_users;

d) Dacă utilizatorul INVENTORY_NUME nu există îl puteţi crea folosind sciptul de mai jos.
drop user inventory_nume cascade;

create user inventory_nume identified by verysecure


default tablespace inventory;

grant connect, resource to inventory_nume;

2. Creaţi un profil denumit HRPROFILE_NUME astfel:


a) Deschideţi Enterprise Manager Console şi vă conectaţi cu userul MS_DBA şi parola oracle.
b) Selectaţi tab-ul Server > Security > Profiles.
c) Click pe butonul Create.
d) Introduceţi HRPROFILE_NUME (unde NUME este numele vostru) în caseta de text Name.
e) Introduceţi ca timp de aşteptare 15 min în caseta de text Idle Time (Minutes).
f) Lăsaţi celelalte casete cu opţiunile implicite (DEFAULT).
g) Click pe tab-ul Password, vizualizaţi opţiunile fără a le schimba (lăsaţi valorile
DEFAULT).
h) Opţional, puteţi vizualiza codul SQL generat automat făcând click pe butonul Show SQL,
la final click Return.
i) La final, click pe OK pentru a crea profilul.

3. Pentru a funcţiona restricţiile de timp, verificaţi dacă parametrul de iniţializare


RESOURCE_LIMIT este setat la valoarea TRUE astfel:
a) Selectaţi tab-ul Server > Database Configuration > Initialization Parameters.
b) În caseta de text Filter introduceţi RESOURCE_LIMIT şi click Go. Daca este setat pe
valoarea FALSE il schimbati in TRUE si Apply.

4. Creaţi un rol denumit HRCLERK_NUME astfel:


a) Selectaţi tab-ul Server > Security > Roles.
b) Click pe butonul Create din dreapta paginii.
c) Introduceţi ca denumire HRCLERK_NUME în caseta de text Name.
d) Click pe Object Privileges.
e) Selectaţi opţiunea Table din lista de valori Select Object Type şi click pe Add.
f) Introduceţi HR.EMPLOYEES în caseta de text Select Table Objects.
g) Cu mouse-ul mutaţi 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. Creaţi un alt rol denumit HRMANAGER_NUME. Acordaţi rolul HRCLERK_NUME


rolului HRMANAGER_NUME astfel:
a) Selectaţi tab-ul Server > Security > Roles.
b) Click Create.
c) Introduceţi denumirea HRMANAGER_NUME în caseta de text Name.
d) Click pe Object Privileges.
e) Selectaţi Table din lista de valori Select Object Type şi click Add.
f) Introduceţi HR.EMPLOYEES în caseta de text Select Table Objects.
g) Mutaţi cu mouse-ul drepturile de INSERT şi DELETE în caseta Selected Privileges. Click
OK.
h) Click Roles şi apoi click Edit List.
i) Mutaţi rolul HRCLERK_NUME î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. Creaţi un cont pentru un angajat al departamentului HR cu numele de David_NUME, astfel:


a) Selectaţi tab-ul Server > Security > Users.
b) Click Create şi introduceţi David_NUME în caseta de text Name.
c) Selectaţi HRPROFILE_NUME ca profil pentru acest utilizator.
d) Selectaţi Password Authentication, şi introduceţi ca parolă: newuser (la fel şi în caseta de
text Confirm Password). Selectaţi opţiunea Expire Password now astfel încât utilizatorul să-şi
schimbe parola după la prima conectare.
e) Click pe Roles. Observaşi că în EM rolul CONNECT este implicit acordat utilizatorului.
f) Acordaţi rolul HRCLERK_NUME făcând click pe Edit List şi mutând rolul
HRCLERK_NUME în caseta
Selected Roles. Click OK pentru a închide fereastra Modify Roles.
g) Click OK pentru a crea utilizatorul.
7.Creaţi un alt utilizator pentru un alt angajat al departamentului HR cu numele
Mihaela_NUME urmărind aceeaşi paşi ca la punctul 6.

8. Creaţi un alt utilizator pentru un nou manager al departamentului HR cu numele


Marcel_NUME urmărind aceeaşi paşi ca la punctul 6, dar selectaţi rolul HRMANAGER_NUME
în loc de HRCLERK_NUME.

9. Testaţi dacă utilizatorii creaţi anterior se pot conecta prin deschiderea unei sesiuni SQL şi
încercaţi să realizaţi anumite operaţii astfel:
a) Vă conectaţi în SQL Developer cu utilizatorul DAVID_NUME şi parola NEWUSER. Va
apare mesajul prin care sunteţi rugaţi să schimbaţi parola. Introduceţi o nouă parolă pentru
acest utilizator.
b) Selectaţi salariul angajatului cu ID-ul =197 din tabela HR.EMPLOYEES:
SELECT salary FROM hr.employees WHERE EMPLOYEE_ID=197;
c) Încercaţi să ştergeţi acest angajat:
DELETE FROM hr.employees WHERE EMPLOYEE_ID=197;
Veţi observa un mesaj de eroare prin care sunteţi avertizaţi că nu aveţi suficiente drepturi.

10. Încercaţi să vă conectaţi cu utilizatorul Marcel_NUME (HR manager) şi să realizaţi


aceleaşi operaţii. Observaţi că se poate realiza ştergerea unei înregistrări din tabela
HR.EMPLOYEES. La final anulaţi ştergerea prin comanda ROLLBACK.

11. Vă conectaţi cu utilizatorul Mihaela_NUME, schimbaţi parola şi rămâneţi conectaţi


aproximativ 20-25 de minute. După această perioadă încercaţi să selectaţi angajaţii din tabela
HR.EMPLOYEES. Observaţi mesajul de eroare apărut. Datorită limitării de timp utilizatorul
a fost deconectat după 15 min.

Gestiunea concurenţei

Obiectiv: vizualizarea şi deblocarea anumitor resurse la care au acces mai mulţi


utilizatori simultan.
1. Provocaţi o blocare a unei resurse (tabele) prin realizarea unei actualizări a înregistrărilor
fără finalizarea tranzacţiei respective. Aparent sesiunea se va bloca.

a) Vă conectaţi în SQL Developer cu utilizatorul DAVID_NUME şi modificaţi nr de telefon


al angajatului cu ID-ul 110

update hr.employees set phone_number='650.555.1212' where


employee_id = 110;

b) Lăsaţi sesiunea anterioară deschisă şi într-o altă fereastră SQL vă conectati cu utilizatorul
MIHAELA_NUME si modificati nr de telefon al angajatului cu ID-ul 110. Atenţie! Trebuie
să rulaţi acest script într-o altă sesiune (fereastră SQL):

update hr.employees set phone_number='650.555.1212' where


employee_id = 110;

Observaţi că sesiunea aceasta este blocată şi pare să nu reacţioneze la comenzi.


2. Deschideţi Enterprise Manager şi rezolvaţi blocarea sesiunilor astfel:
a) In Enterprise Manager, click pe pagina Performance.
b) Click pe Blocking Sessions din zona Additional Monitoring Links.
Vizualizaţi sesiunile care sunt blocate.

3. Vizualizaţi detaliile sesiunilor blocate:


a) Selectaţi sesiunea DAVID_NUME şi click pe butonul View Session.
b) În secţiunea Application faceţi click pe link-ul din dreptul “Previous SQL.”
c) În fereastra apărută observaţi comanda SQL care a generat blocarea (apare în secţiunea
TEXT).

4. Rezolvaţi conflictul prin terminarea unei sesiuni - în cazul nostru a sesiunii utilizatorului
DAVID_NUME.
a) Click pe butonul Back al browseru-lui.
b) Selecaţi DAVID_NUME şi click pe butonul Kill Session.
c) În fereastra apărută lăsaţi opţiunea implicită (Kill Immediate) şi vizualizaţi comanda SQL
(click pe Show SQL).
d) Click Return şi apoi click Yes pentru a termina sesiunea.

5. Reveniţi în fereastra aferentă sesiunii utilizatorului MIHAELA_NUME şi observaţi că


actualizarea s-a finalizat cu succes.

Atenţie! La închiderea unei ferestre SQL tranzacţiile deschise în acea sesiune sunt finalizate,
fie prin ROLLBACK fie prin COMMIT în funcţie de opţiunile iniţiale. Implicit este COMMIT.
De asemenea, dacă după execuţia unei comenzi DML (insert, update, delete) se execută o
comandă DDL (create, alter, drop) sau de gestiune a utilizatorilor (grant, revoke) tranzacţiile
sunt automat finalizate.