Sunteți pe pagina 1din 7

Structura logică

Structura logică a bazei de date este formată din:

 obiectele (componentele) schemei bazei de date


 unul sau mai multe spaţii pentru tabele (numite tablespace)

Tipuri de componente utilizator


O bază de date Oracle include următoarele tipuri de componente:

1. Tabele, coloane, restricţii - de la bazele de date relaţionale şi obiectual-


relaţionale
2. Indexuri
3. Tipuri de date definite de utilizatori
4. View-uri
5. Proceduri şi funcţii memorate
6. Pachete (conţin variabile, proceduri, funcţii)
7. Secvenţe
8. Sinonime
9. Declanşatoare (triggere)
10. Legături spre alte baze de date
11. Utilizatori, privilegii, roluri
12. Altele

La o bază de date pot avea acces mai mulţi utilizatori. Pentru fiecare utilizator
se poate crea o bază de date proprie, care face parte din baza de date
gestionată de sistemul Oracle. Componentele unui utilizatorformează
o sub-schemă a bazei de date.
Pentru referire la o componentă din baza de date se foloseşte
un nume pentru această componentă. Această referire apare sub forma:
[nume_utilizator.]nume_componenta
iar dacă lipseşte denumirea schemei (sub-schemei), atunci se ia sub-schema
utilizatorului curent.

Tablespace
O bază de date Oracle este memorată din punct de vedere logic în spaţii
tabel şi din punct de vedere fizic în fişiere de pe suport.
Câteva dintre caracteristicile componentelor tablespace:
 O bază de date are cel puţin spaţiul tabel System unde se memorează
dicţionarul întregii baze de date, deci proceduri, functii, pachete, definitii
de tabele, etc.
 La crearea unui tabel sau index se precizează şi spaţiul tabel la care se
alocă această componentă (există opţiunea TABLESPACE în
instrucţiunea CREATE). Dacă opţiunea lipseşte, atunci se foloseşte un
spaţiu tabel implicit.
 Capacitatea de memorare a bazei de date este formată din suma
capacităţilor de memorare a spaţiilor tabel.
 Conţinutul unui spaţiu tabel se memorează în unul sau mai multe fişiere
la nivel fizic. Atât în spaţiul tabel cât şi în fişierele de pe suport alocarea
zonelor de memorie se face în structura de blocuri, extensii,
segmente.
 La nivel de administrare există posibilitatea de a efectua diverse
acţiuni legate de spaţiile tabel:
o Se poate crea un spaţiu tabel.

o CREATE TABLESPACE nume_spatiutabel


o DATAFILE lista_fisiere optiuni;

unde un element din "lista_fisiere" este de una din formele


următoare (elementele în listă se separă cu virgulă):

'nume_fisier' [SIZE int K | M] [AUTOEXTEND OFF]


'nume_fisier' [SIZE int K | M] [AUTOEXTEND ON
[NEXT int K | M] [MAXSIZE int K | M]]

In "optiuni" se pot include următoarele:

DEFAULT [COMPRESS|NOCOMPRESS] STORAGE


storage_clause
MINIMUM EXTENT int {K|M}
BLOCKSIZE int K
{LOGGING | NOLOGGING}
FORCE LOGGING
{ONLINE | OFFLINE}
{PERMANENT | TEMPORARY}
EXTENT MANAGEMENT {DICTIONARY | LOCAL
{AUTOALLOCATE | UNIFORM [SIZE int K | M]} }
SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}

Exemplu:

CREATE TABLESPACE "MASTER" DATAFILE


'c:\oradata\orcl\master.dbf'
SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO

o Spaţiul alocat iniţial pentru un tablespace se poate


mări astfel:
 prin adăugarea de fişiere de date noi la spaţiul tabel

ALTER TABLESPACE system ADD DATAFILE


'DATA2.ORA'

 prin creşterea dimensiunii fişierelor de date

ALTER DATABASE DATAFILE 'DATA3.ORA'


AUTOEXTEND ON NEXT 20M MAXSIZE 1000M

o Stergerea unui spaţiu tabel:

