Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Definirea legaturilor intre baze de date

sql



+ Font mai mare | - Font mai mic



Definirea legaturilor intre baze de date

O legatura intre doua baze de date (database link) este un obiect al unei scheme dintr-una din baze, care permite accesarea obiectelor din cealalta baza de date. A doua baza poate sa nu apartina sistemului Oracle.



Odata creata o legatura, aceasta poate fi utilizata in instructiunile SQL pentru a face referinta la tabele sau vizualizari dintr-o alta baza de date, prin sufixarea numelor acestora cu sirul de caractere nume_legatura_bd. Prin intermediul unei legaturi se pot interoga tabele sau vizualizari din cealalta baza de date. De asemenea, aceste obiecte distante pot constitui subiectul instructiunilor INSERT, UPDATE, DELETE sau LOCK TABLE.

O legatura intre baze de date se creeaza prin comanda CREATE DATABASE LINK, care are urmatoarea sintaxa simplificata:

CREATE [SHARED] [PUBLIC] DATABASE LINK nume_legatura_bd

[

| clauza_autentificare} ] [USING 'sir_conectare'];

Cuvantul cheie SHARED determina utilizarea unei singure conexiuni de retea pentru a crea o legatura publica intre bazele de date. Aceasta va putea fi folosita de mai multi utilizatori.

Cuvantul cheie PUBLIC determina crearea unei legaturi publice intre bazele de date. O astfel de legatura este disponibila tuturor utilizatorilor. Daca se omite aceasta optiune, legatura este privata si, in acest fel, disponibila numai utilizatorului care a creat-o.

Prin nume_legatura_bd se poate specifica numele complet sau partial al legaturii bazei de date. Daca se precizeaza numai numele bazei de date, sistemul va adauga implicit domeniul bazei locale.

O legatura intre baze de date nu poate fi creata in schema altui utilizator. De alfel, nume_legatura_bd nu poate fi prefixat de numele unei scheme.

Clauza USING specifica numele serviciului corespunzator bazei de date distante. Daca se precizeaza doar numele bazei, sistemul adauga implicit numele domeniului. Prin urmare, daca numele domeniului bazei distante este diferit de numele domeniului bazei curente, trebuie specificat intreg numele serviciului.

Exemplu

a)      Sa se defineasca o legatura de baze de date publica partajata care face referinta la baza de date specificata prin numele de serviciu arta.

CREATE SHARED PUBLIC DATABASE LINK distant
USING 'arta';
b)      Se presupune ca tabelul opera se afla in baza de date accesata prin legatura distant. Sa se mareasca cu 10% valoarea operelor de arta create de artistul avand codul 100.
UPDATE opera@distant
SET valoare = valoare * 1.1
WHERE cod_artist = 100;

Clauza CONNECT TO permite activarea conexiunii la baza distanta. Cu ajutorul optiunii CURRENT_USER se poate crea o legatura a utilizatorului curent. Acesta trebuie sa aiba un cont valid in baza de date distanta si sa fie un utilizator global.

Clauza IDENTIFIED BY specifica numele utilizatorului si parola pentru conexiunea la baza de date distanta, creand o legatura a unui utilizator fixat. In absenta acestei clauze, legatura va folosi numele si parola fiecarui utilizator care este conectat la baza.

Exemplu
Se presupune ca utilizatorul student, avand parola oracle, de pe baza de date distant defineste o legatura proprie, numita local, catre schema student de pe baza de date local.
CREATE DATABASE LINK local
CONNECT TO student IDENTIFIED BY oracle
USING 'local';
Sa se afiseze continutul tabelului artist din schema student a bazei de date local.
SELECT *
FROM artist@local;
Se presupune ca utilizatorul student are privilegiul SELECT asupra tabelului profesor.opera. Sa se afiseze, de catre student, continutul acestui tabel.
SELECT * FROM profesor.opera@local;

Specificarea numelui utilizatorului si a parolei pentru instanta destinatie are loc in clauza_autentificare. Aceasta informatie este folosita pentru validarea utilizatorului pe server-ul distant si este necesara din considerente de securitate. Numele si parola sunt utilizate exclusiv pentru autentificare, nefiind efectuata nici o alta operatie in numele acestui utilizator. Clauza este obligatorie daca se precizeaza cuvantul cheie SHARED.



Exemplu

Sa se defineasca o legatura a utilizatorului curent catre baza de date distant, utilizand numele intreg al serviciului ca identificator al legaturii.

CREATE DATABASE LINK distant.info.univ.ro

CONNECT TO CURRENT_USER USING 'distant';

Sa se defineasca un sinonim care sa mascheze faptul ca tabelul opera al schemei student se afla pe baza de date distant.

CREATE SYNONYM tab_opera

FOR student.opera@distant.info.univ.ro;

Odata accesata, o legatura catre o baza de date ramane deschisa pana la inchiderea sesiunii. O legatura este deschisa in sensul ca exista un proces activ pe fiecare dintre bazele de date distante accesate prin legatura.

La inchiderea unei sesiuni, legaturile care au fost active vor fi inchise in mod automat. Daca se stabileste o conexiune de retea care nu este utilizata frecvent in aplicatie, poate fi utila inchiderea manuala a legaturii active din sesiunea curenta. Instructiunea care permite acest lucru este urmatoarea:

ALTER SESSION CLOSE DATABASE LINK nume_legatura_bd

Suprimarea unei legaturi catre o baza de date se realizeaza prin comanda:

DROP [PUBLIC] DATABASE LINK nume_legatura_bd;

In cazul stergerii unei legaturi private, aceasta trebuie sa apartina schemei utilizatorului care initiaza suprimarea. Suprimarea unei legaturi publice necesita privilegiul corespunzator (DROP PUBLIC DATABASE LINK).





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1162
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved