Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Structuri de stocare Oracle9I

calculatoare



+ Font mai mare | - Font mai mic



Structuri de stocare Oracle9I

Tipuri de segmente

Tabele (segmente de date): sunt cele mai obisnuite mijloace de stocare a datelor intr-o baza de date. Un segment de date este o zona foarte activa deaorece stocheaza datele pentru un tabel, date ce vor fi manipulate de un numar mare de tranzactii SQL. Datele din interiorul unui segment nu sunt stocate intr-o anumita ordine, administratorul neavand control asupra asezarii tuplelor in interiorul blocului unui tabel. Toate datele dintr-un segment trebuie localizate intr-un singur spatiu-tabel.



Tabelele partitionate: scalabilitatea si disponibilitatea datelor sunt preocupari majore ale oricarui administrator. Oracle vine in intampinarea acestor deziderate cu o structura de date ce permite exploatarea acestora in conditii de utilizare concurentiala intensa. Segmentele partitionate pot stoca datele in mai multe locatii (partitii) fizice, fiecare dintre acestea fiind rezidente intr-un alt spatiu-tabel. Criteriile de partitionare suportate de Oracle sunt in functie de plaja de valori ale unei chei, de o lista de valori sau de repartitia data de un algoritm de hash. Fiecare partitie devine la randul ei un segment, iar parametrii de stocare pot fi proprii fiecarui segment in parte.

Cluster: ca si segmentul tabel cluster-ul este un segment de date. Tuplele intr-un segment cluster sunt stocate pe baza unei coloane cheie. Un cluster poate contine unul sau mail multe tabele. Tabelele unui cluster apartin aceluiasi segment si au aceleasi caracteristici de stocare. Tuplele dintr-un segment cluster pot fi accesate pe baza unui index sau a unui algoritm de hash.

Indecsi: toate intrarile pentru un index sunt stocate intr-un segment index. Daca un tabel are trei indecsi, vor fi folosite trei segmente index. Scopul acestui tip de segment este de a regasi rapid locatia unei tuple intr-un tabel pe baza unei chei specificate.

Tabele-indexate: intr-un astfel de segment datele sunt stocate intr-un index bazat pe valoarea unei chei. Un astfel de tabel nu necesita un index deoarece toate datele pot fi regasite direct din index.

Indecsi partitionati: un index poate fi partitionat, iar partitiile acestuia pot fi localizate in mai multe spatii-tabele. In acest caz fiecare partitie a indexului corespunde unui segment ce nu poate fi localizat decat intr-un singur spatiu-tabel. Avantajul major al acestui tip de index este reducerea accesului simultan la datele (data contention) prin dispersarea operatiilor de intrare/iesire.

Segmente de revenire: un astfel de segment este folosit de catre o tranzactie pentru a reflecta schimbarile efectuate in baza de date. Inainte de schimbarea unui bloc al unui tabel sau index, vechile valori sunt stocate in segmentul de revenire pana in momentul in care tranzactia s-a incheiat (commit-at). Aceasta permite revenirea asupra schimbarilor ce au fost efectuate.

Segmente temporare: in momentul executarii unor comenzi care necesita operatii de stocare care depasesc spatiul de memorie disponibil, rezultatele intermediare sunt stocate pe disc. Structurile necesare unor astfel de operatii sunt segmentele temporare.

Segmentele LOB: daca una sau mai multe coloane dintr-o tabela stocheaza obiecte largi (LOBs) cum ar fi texte, documente, imagini sau video, Oracle foloseste pentru stocarea acestora segmente separate cunoscute ca segmente LOB. Segmentul de date (tabelul) din care face parte coloana restectiva contine doar un pointer catre locatia datelor LOB corespunzatoare.

Segment de bootstrap: este cunoscut si ca segment de boot, fiind creat de catre scriptul sql.bsq la momentul la care a fost creata baza de date. Acest segment este folosit la initializarea dictionarului bazei de date cand baza de date este deschisa de catre o instanta. Acest segment nu poate fi interogat sau actualizat, si nu este necesar a fi intretinut de catre administrator.

