ALTE DOCUMENTE
|
||||||
Sinonimele sunt o caracteristica importanta a bazei de date relationale Oracle; ele reprezinta o modalitate sigura si eficienta de accesare a obiectelor bazei de date.
Un sinonim este un alias pentru un obiect Oracle. Sinonimul nu este obiectul Oracle propriu-zis, ci mai degraba o referinta directa la un obiect. Acest obiect poate fi un tabel, o vedere, o secventa, o procedura, o functie, un pachet sau un alt sinonim. Singura restrictie în ceea ce priveste obiectul este ca acesta nu se poate gasi în interiorul unei proceduri. Sinonimele sunt create pentru a indica (folosind adresa exacta) aceste obiecte, astfel încât utilizatorii sa trebuiasca sa cunoasca numai numele sinonimului. Utilizatorii nu este necesar sa cunoasca proprietarul, numele si serverul obiectului.
Printre numeroasele avantaje ale utilizarii si 15515w224p nonimelor se numara urmatoarele:
Nu necesita alt spatiu de stocare decât cel ocupat de definitia lor în dictionarul de date
Simplificarea codificarii SQL
Îmbunatatirea securitatii bazei de date
Permit accesul public la un obiect Oracle
De asemenea, sinonimele sunt foarte utile în mediul bazelor de date deoarece ascund identitatea obiectelor la care fac referire. Acest lucru este avantajos deoarece atunci când obiectul de baza este redenumit sau mutat, este suficienta redefinirea numai a sinonimului. Aceasta permite aplicatiei care utilizeaza sinonimul sa continue fara modificare sau recompilare.
Sinonimele se utilizeaza pentru a îmbunatati securitatea bazei de date prin mascarea numelui real, proprietarului si locatiei obiectului pe care îl reprezinta. Acest lucru este valabil si în cazul bazelor de date distribuite unde se poate face referire la un obiect dintf-o baza de date situata la distanta.
Pot fi create sinonime private si publice. Sinonimele private sunt disponibile unui anumit utilizator. Privilegiile referitoare la un sinonim sunt acordate în mod explicit utilizatorului. Sinonimele publice sunt proprietatea grupului de utilizatori publici si sunt folosite în comun de toti utilizatorii bazei de date.
Pentru a crea un sinonim, folositi comanda SQL create synonym. Exemplul urmator creeaza un sinonim public numit ang pentru tabelul ANGAJAŢI din schema ang_
create public synonym ang FOR ang_0l.angajati;
Pentru crearea unui sinonim privat pentru tabelul ANGAJAŢI din schema ang . instructiunea SQL ar fi fost urmatoarea:
create synonym ang FOR ang_01.angajati;
Exemplul urmator creeaza un sinonim articol care face referire la coloana nr._art din tabelul LISTA_ARTICOLE, care este localizat în baza de date situata la distanta (remote) comp:
create synonym articol FOR lista_articole.nr_art@comp;
Pentru a crea un sinonim privat în schema dumneavoastra trebuie sa posedati privilegiul de sistem create synonym, iar pentru a crea un sinonim privat în schema altui utilizator trebuie sa posedati privilegiul de sistem create any synonym. Pentru a crea un sinonim public, trebuie sa posedati privilegiul de sistem create public synonym. Puteti atribui sinonimului acelasi nume ca al tabelului de baza la care face referire.
Într-o instructiune SQL referirea unui sinonim sa face în acelasi fel ca si referirea obiectului de baza. Urmatoarele doua exemple ilustreaza utilizarea sinonimelor în codul instructiunilor SQL.
Instructiune SQL fara utilizarea unui sinonim:
select * from ang_01.angajati
Aceeasi instructiune cu utilizarea unui sinonim:
select * from ang;
Un sinonim poate fi folosit în locul obiectului de baza în oricare dintre urmatoarele instructiuni DML (Data Manipulation Language - limbaj de manipulare a datelor):
Select
Insert
Update
delete
explain plan
lock table
Sinonimele pot fi folosite si în urmatoarele instructiuni DDL (Data Dictionary Language - limbajul dictionarului de date).
grant
comment
revoke
audit
noaudit
Puteti folosi orice sinonim privat care se gaseste în schema dumneavoastra sau orice sinonim public pentru care posedati privilegiile de sistem adecvate pentru accesarea obiectului de baza. Accesul la acesta din urma poate fi poate fi acordat în mod explicit unui rol activat sau tuturor (public). Puteti de asemenea sa folositi orice sinonim privat continut în alta schema daca v-au fost acordate privilegiile corespunzatoare pentru sinonimul respectiv. Codul urmator creeaza sinonimul ang si acorda utilizatorului USER_ privilegiile select asupra tabelului ANG:
create public synonym ang for ang_01.angajati; grant select on ang to USER_01;
Din acest moment, utilizatorul USER_01 poate sa execute o instructiune select asupra obiectului prin mentionarea sinonimului ang sau prin utilizarea numelui complet al tabelului, ang 01.angajati.
Numele unui sinonim privat trebuie sa fie distinct de numele tuturor celorlalte obiecte din schema în care se gaseste. Serverul Oracle va încerca sa expliciteze referirile la un obiect la nivelul schemei sinonimului înainte de a le explicita la nivelul sinonimelor publice. Daca obiectul referit de un sinonim nu este precedat de numele schemei sau nu este urmat de o legatura cu o baza de date, programul oracle considera sinonimul ca fiind public. Exemplul urmator ilustreaza modul în care serverul Oracle expliciteaza sinonimele.
în acest exemplu, schemele comp si divizie contin un tabel numit DEPT. Un sinonim public numit dept face referire la tabelul comp.dept. Daca utilizatorul schemei divizie lanseaza urmatoarea instructiune SQL, programul Oracle returneaza liniile din tabelul comp.dept:
select * from dept;
Pentru a accesa tabelul comp.dept, utilizatorul din schema divizie va trebui sa lanseze urmatoarea instructiune SQL:
select * from comp.dept;
Orice utilizator a carui schema nu contine obiectul DEPT poate beneficia de sinonimul public dept prin intermediul urmatoarei instructiuni SQL: select * from dept; Aceasta instructiune va returna liniile din tabelul comp. dept.
Puteti crea sinonime pentru pachete si proceduri Oracle de sine statatoare pentru a masca numele si proprietarul pachetului sau al procedurii, precum si pentru a masca locatia pentru pachetele si procedurile stocate la distanta.
Atunci când un utilizator privilegiat trebuie sa execute o asemenea procedura, el poate folosi sinonimul asociat, întrucât procedurile definite în interiorul unui pachet nu sunt obiecte de sine statatoare, pentru acestea nu pot fi create sinonime.
Pentru a elimina un sinonim din baza de date si din dictionarul de date al acesteia, folositi comanda drop synonym. Pentru a distruge un sinonim public, adaugati cuvântul cheie public. Exemplul urmator distruge sinonimul privat ang:
drop synonym ang;
Urmatoarea instructiune SQL distruge sinonimul public dept:
drop public synonym dept;
Orice referire la un sinonim distrus devine invalida. De exemplu, o procedura care utilizeaza sinonimul distrus dept nu va mai functiona deoarece nu va întelege cuvântul dept. Sinonimele care fac referire la tabefe nu sunt distruse atunci când sunt distruse tabelele asociate. Sinonimele care fac referire la un tabel distrus devin pur si simplu invalide.
Puteti redenumi un sinonim public al unui tabel folosind comanda rename. Exemplul urmator redenumeste sinonimul dept atribuindu-i noul nume unitate:
rename dept to unitate;
Toate privelegiile si indexurile apartinând vechiului sinonim sunt transferate noului sinonim.
în acest capitol, ati facut cunostinta cu sinonimele, care reprezinta o cale eficienta si sigura de referire a obiectelor Oracle. Sinonimele sunt aliasuri pentru obiecte cum ar fi tabele, vederi, instantanee, functii si pachete.
Sinonimele sunt folosite pentru a simplifica procesul de creare a codurilor SQL si pentru a îmbunatati securitatea bazei de date. Acest lucru se realizeaza prin mascarea numelui real, proprietarului si locatiei obiectului care se ascunde în spatele sinonimului. Utilizatorului îi este suficient sa cunoasca numele sinonimului nu si informatiile specifice în legatura cu obiectul referit.
în acest capitol, ati învatat sa creati, sa utilizati si sa eliminati atât sinonime publice, cât si sinonime pnvate. Ati vazut cum trebuie creat un sinonim astfel încât acesta sa faca referire la un obiect al bazei de date care se gaseste fie în schema dumneavoastra, fie într-o baza de date situata la distanta (remote).
|