DROP TABLESPACE nume_spatiu_tabel

Blocuri, segmente, extensii


Spaţiul de memorie folosit de o bază de date Oracle (la nivel logic - în spaţii
tabel, la nivel fizic - în fişiere) este structurat prin următoarele unităţi logice:

 bloc de date: unitatea de memorare Oracle cu cea mai mică


dimensiune (unitatea de bază). Blocul este unitatea de schimb dintre
suport şi memoria internă. Dimensiunea acestei unităţi este un multiplu
al dimensiunii blocului sistemului de operare şi este precizată de
parametrul DB_BLOCK_SIZE din fişierul de parametri. Acest parametru
se stabileşte la crearea bazei de date.
 extensie: zonă formată din mai multe blocuri de date consecutive pe
suport. In general o componentă din baza de date a unui utilizator nu
se poate memora într-un singur bloc şi sunt necesare mai multe blocuri
(consecutive) care formează o extensie.
 segment: format dintr-o mulţime de extensii şi este folosit pentru a
memora un anumit tip de date. Intr-un segment nu trebuie ca extensiile
să fie consecutive. In funcţie de tipul datelor memorate, există patru
tipuri de segmente:
o Segment tabel (sau de date): care memorează tabele, clustere,
instantanee
o Segment index: care păstrează conţinutul unui index
o Segment de revenire: unde se memorează datele necesare
refacerii bazei de date dacă este necesară anularea modificărilor
(efectuate într-o tranzacţie). Un astfel de segment se alocă
automat atunci când începe o tranzacţie. Aceste segmente se
gestionează (pentru scriere şi citire) numai de către sistem.
o Segment temporar: unde se păstrează diverse date de lucru,
necesare la execuţia următoarelor instrucţiuni SQL:
o CREATE INDEX
o SELECT ... ORDER BY
o SELECT DISTINCT ...
o SELECT ... GROUP BY
o SELECT ... UNION
o SELECT ... INTERSECT
SELECT ... MINUS
Indiferent de tipul datelor memorate în segment, blocurile au aceeaşi
structură, după cum se vede în figură.

 La începutul blocului apare un antet ce conţine mai multe date cu privire


la conţinutul blocului (ce tip de date se memorează, la ce componentă
aparţin datele). Datele efective se memorează la sfârşitul blocului, iar
spaţiul liber este între cele două zone.
 La crearea unui bloc (atunci când se adaugă date noi ce nu încap în
blocul curent) se lasă liberă o anumită zonă din bloc pentru eventuale
actualizări (se schimbă valoarea null într-o valoare efectivă, se schimbă
o valoare în altă valoare cu o lungime mai mare). Dimensiunea acestui
spaţiu liber iniţial este precizat de parametrul pctfree (care precizează
procentul de spaţiu care rămâne liber iniţial). Mai târziu acest spaţiu se
poate mări sau micşora, în urma operaţiilor de actualizare a datelor.
Valoare implicită a parametrului este de 10%.
 După ce s-au adăugat date în blocuri, dimensiunea spaţiului liber se
poate schimba. Acest spaţiu liber se poate micşora prin operaţii de
modificare, sau se poate mări prin operaţii de ştergere sau de
modificare (o valoare de tip text de lungime variabilă îşi schimbă
valoarea la una de lungime mai mică). Un astfel de bloc devine din nou
liber pentru noi operaţii de adăugare numai dacă procentul de spaţiu
liber depăşeşte valoarea parametrului pctused. La o operaţie de
înserare se caută un bloc liber sau se crează un bloc nou. Valoarea
implicită a acestui parametru este de 40%.
 Trebuie ca suma parametrilor pctfree şi pctused să fie mai mică
decât 100%.
 La crearea unui tabel sau index sistemul alocă o extensie iniţială (pentru
primul segment), cu un număr precizat de blocuri. Acest prim segment
se foloseşte pentru primele operaţii de adăugare de date. Atunci când
se cere adăugarea de date şi nu mai există blocuri libere, automat se
adaugă o nouă extensie la segmentul curent.