Parametrii se stocare: pot fi specificati la nivel de segment pentru a controla modul de alocare a extentilor unui segment:

Parametrii de stocare specificati la nivelul segmentului se vor substitui setului de parametrii corespunzatori la nivel de spatiu-tabel, exceptie facand parametrii MINIMUM EXTENT sau UNIFORM SIZE.

Atunci cind parametrii de stocare nu sunt setati la nivel de segment, vor fi preluati ca impliciti parametrii de stocare la nivel de spatiu-tabel.

Atunci cind parametrii de stocare nu sunt setati la nivel se spatiu-tabel, vor fi preluati ca impliciti parametrii de stocare la nivel de spatiu-tabel system.

Alte consideratii privind parametrii de stocare:

Daca parametrii sunt schimbati, noile valori se aplica numai pentru extentii ce vor fi alocati din acest moment.

Unii parametrii nu pot fi specificati la nivelul spatiului-tabel, ci numai la nivelul segmentelor.

Daca numarul minim de extenti este specificat la nivelul spatiului-tabel, atunci aceasta dimensiune se aplica si la nivelul segmentelor.

Alocarea si dealocarea segmentelor

Cand este creat un spatiu-tabel nou, fisierul asociat spatiului-tabel contine un header, care de obicei, in functie de dimensiunea spatiului tabel, este format din primul bloc sau primele blocuri din fisier.

Pe masura ce segmentele sunt create, acestea isi aloca spatiu din extentii liberi din spatiu-tabel. Spatiul contiguu utilizat de catre segment este referit ca fiind extenti utilizati. Cand segmentele elibereaza spatiul, extentii eliberati sunt adaugati zonei de extenti disponibili din spatiu tabel.

Blocul bazei de date. Blocuri standard. Blocuri nestandard

Blocul de date reprezinta cea mai mica unitate de stocare utilizata de server-ul Oracle pentru stocarea datelor. Formatul blocului de date este identic, indiferent daca blocul de date apartine unui tabel, index sau cluster de date. Dimensiunea blocului de date este data de catre parametru DB_BLOCK_SIZE.

Crearea spatiilor-tabele cu blocuri nestandard

Oracle 9I poate rula cu dimensiuni multiple ale blocului de date. Aceasta caracteristica este folositoare in urmatoarele situatii:

Cand se transfera spatii-tabel dintr-un baza OLTP intr-un baza OLAP. Oracle 9I dipune de facilitati de tranfer intre baze de date cu dimensiuni diferite ale blocului de date.

Cand este necesara crearea unor segmente de date de o anumita dimensiune intr-un anumit spatiu-tabel pentru a maximiza viteza oparetiilor de I/O.

Dimensiunea blocurilor din spatiu-tabel sistem si spatiile tabel temporare este limitata de dimensiunea blocului standard in momentul crearii bazei de date. Versiunea Oracle 9I permite folosirea de pana la patru dimensiuni de blocuri nestandard. Aceasta facilitate necesita configurarea in fisierul de parametrii a unor zone cache in interiorul zonei buffer cache, fiecare dintre aceste zone deservind operatiile specifice cu blocuri de date corespunzatoare fiecarei dimensiuni de bloc. Aceste zone de date pot fi configurate dinamic. Se pot crea astfel spatii-tabel ale caror blocuri pot avea oricare din dimensiunile nestandard declarate in fisierul de initializare.

Continutul unui bloc al bazei de date

Blocul de date include urmatoarele componente:

Antetul: contine informatii privind adresa blocului si tipul de segment, sloturile de tranzactie ce sunt folosite de catre operatiile ce determina schimbari in bloc.

Catalogul de tabele: contine informatii despre tabelele ce detin linii in blocul respectiv.

Catalogul de linii: contine informatii despre liniile din bloc.

