Fiecare
baza de date poseda un dictionar de date. Acesta reprezinta un set de
tabele si vederi folosite drept referinta read-only despre baza de date.
Ele se gasesc in schema utilizatorului "sys". Principala diferenta
dintre vederile dictionarului de date si vederile create de utilizatori
consta in aceea ca vederile dictionarului de date sunt gestionate de userul
SYS si rezultatele afisate de acestea sunt diferite functie de user-ul
care le acceseaza.
Un
dictionar stocheaza date atât despre structura logica
cât si despre cea fizica a bazei de date. Se urmaresc:
-informatii
despre constrângerile de integritate definite pentru tabelele din
baza de date;
-cantitatea
de spatiu alocat pentru un obiect schema si cât din el este folosit;
- alte informatii p ersistente despre baza de date.
Un
dictionar de date este creat când e creata baza de date. Pentru a
reflecta cu acuratete starea bazei de date în fiecare moment, dictionarul
de date este actualizat automat de Oracle ca raspuns la diferitele actiuni,
cum ar fi de exemplu modificarea structurii bazei de date. Baza de date
se bazeaza pe dictionarul de date pentru a înregistra, verifica si
dirija procesele exterioare.
Vederile dictionarului de date au unul din urmatoarele prefixuri:
USER_ - afiseaza informatii despre structurile proprii
utilizatorilor (din schema user-ilor). Sunt accesibile tuturor userilor
si nu au o coloana OWNER.
ALL_ - arata informatii referitoare
la toate obiectele la care are acces utilizatorul inclusiv la acele obiecte
care nu sunt proprietatea userului respectiv, dar pentru care i-au fost
acordate privilegii de acces. Sunt accesibile tuturor\ utilizatorilor
dar au in structura o coloana OWNER.
DBA_ - ofera informatii despre toate structurile
din baza de date - arata ce exista in toate schemele utilizatorilor.
Sunt accesibile administratorilor bazei de date, furnizeaza
informatii despre toate obiectele din baza de date si au coloana OWNER.
O parte din dictionarul de date este utilizat atat de dezvoltatori
cat si de DBA pentru a regasi informatii despre tabele, coloane, indecsi
sau alte obiecte din baza de date. Acestea sunt vederile
comune ale dictionarului.
O parte dintre informatii
se gasesc în tabelul sistem USER_TABLES. De aici
se pot afla numele tabelelor create de utilizator folosind comanda:
SELECT table_name FROM user_tables;
Un alt tabel virtual al dictionarului din care pot fi extrase
numele tabelelor este USER_OBJECTS, cu structura urmatoare:
Se va folosi interogarea
urmatoare:
SELECT object_name
FROM user_objects
WHERE object_type =’TABLE’;
Pentru a afla detalii despre atributele unui tabel, este necesara
consultarea unui alt tabel al dictionarului de date: USER_TAB_COLUMNS,
cu structura:
Dictionarul bazei
de date pastreaza informatii despre restrictii într-un
tabel virtual special, numit USER_CONSTRAINTS. Structura acesteia
este urmatoarea:
Pentru a afla daca un
tabel are declarata cheie primara, respectiv chei alternative (candidate),
se poate folosi atributul constraint_type (care are valorile ‘P’
pentru cheia primara respectiv ‘U’ pentru cheile alternative).
Utilizarea clauzei CONSTRAINT face posibila atribuirea unui nume
explicit fiecarei restrictii.
Tabelul USER_CONSTRAINTS
din dictionarul de date ofera informatii cu privire la
restrictiile definite pentru fiecare tabel din baza. Pentru
a afla care sunt atributele care fac parte din cheile primare sau
alternative se foloseste un alt tabel din dictionarul de date
USER_CONS_COLUMNS,
a carui structura este:
Aflarea atributelor declarate în toate restrictiile este
posibila prin urmatoarea fraza SELECT:
SELECT constraint_name, column_name, position
FROM user_cons_columns
WHERE table_name = ‘nume_tabel_vizat’;
Daca se doreste aflarea
componentei
cheii primare a unui tabel al carui nume este cunoscut (fie acesta
pk_tabel)
se poate recurge la interogarea urmatoare:
SELECT constraint_name, column_name, position
FROM
user_cons_columns
WHERE constraint_name =’pk_tabel’;
In dictionarul de date
informatiile despre restrictiile referentiale sunt pastrate
tot în tabelul USER_CONSTRAINTS si USER_CONS_COLUMNS, si se
pot obtine prin fraza:
SELECT constraint_name,
table_name, r_constraint_name
FROM user_constraints
WHERE constraint_type =’R’;