Documente Academic
Documente Profesional
Documente Cultură
A MOLDOVEI
B. MIRONOV
GESTIONAREA BAZELOR
DE DATE
ndrumar de laborator
Chi"in#u 200$
Schema conceptual!
Schema intern!
Schema
extern! "
Schema
extern! i
Schema
extern! n
"
Prezentul ndrumar de laborator se adreseaz! studen#ilor facult!#ii
Calculatoare, Informatic! $i Microelectronic!, care studiaz! cursul
aprofundat de "Baze de date", grupelor de studii n cadrul magistraturii,
care studiaz! limbajul SQL $i n special sistemul Oracle. El poate fi
consultat $i de studen#ii altor facult!#i n cadrul cursurilor de informatic!.
Ciclul con#ine "" lucr!ri de laborator, consacrate cre!rii $i gestion!rii
bazelor de date rela#ionale. Fiecare lucrare este prefa#at! de un material
amplu teoretic necesar pentru n#elegerea principiilor de operare cu
bazele de date. Lucr!rile de laborator sunt axate pe sistemul Oracle
considerat cel mai utilizat sistem de gestiune a bazelor de date rela#ionale
din ntreaga lume.
Autor: conf. univ. dr. Bettin Mironov
Redactor responsabil: prof. univ. dr. hab. Teodor %i$ianu
Recenzent: conf. univ. dr. Leonid Carcea
U.T.M., 200"
2
CUPRINS
LUCRAREA DE LABORATOR NR. " Introducere n bazele de date
rela#ionale 3
LUCRAREA DE LABORATOR NR. 2 Structuri logice de stocare a
bazelor de date ""
LUCRAREA DE LABORATOR NR. 3. Proiectarea unei baze de date "9
LUCRAREA DE LABORATOR NR. 4 Tipuri de date. Tabele " 25
LUCRAREA DE LABORATOR NR. 5. Crearea tabelelor 36
LUCRAREA DE LABORATOR NR. 6. Integritatea datelor 42
LUCRAREA DE LABORATOR NR. 7. Selectarea si ntre#inerea
datelor 54
LUCRAREA DE LABORATOR NR. 8. SQL (limbaj structurat de
interogare) 63
LUCRAREA DE LABORATOR NR. 9. Reuniunile $i uniunile 77
LUCRAREA DE LABORATOR NR. "0. Vederi 88
LUCRAREA DE LABORATOR NR. "". Siguran#a bazei de date 94
ANEXE
Lista cuvintelor rezervate Oracle SQL: "22
Cuvintele rezervate pentru SQL*Plus. "27
Simboluri "29
Bibliografie "23
3
LUCRAREA DE LABORATOR Nr. $
Introducere n bazele de date rela%ionale
Bazele de date rela#ionale n prezent sunt cele mai utilizate pentru
modelarea $i gestionarea ntreprinderilor. Modelul rela#ional de date este
modelul cu cea mai larg! acceptare si utilizare. Modelul de date
rela#ional utilizeaz! cuvntul rela#ional deoarece n acest model se pot
construi cu u$urin#! rela#ii ntre tabele multiple. Un model rela#ional are
trei caracteristici esen#iale:
- structuri - obiecte definite care con#in date $i sunt accesibile
utilizatorilor;
- opera#ii - ac#iuni definite care manipuleaz! datele sau obiectele
schemei;
- reguli - legi care reglementeaz! cum $i de c!tre cine pot fi manipulate
datele.
O baz! de date rela#ional! este definit! pur $i simplu ca un model
de date care este vizualizat de utilizatorii lui exclusiv sub forma unor
tabele. Un tabel este o matrice bidimensional! format! din linii $i
coloane. Ori de cte ori sunt modificate date ntr-o baz! de date, se
modific! $i tabelul sau datele acestuia. n sfr$it, ntr-o baz! de date
rela#ional!, orice date care sunt rezultatul unei interog!ri sunt prezentate
utilizatorului n format coloan!-linie. Modelul de date rela#ional prezint!
urm!toarele avantaje fa#! de modelele de date tradi#ionale:
- un model de date u$or de n#eles $i de vizualizat;
- legi de integritate u$or de n#eles $i de dezvoltat, destinate protej!rii
datelor $i structurilor;
- spa#iu de stocare a datelor $i redundan#! reduse;
- independen#a structurii logice a bazelor de date de modul de stocare
fizic! a datelor.
n sistemele de baze de date rela#ionale se utilizeaz! limbajul de
interogare SQL (Structured Query Language - limbaj structurat de
interogare).
n "985 dr. Codd a definit modelul rela#ional ca pe o colec#ie de
tabele, el a stabilit urm!toarele "3 reguli, care definesc ce este o baz! de
date.
". Toate informa#iile din baza de date sunt reprezentate n mod explicit
sub form! de valori ntr-un tabel.
4
2. Toate datele individuale dintr-un tabel sunt ntotdeauna accesibile prin
furnizarea numelui tabelului, a coloanei $i a liniei.
3. Valorile nule sunt tipuri de date valide n baza de date rela#ional!. Ele
reprezint! inexisten#a informa#iilor.
4. Baza de date rela#ional! reprezint! descrierea bazei de date ntr-un
format logic simplificat de genul tabelelor.
5. Modelul rela#ional poate suporta mai multe limbaje, ns! SQL este
limbajul principal de nterfa#are.
6. Toate vederile sunt actualizabile, dac! vederea curent! este un tabel.
7. Modelul rela#ional trateaz! toate rela#iile de baz! $i rela#iile derivate ca
un singur operand pentru opera#iile update (actualizare), insert
(inserare) $i delete (eliminare) efectuate asupra datelor, precum $i
asupra datelor recuperate.
8. Aspectele logice ale bazei de date sunt complet separate de aspectele
fizice ale bazei de date.
9. Datele sunt conservate atunci cnd bazei de date i se aduc modific!ri
ilogice.
"0. Restric#iile de integritate pentru o baz! de date rela#ional! sunt create
n sublimbajul de baze de date (SQL) $i sunt stocate n catalogul bazei
de date $i nu n aplica#iile individuale.
"". Distribu#ia datelor c!tre programele de aplica#ie are loc continuu.
Distribu#ia datelor este procesul de copiere a datelor ntr-o baz! de date
situat! la distan#!.
"2. Regulile $i restric#iile de integritate nu pot fi evitate de nici un limbaj
de acces.
"3. Un SGBDR trebuie s! fie capabil s! gestioneze bazele de date
exclusiv pe baza caracteristicilor sale rela#ionale.
No%iuni despre sistemul de gestiune a bazelor de date
Pentru realizarea $i func#ionarea bazei de date este necesar un
sistem de gestiune a bazelor de date rela#ionale (SGBDR). n prezent cel
mai popular sistem de gestiune a bazelor de date rela#ionale este
considerat Oracle. El reprezint! nucleul liniei de produse oferite de
Oracle Corporation, care include, printre altele, un set de instrumente de
dezvoltare a aplica#iilor din a patra genera#ie, instrumente de raportare $i
utilitare. n afar! de sistemul Oracle exist! $i alte sisteme, de exemplu
Microsoft SQL Server, ndrumarul prezentat este axat n jurul sistemului
Oracle, dar rezultatele pot fi u$or extinse $i asupra altor SGBDR.
5
n#elegerea celor ce urmeaz!, este legat! de dou! concepte: baza de
date $i instan#a. O baz! de date este o colec#ie de date. Programul Oracle
stocheaz! aceste date folosind modelul rela#ional. Acest termen se refer!
att la datele fizice ct $i la structurile logice de memorie $i la procesele
din fundal. Instan"a se refer! la acea parte a memoriei pe care programul
Oracle a alocat-o pentru baza de date, precum $i la procesele din fundal
necesare pentru sus#inerea bazei de date.
Utilizarea programului Oracle prezint! urm!toarele avantaje
semnificative:
- este un sistem deschis" $i respect! standardele industriale n vigoare
referitoare la limbajele de accesare a datelor (SQL);
- suport! baze de date de orice dimensiuni, ncepnd de la c#iva octe#i
pn! la c#iva gigaocte#i;
- suport! un mare num!r de utilizatori simultan, minimizeaz! conflictele
de acces la date $i garanteaz! simultaneitatea datelor;
- suport! un mediu client/server real. El permite mp!r#irea proces!rii
ntre baza de date server $i programele de aplica#ie ale clientului;
- ofer! caracteristici de siguran#! total! pentru limitarea $i monitorizarea
accesului la date $i a utiliz!rii acestora;
- se comport! identic pe toate platformele (Windows, UNIX, Macintosh
$i sisteme mainframe). Aceasta deoarece peste 80 la sut! din codul s!u
este identic pe toate platformele $i sistemele de operare.
Sistemul Oracle poate fi instalat pe o mare varietate de platforme
hardware $i de sisteme de operare, inclusiv pe calculatoarele personale.
Capacitatea de procesare a sistemului Oracle este dat! de structurile
de memorie $i de procesele acestuia. Toate structurile de memorie rezid!
n memoria principal! a calculatorului. Procesele sunt sarcini $i ac#iuni
ale programului $i ale utilizatorului care se desf!$oar! n memoria
acestor calculatoare.
n func#ionare, Oracle folose$te dou! structuri de memorie
principale. Zona global! a sistemului (SGA - System Global Area) este o
structur! de memorie care con#ine datele $i controleaz! informa#iile
pentru o instan#! Oracle. Structura SGA mpreun! cu procesele din
fundal ale serverului constituie o instan#! Oracle. Cea de-a doua structur!
principal! de memorie este zona global! a programului (PGA - Program
Global Area). Aceast! structur! con#ine datele $i controleaz! informa#iile
6
pentru un proces server. Structura PGA este creat! la declan$area unui
proces server.
O baz! de date Oracle nu este n mod necesar disponibil! oricnd
tuturor utilizatorilor. Atunci cnd baza de date este deschis!, utilizatorii
pot accesa informa#iile acesteia. Atunci cnd baza de date este nchis!,
numai administratorul bazei de date are acces la ea. Administratorul
bazei de date - sau utilizatorii posesori ai unui privilegiu DBA (Data
Base Administrator) sunt singurii care pot s! porneasc! $i s! opreasc!
baza de date.
Pornirea bazei de date $i punerea ei la dispozi#ia utilizatorilor din
ntregul sistem presupune parcurgerea urm!toarelor trei etape:
- pornirea unei instan#e;
- montarea bazei de date;
- deschiderea bazei de date.
Pornirea unei instan#e este sinonim! cu pornirea bazei de date.
Cnd survine acest lucru, programul Oracle aloc! o por#iune a memoriei
partajate $i a proceselor din fundal. Aceast! por#iune alocat! a memoriei
partajate este cunoscut! sub numele de zon! global! a sistemului (SGA).
Dac! tocmai a fost pornit! o instan#!, nici o baz! de date nu este asociat!
cu aceast! structur! de memorie. n consecin#!, nici un utilizator nu poate
accesa informa#iile bazei de date.
Montarea bazei de date este procesul de asociere a unei baze de
date cu o instan#! pornit! anterior. Dup! montarea bazei de date, aceasta
este nchis! tuturor utilizatorilor pn! n momentul n care
administratorul bazei de date deschide baza de date.
Deschiderea bazei de date este procesul prin care baza de date este
pus! la dispozi#ia utilizatorilor pentru opera#ii obi$nuite de baze de date.
Orice utilizator autorizat se poate conecta la o baz! de date Oracle
deschis! $i poate accesa informa#iile acesteia.
Oprirea bazei de date Oracle presupune parcurgerea urm!toarelor
trei etape:
- nchiderea bazei de date;
- demontarea bazei de date;
- oprirea bazei de date.
nchiderea bazei de date determin! scrierea tuturor datelor bazei de date
n fi$ierele de date. Demontarea bazei de date reprezint! disocierea bazei
7
de date de instan#!. n sfr$it, oprirea bazei de date duce la ncheierea
tuturor proceselor server, iar SGA este eliminat! din memorie.
Accesarea bazei de date
O instan#! Oracle care este pornit! $i posed! o baz! de date
deschis! poate fi accesat! de utilizatori. Un utilizator este orice persoan!
care posed! un cont utilizator nregistrat n serverul Oracle $i c!reia i-au
fost acordate privilegiile corespunz!toare pentru accesul la date.
Accesarea bazei de date se poate face prin intermediul urm!toarelor
aplica#ii:
- aplica#ia utilizatorului ntr-un mediu client/server prin intermediul
SQL*NET;
- prin intermediul SQL*PLUS, una dintre cele mai r!spndite metode de
acces;
- instrumente Oracle, cum ar fi Developer 2000;
- prin intermediul unui apel OCI sau al unui alt apel de func#ie n care
sunt ncorporate instruc#iuni SQL, ntr-un limbaj de programare de
nivel sc!zut, cum ar fi C sau COBOL.
Lista care urmeaz! ilustreaz! accesarea de c!tre un utilizator a unui
SGBDR Oracle, ntr-un mediu client/server. Sunt descrise numai
opera#iile cele mai elementare pe care le efectueaz! Oracle.
". Un server Oracle posed! o instan#! pornit! $i o baz! de date montat! $i
deschis! utilizatorilor.
2. Aplica#ia utilizatorului ncearc! s! stabileasc! o leg!tur! cu serverul
Oracle.
3. Serverul recunoa$te cererea de conectare a clientului $i creeaz! un
proces n numele utilizatorului.
4. Aplica#ia utilizatorului recep#ioneaz! o confirmare privind succesul
conect!rii $i transmite instruc#iuni SQL pentru a accesa $i a actualiza
baza de date.
5. Procesul serverului recep#ioneaz! instruc#iuni SQL $i verific!
privilegiile de acces ale utilizatorului.
6. Dac! tranzac#ia SQL a decurs cu succes, procesul server transmite un
mesaj aplica#iei client. Dac! tranzac#ia nu s-a ncheiat cu succes,
serverul transmite clientului mesajul de eroare corespunz!tor.
7. n timpul acestei tranzac#ii, serverul previne conflictele de acces la
date cu alte tranzac#ii care solicita acelea$i date. De asemenea, serverul
8
gestioneaz! celelalte tranzac#ii $i urm!re$te situa#iile care necesit!
interven#ie.
Dic%ionarul de date Oracle
Nucleul bazei de date Oracle este dic#ionarul de date. Acest
instrument read-only" furnizeaz! tuturor utilizatorilor bazei de date
informa#ii despre baza de date asociat!. Dic#ionarul de date este creat
automat atunci cnd este creat! baza de date. Oracle actualizeaz!
dic#ionarul de date ca r!spuns la orice comand! DDL (Data Dictionary
Language - limbaj al dic#ionarului de date) emis!.
Dic#ionarul de date furnizeaz! urm!toarele informa#ii:
- numele tuturor obiectelor bazei de date inclusiv tabele, vederi,
instantanee, indec$i, sinonime, proceduri, func#ii $i a. m. d.;
- numele utilizatorilor bazei de date Oracle, privilegiile $i rolurile
acordate fiec!rui utilizator, informa#ii referitoare la restric#iile de
integritate, valori prestabilite pentru coloane, gradul de utilizare $i
alocarea spa#iului, informa#ii de auditare.
Dic#ionarul de date al bazei de date rela#ionale Oracle este compus din
dou! componente fundamentale:
- Tabele de baz!. -Aceste tabele reprezint! nucleul dic#ionarului care
stocheaz! informa#iile despre baza de date. Aceste tabele sunt accesate
direct de nsu$i mediul Oracle $i sunt rareori accesate de utilizatorii
Oracle. In aceste tabele, datele sunt stocate n formatul intern al
mediului Oracle, pe care utilizatorul final nu-" poate citi.
- Vederi accesibile utilizatorilor. -Aceste vederi sintetizeaz! $i prezint!
informa#iile stocate n tabelele de baz! ale dic#ionarului de date. Aceste
vederi decodific! pentru utilizator informa#iile stocate n tabelele de
baz!. Majoritatea utilizatorilor au acces la aceste vederi $i nu la
tabelele de baz!.
Dic#ionarul de date este proprietatea utilizatorului Sys al sistemului
Oracle $i, prin urmare, nici un utilizator nu are privilegiul de a modifica
direct dic#ionarul de date. De obicei, pentru multe dintre vederile bazei
de date sunt create sinonime publice astfel, nct acestea sunt u$or
accesibile utilizatorilor finali. Administratorul bazei de date are
responsabilitatea de a crea aceste sinonime.
Accesul la dic#ionarul de date este ntotdeauna permis atunci, cnd
baza de date este deschis!. Dac! baza de date este nchis!, toate vederile
corespunz!toare dic#ionarului de date devin inaccesibile.
9
Dic#ionarul de date reprezint! o colec#ie logic! de tabele $i de
vederi. Ele pot fi accesate prin interog!ri ale utilizatorilor n vederea
ob#inerii de informa#ii despre baza de date. Dic#ionarul de date const!
dintr-un set de vederi, care sunt accesate prin intermediul limbajului
SQL. Anumite vederi sunt accesibile tuturor utilizatorilor n timp ce
altele sunt destinate numai administratorilor bazei de date.
Urmeaz! o scurt! trecere n revist! a ctorva dintre vederile
disponibile tuturor utilizatorilor care posed! privilegiul de sistem
create session.
all_col_coinments Comentarii n leg!tur! cu coloanele
tabelelor $i vederilor accesibile.
all_constraints Defini#iile restric#iilor asociate tabelelor
accesibile.
all_db_links Leg!turile bazei de date accesibile utilizatorului.
all_errors Erori curente referitoare la toate obiectele accesibile
utilizatorului.
all_indexesDescrierea indec$ilor tabelelor accesibile
utilizatorului.
all_objectsObiectele accesibile utilizatorului.
all_sequencesDescrierea secven#elor accesibile utilizatorului.
all_snapshotsToate instantaneele accesibile utilizatorului.
all_synonymsToate sinonimele accesibile utilizatorului.
all_tablesDescrierea tabelelor accesibile utilizatorului,
all_triggersInforma#ii referitoare la to#i declan$atorii accesibili
utilizatorului.
all_usersInforma#ii despre to#i utilizatorii bazei de date.
all_viewsTextul vederilor accesibile utilizatorului.
Mersul lucr#rii:
". Activa#i comanda SQL*PLUS n dependen#! de sistemul de operare
instalat pe calculator (Unele sisteme cer introducerea comenzii n
registrul de jos).
SQL*PLUS va afi$a
Enter user-name:
2. Introduce#i numele SCOTT $i ap!sa#i [Enter]. SQL*PLUS va afi$a
"Enter password:".
"0
3. Introduce#i parola TIGER $i ap!sa#i [Enter] din nou. Parola nu se
afi$eaz! pe ecran.
SQL*PLUS va ar!ta versiunea ORACLE, $i pachetele disponibile (ex.,
PL/SQL).
Dup! aceea, SQL*PLUS va afi$a:
SQL>
Ceea ce nseamn! c! SQL*PLUS este gata de a accepta comenzile.
4. Pentru a putea analiza ulterior activitatea n SQL, nainte de a ncepe
lucrul se recomand! crearea fi$ierului-spuller, de exemplu:
spool c:/aa/trace1
aici:
c:/aa/ - traseul spre fi$ierul-spuller;
trace1 denumirea fi$ierului-spuller
5. Introduce#i comanda:
describe all_tables;
$i ap!sa#i [Enter]. Care va fi rezultatul?
6. Repeta#i punctul 5 cu al#i operatori din lista vederilor $i nregistra#i
rezultatul.
7. Ie$irea din SQL*PLUS, se face cu ajutorul comenzii exit.
exit;
Rezumat
n acest capitol, v-a#i familiarizat cu sistemul de baze de date
rela#ionale Oracle. Modelul de baze de date rela#ionale este definit ca o
matrice bi-dimensional! compus! din linii $i coloane. Accesul la o
anumit! dat! se realizeaz! prin cunoa$terea numelui tabelului, coloanei $i
liniei n care se afl! data.
Sistemul de baze de date rela#ionale Oracle pune la dispozi#ie o
baz! de date care este u$or de n#eles, de utilizat $i suficient de flexibil!
pentru a satisface toate cerin#ele bazei de date. Aceast! baz! de date este
un sistem deschis $i respect! standardele industriale referitoarele la
limbajele de accesare a bazelor de date (SQL).
n aceast! lucrare, au fost prezentate etapele necesare pentru
pornirea $i oprirea bazei de date Oracle. De asemenea, a#i aflat
semnifica#ia termenului rela"ional, $i anume: o colec#ie de tabele care
sunt asociate ntre ele pe baza unei coloane comune.
""
LUCRAREA DE LABORATOR Nr. 2
Structuri logice de stocare a bazelor de date
Structurile logice de stocare dicteaz! modul n care este utilizat
spa#iul fizic al bazei de date, ele se pot manipula pentru a ajusta
utilizarea spa#iului de pe disc.
O structur! logic! de stocare este o unitate alocat! a spa#iului de
stocare. Scopul ei principal este de a defini modul n care va fi utilizat
spa#iul fizic de stocare a bazei de date. Este utilizat! pentru a crea
modelul de date rela#ional pornind de la structura fizic! a bazei de date.
Structurile logice de stocare includ spa#ii tabel, segmente, extinderi,
blocuri si fi$iere de date. Oracle aloc! spa#iul bazei de date pentru toate
datele bazei de date. Unit!#ile de stocare sunt blocurile de date,
extinderile $i segmentele. Aceste structuri pot fi manipulate prin opera#ii
de baze de date.
Structurile logice de stocare dicteaz! modul n care va fi utilizat
spa#iul fizic al bazei de date. Obiectele schemei $i rela#iile dintre ele
formeaz! profilul rela#ional al bazei de date. Aceast! configura#ie logic!
a bazei de date are influen#! asupra performan#elor bazei de date.
O baz! de date Oracle posed! att o structur! logic!, ct $i o
structur! fizic!. Structura fizic! con#ine fi$ierele de date, fi$ierele de
control $i fi$ierele jurnal curente. Prin separarea celor dou! tipuri de
structuri, fiecare poate fi gestionat! independent de cealalt! f!r! a afecta
accesul reciproc.
Atunci cnd sunt create structurile logice de stocare, spa#iul este
alocat n baza de date conform unor criterii predefinite. Administratorul
bazei de date are dreptul s! ignore sau s! reconfigureze criteriile bazei de
date pentru a optimiza utilizarea spa#iului discului. Pentru a $ti s! aloca#i
spa#iu n mod eficient $i performant, trebuie s! n#elege#i cum este
utilizat spa#iul bazei de date.
Structura logic! a unei baze de date Oracle este definit! prin
urm!toarele caracteristici: spa#ii-tabel, segmente, extinderi, blocuri de
date.
Spa%ii-tabel
Atunci cnd o baz! de date este creat! de administratorul bazei de
date, este mp!r#it! n unit!#i logice multiple numite spa"ii-tabel. Datele
bazei de date sunt stocate logic n spa#iul-tabel, iar fizic sunt stocate n
fi$ierele de date care sunt asociate cu spa#iul-tabel.
"2
n afar! de stocarea logic! a datelor, administratorul bazei de date
poate folosi spa#ii-tabel pentru a realiza urm!toarele:
- controlul consum!rii spa#iului fizic de pe disc de c!tre baza de date;
- alocarea anumitor cote de disc utilizatorilor individuali;
- stabile$te reparti#ia stoc!rii datelor ntre dispozitive fizice multiple de
stocare.
Atunci cnd este creat un spa#iu-tabel, sunt create automat spa#iul-
tabel System $i fi$ierele de date. Spa#iul-tabel System con#ine ntregul
dic#ionar de date al bazei de date. Se recomand! s! fie creat cel pu#in un
spa#iu-tabel suplimentar pentru a p!stra informa#iile dic#ionarului de
sistem separat fa#! de date.
Utilizarea spa#iilor-tabel multiple asigur! flexibilitate n executarea
opera#iilor asupra bazei de date. Printre avantajele utiliz!rii spa#iilor-
tabel multiple se num!r! urm!toarele:
- separarea datelor de sistem fa#! de datele utilizatorului;
- permite separarea aplica#iilor ntre ele;
- posibilitatea dezactiv!rii anumitor spatii-tabel individuale $i men#inerea
celorlalte active;
- posibilitatea de a stoca spa#ii-tabel diferite pe unit!#i de disc distincte n
vederea mbun!t!#irii performan#elor $i reducerii conflictelor de acces
la date.
Spa#iul-tabel System con#ine, de asemenea, segmente de revenire si
unit!#i de program PL/SQL cum ar fi func#ii-procedur!, declan$atori $i
pachete. Dac! pentru o anumit! baz! de date este creat! o asemenea
unitate PL/SQL, administratorul bazei de date trebuie s! aib! n vedere
necesit!#ile de spa#iu aferente. Prin urmare, administratorul bazei de date
va aloca mai mult spa#iu pentru baza de date. Spa#iul-tabel System
trebuie s! fie ntotdeauna p!strat activ, deoarece Oracle trebuie s! aib!
oricnd acces la dic#ionarul de date.
Un spa#iu-tabel Oracle este p!strat de obicei activ (online) astfel,
nct datele pe care le con#ine s! fie accesibile tuturor utilizatorilor bazei
de date. Administratorul bazei de date poate s! dezactiveze spa#iul-tabel
(offline) pentru oricare dintre urm!toarele motive:
- pentru a efectua opera#iuni de ntre#inere sau copii de siguran#!
(backup) ale bazei de date;
- pentru a interzice accesul la un grup de tabele n timpul actualiz!rii sau
modific!rii unei aplica#ii;
"3
- pentru a interzice accesul la o por#iune a bazei de date n timp ce restul
bazei de date r!mne activ! (online).
Oracle mpiedic! executarea instruc#iunilor SQL care fac referire la
spatiile-tabel dezactivate. Orice tranzac#ie SQL activ! care face referire
la spatiile-tabel dezactivate va fi finalizat! normal. Integritatea datelor se
p!streaz! n segmentele de revenire (rollback segments) pentru
aceste segmente SQL active.
Un spa#iu-tabel nu poate fi dezactivat dac! exist! un segment de
revenire activ care face referire la el. Segmentul de revenire trebuie
rezolvat nainte ca spa#iul-tabel s! poat! fi trecut n stare inactiv!.
Un spa#iu-tabel dezactivat nu poate fi citit sau manipulat de nici o
alt! aplica#ie sau utilitate alta dect Oracle.
Spa%ii-tabel "i fi"iere de date
Fiecare spa#iu-tabel con#ine cel pu#in un fi$ier fizic de date. Fi$ierul
de date asociat cu un spa#iu-tabel con#ine datele pentru spa#iul-tabel
respectiv. Fi$ierele de date sunt asociate cu un singur spa#iu-tabel $i o
singur! baz! de date.
Fi$ierul de date ini#ial al fiec!rei baze de date este destinat p!str!rii
spa#iului-tabel System. Acest fi$ier este necesar pentru p!strarea
dic#ionarului de date $i a segmentului de revenire ce trebuie s! aib! o
dimensiune ini#ial! de cel pu#in 2KB. Pe m!sur! ce dimensiunea bazei de
date cre$te, pute#i ad!uga spa#iului-tabel fi$iere de date suplimentare. n
general, ideal este s! ad!uga#i mai degrab! pu#ine fi$iere de date de
dimensiuni mari dect mai multe fi$iere de date de dimensiuni mai mici.
Spa#iul-tabel $i fi$ierul de date asociat sunt goale n momentul n
care sunt create. Cu toate acestea, ele posed! spa#iu alocat n vederea
p!str!rii datelor viitoarei baze de date. n vederea p!str!rii acestor date,
n spa#iul-tabel sunt create segmente de date. Atunci cnd este creat un
segment ntr-un spa#iu-tabel sau cnd dimensiunea acestuia cre$te,
programul Oracle utilizeaz! spa#iul liber din fi$ierul de date asociat
pentru a aloca extinderi pentru segmentul respectiv. Remarca#i faptul c!
un obiect logic de stocare nu corespunde unui anumit fi$ier de date. n
schimb, un fi$ier de date este depozitarul datelor oric!rui obiect dintr-un
anumit spa#iu-tabel.
"4
Segmente
Segmentele sunt omoloagele fizice ale obiectelor bazei de date care
stocheaz! datele. Un segment este format din extinderi. Spa#iul alocat
segmentelor nu este eliberat dect atunci cnd segmentul este abandonat
sau trunchiat.
Oracle define$te patru tipuri de segmente:
- segmentul tabel;
- segmentul index;
- segmentul de revenire;
- segmentul temporar
Segmentul tabel
Segmentul tabel, cunoscut $i sub numele de segment de date,
stocheaz! datele din tabele, clustere $i instantanee. Acest tip de segment
este creat indirect prin intermediul comenzilor
create table/cluster/snapshot
De obicei, segmentul tabel este foarte activ deoarece aici sunt p!strate
datele. Aceste date sunt manipulate de un mare num!r de tranzac#ii SQL.
Pentru ob#inerea unor performan#e corespunz!toare, este important ca
administratorul bazei de date s! aloce cantitatea adecvat! de spa#iu de
stocare pentru fiecare segment. Dac! segmentul acumuleaz! continuu noi
extinderi, datele devin fragmentate, iar performan#ele scad. Baza de date
nu poate garanta alocarea contigu! a extinderilor.
Comanda pctfree poate fi folosit! pentru a monitoriza cantitatea
de spa#iu liber pe care o posed! un segment. Acest spa#iu liber poate fi
utilizat intern pentru spa#iul-tabel sau poate fi eliberat $i returnat bazei de
date.
Segmentul index
Segmentul index este creat pentru a p!stra datele unui index al
bazei de date. Sintaxa:
create index
Aceast! comand! v! permite s! defini#i parametrii extinderilor
segmentului index $i spa#iului-tabel n care va fi creat indexul.
Segmentul de revenire
Segmentul de revenire este o por#iune a bazei de date care
nregistreaz! ac#iunile unei tranzac#ii SQL n vederea derul!rii napoi a
acestora dac! se dore$te acest lucru. Un segment de revenire restabile$te
"5
baza de date n starea n care se g!sea la ultimul punct de salvare sau la
ultima acceptare.
Fiecare tranzac#ie are un segment de revenire asociat. De obicei,
acest segment este atribuit automat de c!tre baza de date. Ave#i totu$i
posibilitatea s! asocia#i o tranzac#ie cu un segment de revenire
corespunz!tor. Segmentul de revenire con#ine mai multe informa#ii.
Printre acestea se num!r! numele fi$ierului $i identificatorul blocului
pentru datele care au fost modificate $i pentru datele existente naintea
ultimei tranzac#ii. Aceste segmente de revenire pot fi citite $i scrise
exclusiv de c!tre programul Oracle.
Segmentul temporar
Un segment temporar este un spa#iu de lucru destinat prelucr!rii
unui tabel utilizat pentru p!strarea rezultatelor intermediare ale unei
tranzac#ii SQL. De exemplu, pentru o opera#ie de sortare va fi creat un
segment temporar reprezentnd zona de lucru pentru aceast! opera#ie.
Urm!toarele comenzi SQL pot necesita crearea unui segment temporar:
Create index
Select order by
Select distinct
Select minus
Select intersect
Extinderi
O extindere este o structur! logic! de stocare compus! dintr-un
num!r de blocuri contigue. Fiecare tip de segment este compus din una
sau mai multe extinderi. Atunci cnd un segment epuizeaz! spa#iul de
stocare care i-a fost alocat, programul Oracle i aloc! o nou! extindere.
Atunci cnd este creat, fiecare segment posed! cel pu#in o
extindere. La alocarea unei noi extinderi pentru un segment, se parcurg
urm!toarele etape:
". Programul Oracle parcurge spa#iul-tabel n c!utarea primului set
contiguu de blocuri de date libere care au mpreun! dimensiunea
incrementului stabilit pentru o extindere.
2. Programul Oracle g!se$te spa#iul liber necesar $i aloc! extinderii
respective o por#iune a acestui spa#iu liber egal! cu incrementul unei
extinderi.
3. Dic#ionarul de date este actualizat pentru a reflecta alocarea noii
extinderi $i faptul c! spa#iul alocat nu mai este liber.
"6
Extinderile segmentelor pot fi returnate atunci cnd nu mai sunt
necesare. n general, extinderile nu sunt returnate spa#iului-tabel ca
spa#iu liber pn! cnd segmentul nu este returnat ca un ntreg. Acest
lucru survine, de exemplu, atunci cnd un tabel este abandonat, iar
segmentele $i extinderile sunt eliberate.
Atunci cnd sunt eliberare segmente, dic#ionarul de date este
actualizat pentru a reflecta extinderile recuperate ca reprezentnd spa#iu
disponibil. Datele din blocurile extinderilor eliberate nu mai sunt
accesibile.
Blocuri de date
Blocul de date reprezint! cea mai mic! unitate de stocare utilizat!
de programul Oracle pentru stocarea datelor. Un bloc de date corespunde
unui bloc fizic de octe#i de pe disc. n interiorul fi$ierelor de date spa#iul
de stocare este compus din blocuri de date. Formatul blocurilor de date
Oracle este identic, indiferent dac! blocul de date con#ine un tabel, un
index sau clustere de date.
Blocurile de date includ urm!toarele componente:
- antetul - con#ine informa#ii referitoare la bloc cum ar fi adresa
blocului $i tipul segmentului;
- catalogul de tabele - con#ine informa#ii despre tabele care posed! linii
n blocul respectiv;
- catalogul de linii - con#ine informa#ii despre liniile din bloc;
- spa#iu liber - folosit pentru inserarea noilor linii $i pentru actualizarea
liniilor care necesit! spa#iu suplimentar.
- linii de date - con#ine date apar#innd unor tabele sau unor indec$i.
Programul Oracle permite liniilor de date s! se ntind! pe spa#iul
mai multor blocuri. Spa#iul alocat liniilor de date nu este eliberat de
server atunci cnd sunt $terse linii. Acest spa#iu este reutilizat numai
atunci, cnd sunt inserate noi linii n blocul respectiv.
Pentru controlul utiliz!rii spa#iului liber al blocului de date,
proiectantul aplica#iei are la dispozi#ie doi parametri, pctfree $i
pctused. Ambii parametri pot fi specifica#i numai n momentul cre!rii
sau modific!rii tabelelor $i clusterelor.
Parametrul pctfree este folosit pentru a defini procentajul
blocului de date care urmeaz! s! fie p!strat liber pentru eventualele
actualiz!ri ale liniilor care exist! deja n blocul de date respectiv.
Parametrul din exemplul urm!tor, atunci cnd este folosit mpreun! cu
"7
comanda create table, va rezerva 35 de procente din blocul de date
utilizat pentru tabelul respectiv ca spa#iu liber pentru eventualele
actualiz!ri viitoare:
pctfree 35
Parametrul pctused este folosit pentru a defini procentul din
spa#iul existent n blocul de date pe care programul Oracle va ncerca
s!-" completeze nainte de a aloca o nou! extindere. Parametrul din
exemplul care urmeaz!, atunci cnd este folosit mpreun! cu comanda
create table, specific! programului Oracle s! nu insereze alte linii
n blocul de date dac! nu sunt libere cel pu#in 40 de procente din acesta:
pctused 40
Parametrii pctfree $i pctused sunt folosi#i mpreun! pentru a
optimiza utilizarea spa#iului din blocurile de date $i extinderile unui
segment de date.
Mersul lucr#rii:
". Activa#i comanda SQL*PLUS
2. Introduce#i numele de sistem SYSTEM $i ap!sa#i [Enter]. SQL*PLUS
va afi$a "Enter password:".
3. Introduce#i parola MANAGER $i ap!sa#i [Enter] din nou.
4. Introduce#i comanda pentru a avea fi$ierul spooller: spool
c:\1\trace2
Crearea noilor spa%ii-tabel "i a fi"ierelor de date
Pentru a crea un nou spa#iu-tabel trebuie s! poseda#i privilegiul de
sistem create tablespace. Instruc#iunea care urmeaz! creeaz! un
spa#iu-tabel numit dbt_user_01.
create tablespace dbt_user_01
datafile 'c:\1/datafile_01' size 256k
default storage (
initial 50k
next 40k
minextents 10
maxextents 50
pctincrease 0)
;
Rezultatul:
Tablespace created.
"8
Urm!torul exemplu va ad!uga un nou fi$ier de date la un spa#iu-tabel
existent numit dbt_user_01:
alter tablespace dbt_user_01
add datafile 'c:\1/new_file_name_2' size
512k;
Rezultatul:
Tablespace altered.
Afi"area informa%iilor spa%iilor-tabel "i ale fi"ierelor de date
Oracle prevede mai multe vederi predefinite care v! permit s!
ob#ine#i informa#ii despre spa#iile-tabel $i fi$ierele de date. Iat! numele
acestor vederi:
Dba_tablespaces
user_tablespaces
dba_data_files
user_extents
user_segments
dba_extents
Urm!torul exemplu utilizeaz! vederea dba_tablespace pentru
a ob#ine informa#iile de stocare prestabilite pentru spa#iul-tabel
dbt_user_0l:
select tablespace_name tablespace,
initial_extent extent,
next_extent next_ext,
min_extents min_ext,
max_extents max_ext,
pct_increase pct_incr,
status status
from sys.dba_tablespaces;
Rezultatul:
tablespace extent next_ext min_ext max_ext pct_incr status
-------------------- -------- ---------------- -------- ------
SYSTEM 10240 10240 1 121 50 ONLINE
USER_DATA 10240 10240 1 121 50 ONLINE
ROLLBACK_DATA 10240 10240 1 121 50 ONLINE
TEMPORARY_DATA 10240 10240 1 121 50 ONLINE
DBT_USER_01 51200 40960 10 50 0 ONLINE
"9
Privi#i aceste vederi, pentru a dobndi o impresie de ansamblu a
spa#iilor-tabel $i fi$ierelor dumneavoastr! de date curente.
Rezumat
Structurile logice de stocare creeaz! modelul de date rela#ional n
baza de date fizic!. Aceste structuri definesc modul n care va fi utilizat!
baza de date fizic!.
Structurile logice de stocare sunt necesare pentru ca administratorul
$i proiectantul bazei de date s! maximizeze eficien#a bazei de date. De
asemenea, aceste structuri sunt folosite pentru a optimiza utilizarea
spa#iului de pe disc prin reducerea redundan#ei datelor.
Baza de date Oracle este mp!r#it! n unit!#i logice numite spa#ii-
tabel. Datele bazei de date sunt stocate n fi$iere de date. Un spa#iu-tabel
posed! cel pu#in un segment pentru stocarea datelor bazei de date.
Fiecare segment este compus din extinderi. O extindere este format! din
unit!#i contigue de spa#iu de stocare numite blocuri de date.
LUCRAREA DE LABORATOR Nr. 3
Proiectarea unei baze de date.
Proiectarea unei baze de date reprezint! procesul pe care l
parcurge#i n vederea preg!tirii cre!rii fizice a unei baze de date Oracle.
Etapele acestui proces includ identificarea opera#iunilor pe care le va
gestiona baza de date, precum $i crearea proiectului fizic al bazei de date.
n lipsa proiect!rii corecte a bazei de date, aceasta poate prezenta
urm!toarele deficien#e:
- Integritatea datelor este compromis! deoarece restric#iile de integritate
nu pot fi proiectate corect.
- Datele devin redundante.
- Performan#ele sunt afectate deoarece pentru finalizarea unei instruc#iuni
select pot s! fie necesare interog!ri suplimentare.
Pentru a crea o baz! de date Oracle este necesar! parcurgerea
urm!toarelor etape:
". Crearea unui model al activit!#ii companiei.
2. Crearea unui model al datelor.
3. Crearea unui proiect de baz! de date.
4. Crearea defini#iei tabelelor.
20
5. Crearea bazei de date rela#ionale.
Crearea unui model activit#%ii companiei
Aceast! etap! presupune strngerea de informa#ii despre activitatea
companiei pe care le va sus#ine baza de date Oracle. Pentru a dobndi o
bun! cunoa$tere a activit!#ii companiei, ve#i ntreprinde urm!toarele:
Ve#i lua interviuri:
a. Managerilor $i supervizorilor activit!#ilor companiei.
b. Poten#ialilor utilizatori.
c. Poten#ialilor beneficiari.
Descoperi#i obiectivul declarat al activit!#ii. Este util s! cunoa$te#i
scopurile activit!#ii unei companii astfel, nct baza de date s! fie
conceput! n vederea deservirii acestora.
Colabora#i cu utilizatorii $i supervizorii pentru a defini obiectivul
aplica#iei. Este obligatoriu s! defini#i preten#iile companiei referitoare
la ceea ce urmeaz! s! fac! baza de date $i aplica#ia.
Analiza#i specifica#iile de sistem curente.
Identifica#i viitoarele specifica#ii de sistem pentru baza de date.
n acest moment, ve#i fi n posesia unor cantit!#i mari de date. Este
necesar s! n#elege#i toate aceste informa#ii $i s! le ordona#i nainte de a
trece la etapa urm!toare.
Crearea unui model al datelor
Dup! ce a#i strns informa#iile precedente, trebuie s! construi#i un
model sau o reprezentare grafic! a necesit!#ilor $i regulilor companiei.
De exemplu, s! presupunem c! a#i aflat urm!toarele informa#ii despre
activitatea companiei n timpul interviurilor anterioare:
Compania are nevoie s! $tie ce agent de vnz!ri deserve$te fiecare
client.
De asemenea, trebuie s! cunoasc! numele $i telefonul clientului.
Vor s! aib! posibilitatea de a g!si rapid informa#ii despre un
anumit client.
O tehnic! de modelare verificat! pentru reprezentarea grafic! a
activit!#ilor companiilor este modelul ERD (Entity Relationship
Diagram - diagrama rela#iei dintre entit!#i). Acest model este format din
trei componente:
entitate - un element relevant n leg!tur! cu care sunt necesare
informa#ii;
atribut - ceva care descrie sau explic! o entitate;
2"
rela#ie - o asociere ntre dou! entit!#i.
Numai elementele relevante pentru activitatea companiei devin entit!#i.
Orice descrieri ale unei entit!#i devin atributele acesteia. Informa#iile pe
care le-a#i ob#inut privitor la activitatea companiei trebuie s! descrie
rela#iile ntre entit!#i. Ducnd acest exemplu mai departe, vom crea o
diagram! ERD simpl!. Consulta#i fig. 3." pentru un exemplu de
diagram! a rela#iilor dintre entit!#i.
Dup! ce a#i creat diagram! ERD ini#ial!, analiza#i-o mpreun! cu
responsabilii de compartimente pentru a v! asigura c! ea este corect! $i a
o mbun!t!#i dac! este cazul.
Printre avantajele utiliz!rii diagramei ERD se num!r! urm!toarele:
diagrama ERD documenteaz! cerin#ele informa#ionale ale companiei
ntr-un format clar $i precis;
aceast! abordare grafic! a model!rii o face u$or de n#eles;
simplitatea modelului l face u$or de utilizat.
Crearea unui proiect de baz# de date
Acum cnd diagrama ERD este complet!, acest model, mpreun!
cu informa#iile referitoare la activitatea companiei culese n Etapa ",
poate fi utilizat pentru crearea unui proiect de baz! de date. Figura 3.2
Informa!ii ob!inute n prima etap"
... Trebuie s" #tim care sunt clien!ii aronda!i agen!ilor de vnz"ri...