Linii de date: contine date apartinand diferitelor tipuri de segmente specifice bazelor de date Oracle. Oracle permite liniilor de date sa se extinda de-a lungul mai multor blocuri de date. Spatiul alocat liniilor de date nu este eliberat de catre server-ul Oracle atunci cand sunt sterse linii dintr-un bloc. Acest spatiu este reutilizabil numai atunci cand sunt inserate noi linii in blocul respectiv.

Spatiu liber: folosit pentru inserarea unor noi linii si pentru actualizarea celor vechi care necesita spatiu suplimentar.

Parametrii de utilizare ai spatiului

Parametrii de utilizare a spatiului pot fi folositi pentru a controla utilizarea spatiului in segmentele de date acceptate de catre server-ul Oracle:

INITRANS si MAXTRANS: specifica numarul initial si numarul maxim de sloturi de tranzactii ce sunt create intr-un bloc de date. Sloturile de tranzactie sunt folosite pentru a stoca informatii despre tranzactiile ce efectueaza schimbari intr-un bloc de date la un anumit moment dat. O tranzactie utilizeaza un singur slot de tranzactie indiferent daca efectueaza schimbari asupra datelor continute de una sau mail multe linii din blocul respectiv.

INITRANS: garanteaza nivelul minim de concurenta. Valoarea implicita este 1 pentru segmentele de date si 2 pentru segmentele index. De exemplu, daca este setat la n, INITRANS asigura faptul ca cel putin n tranzactii pot efectua simultan schimbari asupra datelor din blocul respectiv. Daca este necesar se pot aloca sloturi de tranzactie suplimentare din spatiul liber din bloc pentru a permite un numar sporit de tranzactii concurente.

MAXTRANS: valoarea implicita este 255, setand numarul maxim de tranzactii concurente ce pot efectua modificari asupra datelor dintr-un bloc.

PCTFREE: acest parametru specifica procentul de spatiu din fiecare bloc de date ce este rezervat pentru eventualele cresteri ulterioare rezultate din actualizari ale liniilor continute de blocul respectiv.

PCTUSED: pentru un segment de date acest parametru reprezinta procentul minim de spatiu existent in blocul de date pe care Oracle va incerca sa-l completeze inainte de a aloca o noua extindere. Un bloc este pus inapoi in lista de blocuri libere atunci cand spatiul folosit scade procentual su valoarea acestui parametru. Lista de blocuri libere este o lista de blocuri ce detin spatiu liber, fiind astfel disponibile pentru insert-uri viitoare.

Administrarea automata a blocurilor

Este o metoda de administrare a spatiului liber din interiorul segmentelor de date. Monitorizarea spatiului liber si a spatiului ocupat dintr-un segment se face utilizind bitmap-uri spre deosebire de listele libere folosite la versiunile anterioare de Oracle. Astfel, segmentele contin un bitmap ce descrie starea fiecarui bloc din segment in functie de spatiul disponibil. Cand este inserata o linie noua, server-ul Oracle cauta in harta un bloc care detine spatiu suficient si il aloca. Variatiile cantitatii de spatiu raportate la parametrul PCTUSED este automat reflectata in harta. Aceasta harta este inclusa intr-un set de blocuri separat, referit ca blocul bitmapat (BMBs). Aceasta metoda de administrare a spatiului furnizeaza urmatoarele avantaje:

Usurinta in administrare: parametrii PCTUSED, FREELISTS, FREELIST GROUPS sunt administrati automat.

O utilizare a spatiului mai eficienta: toate segmentele ce contin linii de date cu o variatie mare dimensiunii, utilizeaza spatiul mai eficient.

Performante sporite pentru operatiunile de INSERT concurente.

Aceasta metoda de administrare a spatiului nu se poate aplica spatiilor-tabel ce contin obiecte LOB. De aceea este recomandata separarea segmentelor de date ce contin LOB-uri si concentrarea acestora in spatii-tabel dedicate.

Obtinerea informatiilor despre spatiul de stocare

Informatii despre spatiul de stocare pot fi obtinute interogand urmatoarele vederi :

DBA_EXTENTS

DBA_SEGMENTS

DBA_TABLESPACES

DBA_DATAFILE

DBA_FREE_SPACE



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1913
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