DBS 1 Arhitectura BD

download DBS 1 Arhitectura BD

of 100

Transcript of DBS 1 Arhitectura BD

  • 8/16/2019 DBS 1 Arhitectura BD

    1/100

    ADMINISTRARE BAZE DE DATEI. Arhitectura unui server BD

    CURS_SIA_1 AEI2201-

    1

    1

  • 8/16/2019 DBS 1 Arhitectura BD

    2/100

    Plan

    ■ 1. Privire generală asupra structurilor de organizare şifuncţionare ale unui server/SGBD de date■ 1.1. Funcţii/servicii generice ale serverelor de date

    ■ 1.2. Structuri generice de organizare a memoriei■ 1.3. Procesarea generică a cererilor de date

    ■ 2. Modul specific de organizare şi funcţionar e a serveruluiOr acle■ 2.1 Instanţa Oracle: organizare procese şi memorie internă■ 2.2 Procesare comenzi SQL [Select, Update, Commit]■ 2.3 Structuri de organizare/gestiune/alocare specifice Oracle

    * 2

  • 8/16/2019 DBS 1 Arhitectura BD

    3/100

    1.Structuri generice de organizare specificeale unui server de baze de date

    ➢ 1.1. Servicii de gestiune [ce]

    ➢ Funcţii generice

    ➢ Procese (aplicaţii-programe) ale sistemului de operare

    ➢ 1.2. Structuri de organizare [cu ce]

    ➢ Structuri de organizare a spaţiului de memorie:

    ▪ organizarea memoriei persistente/externe, spaţiul de stocare persistent: disk-uri convenţionale, disk-uri de reţea, memorii externe, CDuri sau DVDuri, benzi

    ▪ organizarea memoriei interne, spaţiul de memorie activ, cache-ul serverului dedate.

    ➢ Operaţii I/O – operaţii de transfer între spaţiul persistent şi spaţiul activ.

    ➢ 1.3. Funcţionare – procesarea cererilor de date [cum] – procesarea cererilorSQL, desfăşurarea operaţiilor I/O cu/asupra structurilor de memorie

    * 3

  • 8/16/2019 DBS 1 Arhitectura BD

    4/100

    1.1 Serviciile de gestiune - SGBD/DBMS[materializate ca procese ale s.o.]

    ▪ Srv. de gestiune a accesului la date:

    ▪ managementul spaţiului fizic de stocare;

    ▪ procesarea cererilor de date (procesorul SQL: compilare, plan deexecuţie, operaţii I/O etc.);

    ▪ managementul operaţiilor I/O;

    ▪ managementul memoriei interne.

    ▪ Srv. de gestiune a sesiunilor de lucru ale clienţilor (utilizatorilor):

    ▪ managerul de securitate;▪ managerul de stare a sesiunilor paralele;

    ▪ managerul accesului concurenţial şi al sistemului de blocaje.

    * 4

  • 8/16/2019 DBS 1 Arhitectura BD

    5/100

    Serviciile de gestiune[Procese s.o. SGBD/DBMS]

    ▪ Srv. de jurnalizare-recuperare (managerul stărilor bazei de date):

    ▪  jurnalizarea modificărilor asupra stării bazei de date;

    ▪ managerul copiilor de siguranţă;

    ▪ reconstituirea/recuperarea stării bazei de date;▪ Srv. de monitorizare şi control :

    ▪ auditarea activităţilor cu baza de date (date privind accesul, statisticidespre performanţe);

    sisteme de avertizare dinamică;▪ auto-management sau management pro-activ.

    * 5

  • 8/16/2019 DBS 1 Arhitectura BD

    6/100

    1.2 Structuri de organizare a memoriei şi de access la spaţiului fizic  (persistent) de stocare

    ❑ Datele din tabelele SQL se regăsesc în 2 tipuri de structuri persistente:

    ❑ tabele fizice – grupând înregistrări  sau intrări  tabelare stocate într-unansamblu de pagini  pentru tabele;

    ❑ indecşi   – centrate pe valori-cheie stocate în înregistrări ce formează căi de

    access/căutare şi în înregistrări care le asociază cu pointeri către înregistrăriletabelare:

    ▪ reprezintă structuri de facilitare a accesului (selectiv) la înregistrările sauintrările din tabele;

    ▪ sunt organizate folosind două tipuri de pagini:

    ▪  pagini frunză care grupează intrări sau înregistrări de tip index  ce stocheazăasocieri: valoare cheie de access – pointer (i ) înregistrări tabelare;

    ▪  pagini ramuri  care grupează intrări formează căi de access din asocieri:valoare cheie de access – pointer(i) înregistrare index  pentru următorulnivel/pointer(i) înregistrări tabelare.

    * 6

  • 8/16/2019 DBS 1 Arhitectura BD

    7/100

    Structuri de organizare a memoriei şi de access la spaţiului fizic  (persistent) de stocare (c.)

    ■ Paginile de memorie (împreună cu înreg. pe care le conţin) se potregăsi în două spaţii (de stare):

    ■ spaţiu de memorie persistentă/pasiv (spaţiu de stocare de unde vor fi transferate în);■ spaţiu de memorie tranzientă/activ (fiind disponibile imediat procesărilor de date

    SQL).■ Spaţiul de stocare (sau spaţiul de memorie) persistent/ă:

    ■ provine din locaţii de stocare de tip HDD, discuri logice de reţea, dispozitive destocare externă (flash, DVD, bandă magnetică etc.) accesibile prin structurile S.O.(directoare, fişiere);

    ■ este gestionat sub formă de tablespace-uri (spaţiu pentru tabele în trad.),

    ■ un tablespace poate acoperi una sau mai multe locaţii persistente;■ spaţiul unui tablespace este alocat (tabelelor fizice şi indecşilor) sub forma de

    clustere (grupuri) de pagini adiacente – extenturi .

    * 7

  • 8/16/2019 DBS 1 Arhitectura BD

    8/100

    Terminologie engl.-ro.

    Engl RoTable TabelăTable Page Pagină tabelară

    Table Row/Entry Înregistrare/intrare în tabelăIndex IndexIndex Row/Entry Înregistrare/intrare de tip indexLeaf idx. Row Înregistrare index frunzăNon-leaf idx. Row Înregistrare index ramură

    Root idx. Row Înregistrare index rădăcină

    * 8

  • 8/16/2019 DBS 1 Arhitectura BD

    9/100

    Organizarea memoriei internesau a spaţiului activ 

    ▪ Prin spaţiu activ   înţelegem ansamblul de pagini  (de tabele sau indecşi) accesibileimediat (fără costuri în timp de procesare-încărcare), cu alte cuvinte buffer/cache-ulserverului de date.

    ▪ Spaţiul activ este structurat sub formă de buffere: 

    ▪ fiecare buffer grupează un set de pagini  de date din tabele sau indecşi;▪ gestiunea datelor din buffere are ca obiectiv reducerea numărului de op. I/O prin

     înmagazinarea cât mai mult timp a paginilor celor mai des accesate – indicatorulcache-hit-ration ar trebui să fie cât mai ridicat, iar indicatorul cache-miss-ration câtmai scăzut;

    ▪ alimentarea şi descărcărcarea bufferelor se face prin operaţiuni I/O a cărorfrecvenţă reprezintă costul  cu importanţa cea mai însemnată în procesarea SQL.

    * 9

  • 8/16/2019 DBS 1 Arhitectura BD

    10/100

    Operaţiile de transfer I/O

    ▪ Operaţiunile I/O urmăresc:

    ▪ asigurarea disponibilităţii  datelor: aducerea/citirea paginilor din spaţiul de memoriepasiv (şi persistent) în spaţiul de memorie activ (şi tranzient);

    ▪ asigurarea permanenţei  datelor: salvarea/scrierea paginilor din spaţiul de memorie

    activ (şi tranzient) în spaţiul de memorie pasiv (şi persistent).▪ Operaţii de citire (a datelor pentru tabele) sunt în principal de 2 feluri şi sunt influenţate

    de condiţiile-predicative-de căutare din cererile SQL şi de modul de organizare aspaţiului fizic:

    ▪ aleatoare (random)  – cele mai costisitoare – au ca scop căutarea/localizarea uneipagini de memorie singulare şi încărcarea ei în buffer cache;

    ▪ secvenţiale – pornind de la o pagină cu o locaţie cunoscută (găsită de regulă printr-o operaţie aleatoare) va fi citit/încărcat un ansamblu de pagini adiacente peroperaţie.

    * 10

  • 8/16/2019 DBS 1 Arhitectura BD

    11/100

    Operaţiile de transfer I/O

    ▪ Un alt mod de a privi operaţiile de transfer ţinând cont de anumite tehnici de ameliorare(valabile în special pentru cele aleatoare) le împarte în:

    ▪ operaţii sincrone: fluxul căutare/localizare → încărcare în buffer cache →procesare pagini se desfăşoară secvenţial;

    ▪ operaţii asincrone: prin care fazele de căutare/localizare şi încărcare pentru

    anumite pagini se pot suprapune cu fazele de procesare ale altora (lucru posibil princitirea nu numai a paginilor cerute în procesarea curentă ci şi a altora adiacente,probabil a fi cerute în următoarea procesare – Disk Read Ahead ).

    ▪ Operaţii secvenţiale tipice:

    ▪ full table scan;

    ▪ full index scan;▪ index slice scan;

    ▪ table scan via clustering index (pentru mediile care permit creare de indecşi de tipclustering).

    * 11

  • 8/16/2019 DBS 1 Arhitectura BD

    12/100

    1.3. Procesarea operaţiilor SQL

    ■ Etape:■ compilare frază SQL:

    ■ analiză sintactică şi semantică;■ elaborare plan de execuţie;

    ■ determinare căi de access;■ evaluare căi de access;■ determinare cursoare temporare;■ determinare operaţii asupra datelor temporare;

    ■ execuţie plan;■ transmitere rezultat.

    * 12

  • 8/16/2019 DBS 1 Arhitectura BD

    13/100

    Procesare SQL (c.)

    ■ Execuţie planului presupune (de regulă):■ asigurarea disponibilităţii  datelor în buffer cache:

    ■ verificare existenţă date în cache;■ interpretare cale de acces:

    ■ aducere în buffer şi interpretare (scanare) pagini index pentru localizarepagini tabelă;

    ■ aducere în buffer şi procesare (scanare) pagini ale tabelelor pentrulocalizare înregistrărilor-ţintă;

    ■ prelucrarea înregistrărilor  din buffere:■ pentru SELECT de ex. câmpuri calculate;

    ■ pentru UPDATE modificare înregistrări din pagini bufferizate;■ constituirea cursorului rezultat conţinând setul de înregistrări

    prelucrate - formare set de rezultate final (pentru SELECT).

    * 13

  • 8/16/2019 DBS 1 Arhitectura BD

    14/100

    * 14

  • 8/16/2019 DBS 1 Arhitectura BD

    15/100

    2. Structuri de organizare specificeserverului ORACLE

    ■ 2.1 Instanţa ORACLE■ Procese server ■ Procese background■ Memoria internă

    ■ 2.2 Ciclul de funcţionare al instanţei■ Etape pornire şi oprire instanţă■ Procesare cereri de date de către instanţa Oracle

    ■ 2.3 Organizarea spaţiului de stocare într-o BD Oracle■ Fişiere■ Spaţii pentru tabele (tablespaces)■ Blocuri şi extenturi■ Segmente

    * 15

  • 8/16/2019 DBS 1 Arhitectura BD

    16/100

    2.1 Instanţa Oracle – procese

    ■ Procese server ■ gestionează sesiunile de lucru ale clienţilor;■ controlează fluxul de procesare SQL;■ prezintă un mod de lucru sincron cu procesele-utilizator (aplicaţiile

    client).

    ■ Procese background – au ca responsabilităţi:■ gestiunea operaţiilor I/O în fişierele de date, de jurnalizare a operaţiilor şi

    de arhivare a jurnalelor (DBWR, LGWR, ARCH);■ gestiunea versionării şi sincronizării fişierelor de date cu starea activă a

    bazei de date (CHKP, SMON);

    ■ controlul concurenţei asupra datelor (LOCKn);■ monitorizarea consistenţei şi recuperarea stării bazei de date (SMON);■ monitorizarea proceselor server şi a resurselor aferente acestora

    (PMON).

    * 16

  • 8/16/2019 DBS 1 Arhitectura BD

    17/100

    Instanţa Oracle - memoria activă

    ❑ Sistemul de buffer-cache al Oracle este divizat în:■ spaţiu de memoria partajată SGA, System Global Area),

    accesibilă tuturor proceselor Oracle cu roluri legate de:■ bufferizare date din fişiere de date, database buffer

    cache);■ bufferizare jurnalizări, redo log buffer ;■ bufferizare procesări SQL, shared pool, mai exact

    ■ stocare text SQL-planuri de execuţie, library cache;■ stocare date din dicţionar necesare pentru

    elaborarea planurilor de execuţie, data dictionarycache;

    ■ spaţiu de memorie privată PGA, Private/Program Global Area, din care se alocă spaţiu privat pentru fiecare processerver (deci pentru fiecare sesiune activă).

    * 17

  • 8/16/2019 DBS 1 Arhitectura BD

    18/100

    Ansamblul funcţional al instanţei Oracle

    *18

  • 8/16/2019 DBS 1 Arhitectura BD

    19/100

    2.2 Ciclul de funcţionare a instanţeiMecanismul de procesare al frazelor SQL

    ■ Etapele pornirii  instanţei:■ scop: disponibilitatea datelor pentru sesiunile utilizatorilor ■ obiective: formarea bufferelor interne, deschiderea fişierelor de

    date, deschiderea sesiunilor de lucru.

    ■ Etapele opririi  instanţei:■ scop: transferul datelor în mod consistent în spaţiul/mediul destocare persistent;

    ■ obiective: închierea tranzacţiilor curente, sincronizarea fişierelor dedate.

    ■ Procesare fraze/comenzi SQL:■ procesare SELECT (citirea/aducerea datelor în database buffer

    cache);■ procesare fraze DML (update, insert, delete);■ procesare COMMIT.

    * 19

  • 8/16/2019 DBS 1 Arhitectura BD

    20/100

    Etapele pornirii serverului Oracle

    Faza NOMOUNT presupune citirea opţiunilor de configurare din•fişierul parametri binar SPFILE

    •sau fişierul parametri text PFILE;.Parametrii instanţei se împart după criteriile:• statici vs. dinamici;• la nivel de sistem vs. la nivel de sesiune;

     ALTER SYSTEM SET p=v SCOPE ... DEFERRED

    * 20

  • 8/16/2019 DBS 1 Arhitectura BD

    21/100

    Etapele opririi serverului Oracle

    * 21

  • 8/16/2019 DBS 1 Arhitectura BD

    22/100

    SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORD]

    Modul de oprire  A I  T  N 

    Permite noi conexiuni X X X X

    Aşteaptă până la încheierea sesiunilorcurente

    X X X  

    Aşteaptă până la încheierea tranzacţiilorcurente

    X X 

    Forţează un ckeckpoint şi închidefişierele

    X  

    X – Nu,  - DA A – Abord, I Immediate, T - Transactional, N  - Normal 

    Opțiunile operației SHUTDOWN

    * 22

  • 8/16/2019 DBS 1 Arhitectura BD

    23/100

    Etape din procesarea cererilor/interogări SQL specificefuncţionării instanţei Oracle

    ● 1. PARSE:○ analiza sintactică;○ analiza semantică;○ elaborare QEP [Query Execution Plan]:

    ● 2. EXECUTE:○ citire date în db buffer cache;○ procesare date din db buffer cache;○ formare cursor rezultate.

    ● 3. FETCH:

    ○ livrare/transmitere rezultat către programele utilizator/client.

    * 23

  • 8/16/2019 DBS 1 Arhitectura BD

    24/100

    Etape generice procesare SQLSELECT * FROM angajati ORDER BY nume;

    24

  • 8/16/2019 DBS 1 Arhitectura BD

    25/100

    Memorie activa server

    Buffere

    Buffer date

    catalog-

    dicţionar

    Buffer jurnalBufferdate

    SELECT * FROM angajati WHERE marca=7369

    Procesare cerere SELECT

    Proces

    server

    Fisiere jurnalFisiere date

    Baza de date structuriinterne

    2

    3

    *

    Aplicatieutilizator 

    4

    1

    25

  • 8/16/2019 DBS 1 Arhitectura BD

    26/100

    Procesare cereri SELECT de citire date

    ➢ Faze premergătoare:i. determinare locaţie înregistrări  – determinare adrese blocuri de

    date fizice;ii. verificare disponibilitate blocuri în memoria internă.

    1. Citire/preluare blocuri din fişiere de date.2. Transfer date (din fişiere) în buffere interne.3. Stocare blocaje în dicţionarul bazei de date.

    4. Transmitere set de înregistrări către aplicaţia utilizator.

    * 26

    P DML UPDATE

  • 8/16/2019 DBS 1 Arhitectura BD

    27/100

    Memorie activa server

    Buffere

    Buffer date

    catalog-

    dicţionar

    Buffer

     jurnal

    Buffer

    date

    UPDATE angajati SET sal=sal*1.1 WHERE marca=7369

    Procesare cerere DML - UPDATE

    1

    Proces

    server

    Fisiere jurnalFisiere date

    Baza de date structuriinterne

    2

    3

    4

    5

    * 27

  • 8/16/2019 DBS 1 Arhitectura BD

    28/100

    Procesare cerere DML

    1. Citire blocuri din fişiere de date.2. Transfer blocuri (din fişiere) în buffere interne.3. Stocare blocaje în dicţionarul bazei de date.

    4. Jurnalizare modificări în buffere specifice.5. Procesare modificare asupra datelor:

    1. salvare imagine nealterată a blocurilor de date (nemodificate) însegmente UNDO;

    2. efectuare modificări asupra înregistrărilor din blocuri.

    * 28

  • 8/16/2019 DBS 1 Arhitectura BD

    29/100

    Procesare SQL (DML etapa 5.1) - Segmentul undo /rollback

    * 29

  • 8/16/2019 DBS 1 Arhitectura BD

    30/100

    Procesare cerere COMMIT

    Processerver

    Aplicatieutilizator 

    Memorie activa server

    Buffere

    Buffer date

    catalog-

    dicţionar

    Buffer jurnal

    Bufferdate

    Fisiere jurnalFisiere date Baza de datestructuri interne

    1

    25

    3

    4

    * 30

  • 8/16/2019 DBS 1 Arhitectura BD

    31/100

    Procesare cerere COMMIT

    1.  Înregistrare operaţiune commit  în jurnal2. Salvare buffer conţinând jurnalul modificărilor pe suport

    persistent

    3. Eliberare blocaje consemnate în dicţionar 4. Informare utilizator 5. (… ulterior – efectuare checkpoint ) Salvare buffere de

    date modificare pe suport persistent

    * 31

  • 8/16/2019 DBS 1 Arhitectura BD

    32/100

    Rolul segmentelor UNDO în procesarea cererilor SELECT

    ❑ Faze (reconsiderare):

    1. Determinare locaţie înregistrări (cerute de client) – determinare adrese blocuri dedate fizice.

    2. Verificare disponibilitate blocuri:i. blocuri deja în memoria internă – buffer cache;ii. blocuri indisponibile:

    1) preluare blocuri din fişiere;2) aducere blocuri în buffere;3) (opţional – clauza FOR UPDATE) consemnare blocaje asupra blocurilor

     în dicţionar;3. Verificare status înregistrări:

    1) scanare blocuri şi localizare înregistrări;2) verificare status înregistrări - SCN (system change number):

    i. SCN înregistrare din bloc SCN de start al sesiunii curente (al

    procesului server)➢ reconstituire înregistrare din imagine undo bloc.

      * 32

  • 8/16/2019 DBS 1 Arhitectura BD

    33/100

    Rolul segmentelor UNDO în procesare cereri SELECT

    * 33

  • 8/16/2019 DBS 1 Arhitectura BD

    34/100

    Procesare ROLLBACK

    [Discuție/Analiză -pornind de la rolul și modul de funcționare al segmentelor UNDO]

    * 34

  • 8/16/2019 DBS 1 Arhitectura BD

    35/100

    2.3 Organizarea spaţiului de stocare într-o BD Oracle

    ■ 2.3.1 Structuri de organizare şi gestiune a spaţiuluidisponibil/alocabil■ 2.3.1.1 Perspectiva generală asupra structurilor Oracle de

    management al spaţiului de stocare

    ■ 2.3.1.2 Crearea bazei de date şi alocarea spaţiului pentru baza dedate. Rolul tablespaceurilor ■ 2.3.1.3 Alocarea spaţiului pentru segmente

    ■ 2.3.2 Stocarea datelor pentru indecşi■ 2.3.2.1 Indecşi convenţionali: B*TREE şi BITMAP

    ■ 2.3.3 Stocarea datelor pentru tabele■ 2.3.3.1 Tabele convenţionale■ 2.3.3.2 Clustere

    ■ 2.3.4 Partiţionare tabele si indecsi

    * 35

  • 8/16/2019 DBS 1 Arhitectura BD

    36/100

    2.3.1 Structuri de organizare şi gestiune aspaţiului disponibil/alocabil

    ■ 1. De la fişiere (nivelul s.o.) la segmente de date (nivelul logical obiectelor din schema Oracle).

    ■ 2. Procesul de creare a bazei de date: alocarea spaţiului fizic.

    ■ 3. Gestiunea spaţiului pentru tabele şi indecşi.

    * 36

  • 8/16/2019 DBS 1 Arhitectura BD

    37/100

    2.3.1.1 Perspectiva generală asupra structurilor Oracle demanagement al spaţiului de stocare

    ■ Fişierele de date [datafiles];■ Spaţiile pentru tabele [tablespaces] acoperă unul sau mai multe

    fişiere de date:■ spaţii pentru date din tabelele şi indecşii de bază;

    ■ spaţii pentru date undo;■ spaţii pentru date temporare;■ Blocurile  - pagini de memorie;■ Extenturile sunt seturi de blocuri adiacente, alocate obiectelor

    conţinând date (extinzând spaţiul persistent alocat obiectelor cu date,

    ex. tabele);■ Segmentele sunt imaginile “fizice”, pe disc, ale obiectelor conţinând

    date și definite în dicţionar. Prin urmare un segment va cumula toateextenturile alocate unui obiect.

    *37

  • 8/16/2019 DBS 1 Arhitectura BD

    38/100

    Legăturile/Corelarea structurilor logice şi fizice deorganizare a spaţiului de stocare

    *38

  • 8/16/2019 DBS 1 Arhitectura BD

    39/100

    Arhitectura blocului de date Oracle convenţional

    *39

  • 8/16/2019 DBS 1 Arhitectura BD

    40/100

    Tablespace-uri într-o bază de date Oracle

    *40

  • 8/16/2019 DBS 1 Arhitectura BD

    41/100

    2.3.1.2 Crearea sau iniţializarea unei baze de date Oracle.Rolul tablespace-urilor 

    ■ Procesul de creare a bazei de date implică:■ crearea structurilor fizice, inclusiv alocarea spaţiului pentru

    structurile dicţionarului date;■ crearea dicţionarului de date;

    ■ Alocarea spaţiului pentru baza de date se face:■ din (sursa) dispozitivile fizice de stocare (discuri logice alesistemului de fişiere) →

    ■ către (destinaţia) tablespaceuri, ca structuri de managementintern.

    ■ Alocarea spaţiului din baza de date se face:■ din (sursa) tablespaceuri →■ către (destinaţia) segmentele pentru date ale dicţionarului de date

    sau ale utilizatorilor (schemele propriu-zise).

    *41

  • 8/16/2019 DBS 1 Arhitectura BD

    42/100

    Crearea unei baze de date ORACLE

    ■ Etapele procesului de creare:■ 1. Planificarea bazei de date.■ 2. Crearea instanţei bazei de date.■ 3. Pornirea instanţei bazei de date.■ 4. Execuția comenzii CREATE DATABASE – crearea structurilor fizice.■ 5. Crearea dicţionarului bazei de date şi a mediului PL/SQL (execuția

    scripturilor catalog.sql  şi catproc.sql ).■ 6. Crearea segmentelor undo necesare.■ 7. Crearea celorlalte structuri fizice necesare.

    ■ Rezultat:■ fişiere de date, de control şi jurnale;■ schema SYS conţinând dicţionarul bazei de date şi bibliotecile mediului

    PL-SQL;■ utilizatorii administratori sys şi system.

    *42

    Comanda de creare a unei baze de date ORACLE

  • 8/16/2019 DBS 1 Arhitectura BD

    43/100

    CREATE DATABASE "db01"

    MAXINSTANCES 8

    MAXLOGHISTORY 1

    MAXLOGFILES 16MAXLOGMEMBERS 3

    MAXDATAFILES 100

    DATAFILE 'C:\Oracle\oradata\db01\DISK1\system01.dbf' SIZE 300M

    REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

    EXTENT MANAGEMENT LOCAL

    SYSAUX DATAFILE 'C:\Oracle\oradata\db01\DISK1\sysaux01.dbf' SIZE 120M

    REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

    DEFAULT TEMPORARY TABLESPACE TEMPTEMPFILE 'C:\Oracle\oradata\db01\DISK2\temp01.dbf'

    SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

    UNDO TABLESPACE "UNDOTBS1"

    DATAFILE 'C:\Oracle\oradata\db01\DISK2\undotbs01.dbf'

    SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED

    CHARACTER SET WE8MSWIN1252

    NATIONAL CHARACTER SET AL16UTF16

    LOGFILE

    GROUP 1 ('C:\Oracle\oradata\db01\DISK3\redo01.log') SIZE 51200K,

    GROUP 2 ('C:\Oracle\oradata\db01\DISK3\redo02.log') SIZE 51200K,

    GROUP 3 ('C:\Oracle\oradata\db01\DISK3\redo03.log') SIZE 51200K 

    USER SYS IDENTIFIED BY "&&sysPassword"

    USER SYSTEM IDENTIFIED BY "&&systemPassword";

    Comanda de creare a unei baze de date ORACLE

    *43

  • 8/16/2019 DBS 1 Arhitectura BD

    44/100

    Opţiunea Oracle Managed Files

    ■ OMF se referă la gestiunea automată a căilor către fişierelor de date şide jurnalizare:

    ■ prin următorii parametri sunt stabilite căile/locaţiile implicite pe disc ale fişierelor dedate sau de jurnalizare (numele efectiv al acestora fiind stabilite după un şablon-sistem implicând o particulă secvenţială):

    ■ DB_CREATE_FILE_DEST – pentru fişierele de date;■ DB_CREATE_ONLINE_LOG_DEST_ n – pentru fişierele jurnal (n fiind numărul

    grupului redo-log).

    ■ Dacă opţiunea OMF este activată comenzile implicând crearea saumodificarea parametrilor acestor tipuri de fişiere (CREATE

    TABLESPACE, CREATE DATABASE, ALTER DATABASE, ALTERTABLESPACE) nu vor mai trebui să menţioneze căile şi numeleprestabilite.

    *44

  • 8/16/2019 DBS 1 Arhitectura BD

    45/100

    ■ Proprietar: SYS.■ Locaţie fizică: tablespace SYSTEM.■ Structuri de organizare:

    ■ tabele de bază, din schema SYS;■ tabele virtuale de acces:

    Dicţionarul bazei de date Oracle

    *

    45

  • 8/16/2019 DBS 1 Arhitectura BD

    46/100

    Rolul tablespaceurilor: Gestiunea alocării spaţiului din baza de date

    ● Spaţiul asociat tablespace-urilor provine de pe dispozitivilefizice, permanente de stocare:○ este alocat sub formă de fişiere de date la nivelul cărora se

    delimitează blocurile (paginile) de date;

    ● Structurile de tip tablespace:○ permit gestiunea flexibilă a spaţiilor de stocare;○ sunt esenţiale în separarea logică a spaţiilor alocate funcţie de

    natura sau destinaţia concretă a datelor (tabele, indecşi, undo,temporare);

    ○ permit efectuarea anumitor operaţiuni de mentenanţă (de ex.recuperare/restaurare) fără blocarea bazei de date.

    *

    46

  • 8/16/2019 DBS 1 Arhitectura BD

    47/100

     SYSTEM

    DATA

    INDEXES

    TOOLS

    UNDO

    TEMP

    Arhitectura OFA: Optimable Flexible Architecture

    ■ Principii de bază:■ structură de directoare flexibilă;■ separarea obiectelor având natură

    diferită;■ separarea obiectelor avândcomportament diferit;

    ■ separarea componentelor BD pe maimulte discuri.

    * 47

  • 8/16/2019 DBS 1 Arhitectura BD

    48/100

    CREATE TABLESPACE

    DATAFILE file_specification[, file_specification[AUTOEXTEND OFF]or [AUTOEXTEND ON [NEXT number K or M]

    [MAXSIZE UNLIMITED or MAXSIZE number K or M]][MINIMUM EXTENT number K or M][ EXTENT MANAGEMENT LOCAL | DICTIONARY] 

    [ SEGMENT SPACE MANAGEMENT AUTO | MANUAL] [DEFAULT STORAGE ( [INTIAL integer K|M] [NEXT integer K|M][MINEXTENTS  integer] [MAXEXTENTS  integer|UNLIMITED] [PCTINCREASEinteger] )] ][ONLINE or OFFLINE][PERMANENT or TEMPORARY]

    CREATE TABLESPACE DATA01DATAFILE 'd:\oracle\u01data\disk4\data01.dbf' SIZE 2M

      'd:\oracle\u01data\disk4\data01.dbf' SIZE 2M

    MINIMUM EXTENT 500K

    DEFAULT STORAGE (INITIAL 500K NEXT 500K MAXEXTENTS 500 PCTINCREASE 0)

    Comanda CREATE TABLESPACE

    *

    48

  • 8/16/2019 DBS 1 Arhitectura BD

    49/100

    LMT: Clauza EXTENT MANAGEMENT LOCAL[Locally Managed Tablespaces]

    ■ Se referă la modul de gestiune a informaţiilor cu privire la spaţiulliber şi/sau alocat dintr-un tablespace (care sunt extenturialocate/ocupate şi libere), prin clauzele următoare, asociatecomenzii CREATE TABLESPACE:■ EXTENT MANAGEMENT LOCAL – opţiune implicită care implică

    construirea unui bitmap în antetul primului fişier din tablespace;■ EXTENT MANAGEMENT DICTIONARY – opţiune care implică crearea

    unor tabele speciale în dicţionarul de date.

    ■ CREATE DATABASE … EXTENT MANAGEMENT LOCAL … ;■ CREATE TABLESPACE userdata DATAFILE

    '%ORACLE_BASE%\oradata\u01\data03.DBF' SIZE 5MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 250k;

    *

    49

  • 8/16/2019 DBS 1 Arhitectura BD

    50/100

    ASSM: Clauza SEGMENT SPACE MANAGEMENT AUTO[Auto Segment Space Management]

    ■ Se referă la modul de gestiune a informaţiilor cu privire la spaţiulliber şi alocat dintr-un segment (lista de blocurile libere):■ gestiunea automată  – clauza SEGMENT SPACE MANAGEMENT

    cu opţiunea implicită  AUTO – prin intermediul unui bitmap stocat în

    blocul-antet (primul bloc) al segmentului;■ gestiunea manuală (la nivelul dicţionarului) - clauza SEGMENTSPACE MANAGEMENT cu opţiunea MANUAL.

    ■ CREATE TABLESPACE userdata DATAFILE

    '%ORACLE_BASE%\oradata\u01\data03.DBF' SIZE 5MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 250kSEGMENT SPACE MANAGEMENT AUTO;

    *

    50

  • 8/16/2019 DBS 1 Arhitectura BD

    51/100

    Comanda CREATE TABLESPACE în context OMF[Oracle Managed Files]

    ■ Parametru definitoriu:DB_CREATE_FILE_DEST

    ■ Exemplu creare tablespace:CREATE TABLESPACE userdata

    DATAFILESIZE 2M AUTOEXTEND ON

    NEXT 500K MAXSIZE 5M;■ Exemplu modificare adăugare spaţiu în tablespace:

     ALTER TABLESPACE userdata

     ADD DATAFILE SIZE 5M;

    *

    51

  • 8/16/2019 DBS 1 Arhitectura BD

    52/100

    Comanda SQL modificarea stării unui tablespace[ALTER TABLESPACE]

    ■  ALTER TABLESPACE – clauzele privind stările posibile ale unui tablespace:■  în întregime:

    ■ OFFLINE■ NORMAL■ IMMEDIATE■ TEMPORARY

    ■ ONLINE■ READONLY■ READWRITE

    ■  ALTER TABLESPACE – clauzele privind stările fișierelor componente:■ parțial (structural) prin clauza DATAFILE.

    ■ OFFLINE [FOR DROP] - ALTER TABLESPACE ... DROP DATAFILE■ ONLINE

    *

    52

  • 8/16/2019 DBS 1 Arhitectura BD

    53/100

    Tabele virtuale din dicţionarcu informaţii despre tablespace-uri

    *

    53

  • 8/16/2019 DBS 1 Arhitectura BD

    54/100

    2.3.1.3 Alocarea spaţiului pentru segmente de date

    ● Categorii de segmente - după natura datelor ○ segmente pentru date din tabele de bază:

    ■ segmente tabelă convenţionale;■ segmente index

    ○ segmente pentru date undo;○ segmente pentru date temporare:■ pentru stocare seturi de înregistrări procesate în sortări

    (ORDER BY), grupări (GROUP BY), creare intrăriindecşi (CREATE INDEX).

    *

    54

  • 8/16/2019 DBS 1 Arhitectura BD

    55/100

    Alocarea spaţiului pentru segmente de date

    ●  În Oracle alocarea spaţiului este gestionată prin clauza STORAGE:care:

    ○ stabileşte modul de dimensionare a fiecărui extent de date(fragment de alocare);

    ○ configurabită pentru 3 nivele■ nivelul sistemului   – valorile implicite ale parametrilor de alocarepentru tablespaceuri;

    ■ nivelul fiecărui tablespace  – valorile specifice tablespaceurilorcare vor fi implicite pentru toate segmentele găzduite;

    ■ nivelul fiecărui segment   – valorile specifice fiecărui segment.

    *

    55

  • 8/16/2019 DBS 1 Arhitectura BD

    56/100

    Parametri de alocare a spaţiului din tablespace-uri[Clauza STORAGE]

    ■ DEFAULT STORAGE  – cu LMT/ASSM■ INTIAL integer K|M■ MINEXTENTS integer ■ MAXEXTENTS integer|UNLIMITED

    ■ DEFAULT STORAGE  – fără LMT/ASSM■ INTIAL integer K|M■ NEXT integer K|M

    ■ MINEXTENTS integer ■ MAXEXTENTS integer|UNLIMITED■ PCTINCREASE integer 

    *56

  • 8/16/2019 DBS 1 Arhitectura BD

    57/100

    Moduri de stocare a datelor – tipuri de segmente

    ■ Mod de stocare a datelor din indecşi:■ segmente index (convenţionale);■ segmente partiţii index.

    ■ Mod de stocare date din tabele■ segmente tabelă (convenţionale);■ segmente cluster;■ segmente partiţii tabelă;■ segmente index;■ fişiere externe.

    *

    57

  • 8/16/2019 DBS 1 Arhitectura BD

    58/100

    2.3.2 Stocarea datelor pentru INDECŞI

    ■ Indecşii reprezintă principala cale de access la datele din tabele:■ blocurile index sunt încărcate înaintea blocurilor din tabele;■ blocurile index sunt scanate funcţie de predicatele frazelor SQL

    (clauzele WHERE) pentru a determina intrările/înregistrările indexcorespunzătoare care conţin adresele fizice ale înregistrărilorţintă din blocurile tabelelor.

    ■ Modul de organizare internă a indecşilor:■ este diferit de cel al tabelelor, fiecare intrare nouă are o locaţie

    (calculabilă) prestabilită: implică stocarea ordonată a intrărilor  dictată de cheia de indexare;■ este optimizat astfel încât găsirea intrărilor cu valorile (cheilor)

    corespunzătoare (provenite din evaluarea predicatelor de access)să fie foarte rapidă.

    58*

  • 8/16/2019 DBS 1 Arhitectura BD

    59/100

    Segment index

    Cheie   Rowid

    1003 r►►

    1007 r►►

    1009 r►►

    Segment tabelă

    1007

    1003

    1009

    2.3.2.1 Rolul unui index

    *

    59

  • 8/16/2019 DBS 1 Arhitectura BD

    60/100

    Clasificarea indecşilor în ORACLE

    ■ D.p.d.v. al structurii logice:■ după nr. de coloane:

    ■ indecşi formaţi după o singură coloană;■ Indecşi formaţi după mai multe coloane;

    ■ după unicitate:■ indecşi unici;■ indecşi neunici;

    ■ D.p.d.v. fizic sau al implementării :

    ■ indecşi B-Tree şi bitmap;■ indecşi partiţionaţi şi nepartiţionaţi.

    *

    60

  • 8/16/2019 DBS 1 Arhitectura BD

    61/100

    2.3.2.2 Indecşi ORACLE B*TREE şi Bitmap

    ■ Structura indecşilor  (b*tree sau bitmap) se bazează:■ pe un sistem de blocuri ramuri:

    ■ pornind de la un unic nod rădăcină cu pointeri către noduri ramuri care se înlănţuie →

    ■ formând căi de căutare cu acelaşi număr de nivele de parcurs indiferent devaloarea căutată;

    ■ pe un set ordonat de blocuri frunză, având o structură diferită în privinţa interpretăriiasocierii valorilor-cheie din intrările finale cu adresele (ROWID) înreg. din tabele

    ■  În privinţa indecşilor B*TREE:■ fiecare intrare frunză conţine valoarea cheii de indexare şi un ROWID (cazul

    indecşilor unici) sau un set de ROWIDuri(cazul indecşilor neunici) indicând înreg. dintabela de bază ce conţin respectiva cheie;

    ■  În privinţa indecşilor BITMAP:■ fiecare intrare frunză asociază valoarea cheii de indexare cu un bitmap (un set de biţi )astfel că fiecare înreg. din tabela de bază este reprezentă prin poziţia unui bit  distinctcare:■ dacă este setat 1 semnalează faptul că respectiva linie conţine valoarea cheii;■ dacă este setat 0 semnalează faptul că respectiva linie nu conţine valoarea

    cheii.   *61

  • 8/16/2019 DBS 1 Arhitectura BD

    62/100

    Structura indexului Oracle B-TREE

    *

    62

    Structura indexului Oracle BITMAP

  • 8/16/2019 DBS 1 Arhitectura BD

    63/100

    Structura indexului Oracle BITMAP

    *

    63

  • 8/16/2019 DBS 1 Arhitectura BD

    64/100

    CREATE [UNIQUE] INDEX index ON table( column [ column ] …)[TABLESPACE tablespace]  [PCTFREE integer]  [INITRANS integer]  [MAXTRANS integer]  [STORAGE storage-clause]  [LOGGING | NOLOGGING]

      [NOSORT]

    Comanda CREATE INDEX

    *

    64

    Refacerea indecșilor

  • 8/16/2019 DBS 1 Arhitectura BD

    65/100

    Refacerea indecșilor 

    ALTER INDEX index REBUILDTABLESPACE tablespacename[PCTFREE integer][INITRANS integer]

      [MAXTRANS integer]  [STORAGE storage-clause]  [LOGGING | NOLOGGING][NOSORT][ONLINE];

    *

    65

    Vi il i f tii d i d i

  • 8/16/2019 DBS 1 Arhitectura BD

    66/100

    View-urile cu informatii despre indecsi

    *

    66

  • 8/16/2019 DBS 1 Arhitectura BD

    67/100

    2.3.3 Stocarea datelor pentru TABELE

    ■ Tabelele reprezintă structura principală de stocare a datelor, uneori însăindecşii se pot dovedi suficienţi:■ dacă datele invocate în frazele SQL se găsesc chiar în cheia indecşilor ■ dacă în structura de tip index, în locul pointerului, se asociază chiar datele

    din înregistrările tabelelor (cu excepţia coloanelor după care sunt definite

    cheile, bineînţeles)■ Stocarea datelor  din tabelele SQL se poate face în mai multe moduri:

    ■ tabele convenţionale [Heap tables];■ clustere [Clustered Tables];

    ■ Index Clustered Tables;

    ■ Hash Clustered Tables;■ Sort Hash Clustered Tables;■ tabele organizate în structuri de tip index [Index Organized Tables];■ partiţii de tabele [Patitioned Tables];

    *

    67

  • 8/16/2019 DBS 1 Arhitectura BD

    68/100

    2.3.3.1 Stocarea datelor în segmente-tabele convenţionale

    ■ Organizarea internă a înregistrărilor în blocurile de date din tabeleconvenţionale (heap tables):■ noile înregistrări sunt stocate aleator , după un factor legat de principiul

    descoperirii spaţiului liber disponibil, deci fără vreun criteriu de grupare sauordonare care să fie în concordanţă cu conţinutul lor.

    ■ Alocarea şi utilizarea spaţiului alocat unei tabele:■ este dependentă de o serie de parametri referitori la:

    ■ spaţiul necesar (clauza storage);■ utilizarea spaţiului în cadrul blocurilor (PCTUSED, PCTFREE).

    ■ este specificată prin comanda SQL CREATE TABLE care include clauzespecifice privind alocarea şi gestiunea spaţiului fizic.

    *

    68

  • 8/16/2019 DBS 1 Arhitectura BD

    69/100

    Organizarea internă a liniilor TABELELOR în blocurile de date

    *

    69

    Utili ți l i î bl il O l

  • 8/16/2019 DBS 1 Arhitectura BD

    70/100

    Utilizare spațiului în blocurile Oracle

    *

    70

  • 8/16/2019 DBS 1 Arhitectura BD

    71/100

     Înlănţuirea și migrarea înregistrărilor tabelelor 

    *

    71

    Indicatorul HIGH WATER MARK

  • 8/16/2019 DBS 1 Arhitectura BD

    72/100

    Indicatorul HIGH WATER MARK

    *

    72

    Comanda CREATE TABLE

  • 8/16/2019 DBS 1 Arhitectura BD

    73/100

    CREATE TABLE table(column datatype [,column datatype ] …)  [TABLESPACE tablespace]  [PCTFREE integer]

      [PCTUSED integer]  [INITRANS integer]  [MAXTRANS integer]  [STORAGE storage-clause]  [LOGGING | NOLOGGING]

      [CACHE | NOCACHE]

    Comanda CREATE TABLEclauze specifice alocării şi gestiunii spaţiului de stocare

    *

    73

  • 8/16/2019 DBS 1 Arhitectura BD

    74/100

    Tabele virtuale din dicţionar cu informații despre tabele

    *

    74

    Identificarea inregistrarilor prin cheie fizică:

  • 8/16/2019 DBS 1 Arhitectura BD

    75/100

    Identificarea inregistrarilor prin cheie fizică:ROWID

    ■ Structura hexazecimala valorii ROWID:■ Data Object Number  (numărul obiectului de date) – număr unic de

    identificare asignat fiecărui obiect de date (tabelă sau index) atuncicând este creat;

    ■ Relativ File Number  (numărul fişierului relativ la baza de date) –număr unic de identificare al fiecărui fişier din tablespace-ul de careaparţine;

    ■ Block Number  (numărul blocului) - număr ce reprezintă poziţiablocului de date, conţinând respectiva linie, în fişierul de date;

    ■ Row Number  – poziţia slotului înregistrării în catalogul înregistrărilordin antetul blocului.

    *

    75

    Identificarea inregistrarilor prin cheie fizică:

  • 8/16/2019 DBS 1 Arhitectura BD

    76/100

    Identificarea inregistrarilor prin cheie fizică:ROWID

    ■ Pachet DBMS de interpretare a ROWID oferă următoarele funcții:■ ROWID_OBJECT(rowid)■ ROWID_RELATIVE_FNO(rowid)■ ROWID_BLOCK_NUMBER(rowid)

    ■ ROWID_ROW_NUMBER(rowid)■ Exemplu interogare SELECT cu ROWIDSELECT nrfact, ROWID,

    DBMS_ROWID.ROWID_OBJECT(ROWID) AS OBJECT,

    DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AS “RELATIVE FILE”,

    DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLOCKFROM FACTURI;

    *

    76

    2 3 3 2 S d l di b l î C USTER

  • 8/16/2019 DBS 1 Arhitectura BD

    77/100

    2.3.3.2 Stocarea datelor din tabele în segmente-CLUSTER

    ■  Înregistrările dintr-o tabelă clusterizată:■ sunt stocate grupat , ţinând cont de o cheie de grupare a cărei

    valoare este preluată din structura tabelelor;■ pot partaja spaţiul de stocare (al aceluiaşi bloc de date) cu

     înregistrările altor tabele clusterizate după aceeaşi cheie, cheia-clusterului contituind principiul de relaţionare-corelare dintre tabele.■  Înregistrările din tabelele clusterizate pot fi grupate:

    ■ după o cheie de indexare – în structuri de tip cluster indexat ;■ după o funcţie hash – în structuri de tip cluster hash

    ■ funcţia hash implementează de fapt un algoritm de calcul allocaţiei înregistrărilor.

    *

    77

    C i l t d ti i d

  • 8/16/2019 DBS 1 Arhitectura BD

    78/100

    CREATE CLUSTER cluster( column datatype [ column datatype ] …)[PCTFREE integer][PCTUSED integer]

    [INITRANS integer]  [MAXTRANS integer]  [SIZE integer [ K|M ]  [STORAGE storage-clause]  [LOGGING | NOLOGGING]  [NOSORT][TABLESPACE tablespace][INDEX]

    Crearea unui cluster de tip index

    *

    78

    Crearea unui cluster de tip index

  • 8/16/2019 DBS 1 Arhitectura BD

    79/100

    1. CREATE CLUSTER  com_clu 

      (nrcom NUMBER(4))  SIZE 200 TABLESPACE DATA01  STORAGE (INITIAL 5M NEXT 5M PCTINCREASE 0);

    p

    2. CREATE INDEX com_clu_idx   ON CLUSTER com_clu

      TABLESPACE INDX01  ( STORAGE INITIAL 1M NEXT 1M PCTINCREASE 0);

    3. CREATE TABLE  comenzi   (nrcom NUMBER(4) CONSTRAINT pk_com PRIMARY KEY,  datacom DATE, codcl CHAR(4))  CLUSTER com_clu(nrcom);  CREATE TABLE prodcom  (nrcom NUMBER(4) CONSTRAINT prodcom_comenzi_fkREFERENCES comenzi,  codprod NUMBER(4), cantitate NUMBER(3),  CONSTRAINT pk_prodcom PRIMARY KEY (nrcom, codprod))  CLUSTER com_clu(nrcom);

    *

    79

    C i l t d ti h h

  • 8/16/2019 DBS 1 Arhitectura BD

    80/100

    Crearea unui cluster de tip hash

    CREATE CLUSTER cluster( column datatype [ column datatype ] …)HASHKEYS integer [HASH IS expression][PCTFREE integer]

    [PCTUSED integer][INITRANS integer]  [MAXTRANS integer]  [SIZE integer [ K|M ]  [STORAGE storage-clause]

      [LOGGING | NOLOGGING]  [NOSORT]  [TABLESPACE tablespace]

    *

    80

    Cl ifi l t l

  • 8/16/2019 DBS 1 Arhitectura BD

    81/100

    Clauze specifice clusterelor 

    ■ Clauza SIZE reprezintă spaţiul total necesar stocării tuturor înregistrărilor grupate în jurul unei valori a cheii clusterului.

    ■ Clauza HASHKEYS reprezintă numărul total de valori distincte a

    valorilor cheii de grupare şi influenţează împreună cu clauza SIZEdeterminarea numărului de blocuri necesare (şi adresabile) în care vorfi atocate înreg. din tabele funcţie de rezultatul funcţiei hash derepartizare.

    *

    81

    Determinarea clauzei SIZE

  • 8/16/2019 DBS 1 Arhitectura BD

    82/100

    Determinarea clauzei SIZE

    SIZE =(Nr. de linii per cheia clusterului din Table1 *

      Lungimea medie a liniilor în Table1)+ (Nr. de linii per cheia clusterului din Table2 *

      Lungimea medie a liniilor în Table2)

    + spaţiul rezervat antetului cheii cluster-ului+ lungimea coloanelor cheii cluster-ului  + 2 * (Nr. de linii per cheia clusterului din Table1 +  Nr. de linii per cheia clusterului din Table2)

    *

    82

    Determinarea clauzei HASHKEYS

  • 8/16/2019 DBS 1 Arhitectura BD

    83/100

    Determinarea clauzei HASHKEYS

    *

    83

    Informatii despre cluster-e din dicţionar 

  • 8/16/2019 DBS 1 Arhitectura BD

    84/100

    p ţ

    *

    84

    2.3.3.3 Stocarea datelor din tabele în tabele-index

  • 8/16/2019 DBS 1 Arhitectura BD

    85/100

    IOT: Index Organized Tables

    ■  Înregistrările din tabele pot fi stocate în totalitate ordonat  ţinând cont de ocheie de sortare care va defini de fapt structura unui segment de tip index  ceva stoca în locul adreselor înregistrărilor de bază (ROWIDurilor) chiarrespectivele înregistrări.

    CREATE TABLE table(column datatype [,column datatype ] …)ORGANIZATION INDEX[TABLESPACE tablespace][PCTFREE integer][INITRANS integer]

      [MAXTRANS integer]  [STORAGE storage-clause]  [PCTTHRESHOLD integer [INCLUDING column]]  [OVERFLOW segment_attributes_clause ]

    *

    85

  • 8/16/2019 DBS 1 Arhitectura BD

    86/100

    View-urile cu informații despre tabele IOT

    *

    86

    2 3 4 PARTITIONARE TABELE si INDECSI

  • 8/16/2019 DBS 1 Arhitectura BD

    87/100

    2.3.4 PARTITIONARE TABELE si INDECSI

    ■ Partiţionarea reprezintă “spargerea” fizică a unei tabelesau index în mai multe secţiuni (partiţii) mai mici şi maiuşor de gestionat/manipulat, având ca potenţiale beneficii:■ creşterea disponibilităţii datelor (pierderea unei partiţii

     înseamnă doar pierderea acelei secţiuni de date şi nu a întregii tabele);■ facilitarea administrării unor segmente mari de date;■ optimizarea(explicită) a anumitor interogări;

    ■ reducerea gradului de concurenţialitate a unor volumemari de operaţiilor I/O pe aceleaşi segmente de date;■ facilitarea implementării bazelor de date distribuite fizic.

    *

    87

    PARTITIONARE TABELE si INDECSI

  • 8/16/2019 DBS 1 Arhitectura BD

    88/100

    PARTITIONARE TABELE si INDECSI

    ■ Partiţionarea reprezintă o decizie de proiectare (fizică)_■ ce are drept subiect principal tabelele de bază;■ ce este luată în considerare îndeoseobi în contextul

    bazelor de date distribuite;

    ■ ce poate afecta şi procesul de creare a indecşilor, darca efect secundar al partiţionării tabelelor de bază.

    *

    88

    2 3 4 1 Stocarea datelor din tabele în partiţii

  • 8/16/2019 DBS 1 Arhitectura BD

    89/100

    2.3.4.1 Stocarea datelor din tabele în partiţii

    ■ Secţionarea tabelelor în partiţii:■ presupune un mod de grupare a înregistrărilor din tabele ce are în vedere:

    ■ intervale de valori  ale cheii de partiţionare (range partitioning şi intervalpartitioning), spre deosebire de clustere unde gruparea (şi repartizareafizică a) înreg. se bazează pe valorile distincte ale unei cheii de

    grupare;■ liste de valori simple (list partitioning), declarate explicit , ale cheii departiţionare;

    ■ locaţii-hash deduse din cheia de partiţionare (hash partitioning):rezultatul aplicării funcţiei hash asupra valorilor coloanei-cheie esteinterpretat ca partiţie-locaţie pentru înregistrările respective.

    ■ are ca rezultat distribuirea spaţiului de stocare al unei singure tabele pe unset de segmente de date separate, care eventual ar putea fi localizatechiar pe un sistem de site-uri  distribuite “geografic”.

    *

    89

    Partiţii de tip RANGE

    http://oracle-base.com/articles/8i/partitioned-tables-and-indexes.phphttp://oracle-base.com/articles/8i/partitioned-tables-and-indexes.php

  • 8/16/2019 DBS 1 Arhitectura BD

    90/100

    Partiţii de tip RANGE

    CREATE TABLE tbl_range_partitioned (  range_key_col INTEGER,  misc_data_col VARCHAR2(100))PARTITION BY RANGE (range_key_col)(  PARTITION ptbl_1 VALUES LESS THAN (1000),  PARTITION ptbl_2 VALUES LESS THAN (2000),

      PARTITION ptbl_3 VALUES LESS THAN (3000),  PARTITION ptbl_4 VALUES LESS THAN (maxvalue));

    *

    90

    Partiţii de tip LIST

    http://oracle-base.com/articles/8i/partitioned-tables-and-indexes.phphttp://oracle-base.com/articles/8i/partitioned-tables-and-indexes.phphttp://oracle-base.com/articles/9i/partitioning-enhancements-9i.phphttp://oracle-base.com/articles/9i/partitioning-enhancements-9i.php

  • 8/16/2019 DBS 1 Arhitectura BD

    91/100

    Partiţii de tip LIST

    CREATE TABLE tbl_list_partitioned (  list_key_col CHAR(2),  misc_data_col VARCHAR2(100))PARTITION BY LIST (list_key_col)(  PARTITION ptbl_1 VALUES (‘AA’, ‘AB’, ‘AC’, ‘AD’),  PARTITION ptbl_2 VALUES (‘BA’, ‘BC’),

      PARTITION ptbl_3 VALUES (‘CA’, ‘CB’, ‘CC’),  PARTITION ptbl_others VALUES (DEFAULT));

    *

    91

    Partiţii de tip HASH

    http://oracle-base.com/articles/9i/partitioning-enhancements-9i.phphttp://oracle-base.com/articles/9i/partitioning-enhancements-9i.php

  • 8/16/2019 DBS 1 Arhitectura BD

    92/100

    Partiţii de tip HASH

    CREATE TABLE tbl_hash_partitioned (  hash_key_col DATE,  misc_data_col VARCHAR2(100))PARTITION BY HASH (hash_key_col)PARTITIONS 3STORE IN(TS1,TS2,TS3);

    *

    92

    Partiţii de tip INTERVAL

  • 8/16/2019 DBS 1 Arhitectura BD

    93/100

    Partiţii de tip INTERVAL

    CREATE TABLE tbl_interval_partitioned (  interval_key_col INTEGER,  misc_data_col VARCHAR2(100))PARTITION BY RANGE (interval_key_col)INTERVAL (1000)STORE IN (TS1, TS2, TS3)(

      PARTITION ptbl_0 VALUES LESS THAN (1000));

    *

    93

    Partiţii de tip INTERVAL 

  • 8/16/2019 DBS 1 Arhitectura BD

    94/100

    Varianta interval dată calendaristică

    CREATE TABLE tbl_interval_partitioned (  interval_key_col DATE,  misc_data_col VARCHAR2(100))PARTITION BY RANGE (interval_key_col)INTERVAL (numtoyminterval(1,'month'))STORE IN (TS1, TS2, TS3)(

      PARTITION ptbl_0 VALUES LESS THAN(to_date(’01/01/2011’,’DD/MM/YYYY’))

    );

    *

    94

    Partiţii de tip REFERENCE după RANGE

  • 8/16/2019 DBS 1 Arhitectura BD

    95/100

    Partiţii de tip REFERENCE după RANGE

    ■ Pentru stocarea datelor unei tabele copil în partiţii similare celor aletabelei părinte se poate folosi partiţionarea de tip reference

    CREATE TABLE tbl_range_partitioned_parent (  range_key_col INTEGER PRIMARY KEY,  misc_data_col VARCHAR2(100))PARTITION BY RANGE (range_key_col)(  PARTITION ptbl_1 VALUES LESS THAN (1000),  PARTITION ptbl_2 VALUES LESS THAN (2000),  PARTITION ptbl_3 VALUES LESS THAN (3000));

    CREATE TABLE tbl_ref_partitioned_parent (

      id_ref INTEGER,  range_fk_col INTEGER NOT NULLCONSTRAINT fk_to_ tbl_range_partitioned

      REFERENCES tbl_range_partitioned_parent(range_key_col),  misc_ref_col VARCHAR2(100)) ENABLE ROW MOVEMENTPARTITION BY REFERENCE(fk_to_ tbl_range_partitioned);

    *

    95

    2.3.4.2 Indecşi nepartiţionaţi şi indecşi partiţionaţi

  • 8/16/2019 DBS 1 Arhitectura BD

    96/100

    2.3.4.2 Indecşi nepartiţionaţi şi indecşi partiţionaţi

    ■ Indecşii nepartiţionaţi:■ sunt creaţi în contextul inexistenţei unei politici de partiţionare a tabelelor

    de bază;■ (sau) sunt creaţi în contextul existenţei unei politici de partiţionare a

    tabelelor de bază, dar nu fac obiectul partiţionării tabelelor de bază;

    ■ Indecşii partiţionaţi:■ sunt creaţi în contextul existenţei unei politici de partiţionare a tabelelorde bază, şi fac obiectul partiţionării:■ reflectând întocmai (prin cheile de indexare) structura partiţiilor

    tabelelor - intrările unei partiţii-index punctează toate către înreg.unei partiţii-tabele) şi invers – indecşi locali ;

    ■ printr-o politică de secţionare independentă de eventuala partiţionarea tabelelor: intrările unei partiţii-index pot “puncta” către înregistrăriaparţinând oricărei înregistrări din tabela de bază, deci localizată înoricare partiţie-tabelă– indecşi globali .

    *

    96

    Indecşi GLOBALI

  • 8/16/2019 DBS 1 Arhitectura BD

    97/100

    Indecşi GLOBALI

    ■ Sunt definiţi folosind o clauză de partiţionare (PARTITION BY) specificăindependentă de cea folosită la eventuala partiţionare a tabelelor de bază:CREATE TABLE fact_tbl (nrfact INTEGER, datafact DATE)

    PARTITION BY RANGE (datafact)( PARTITION ptbl_1

    VALUES LESS THAN (TO_DATE(‘01/08/2010’, ‘DD/MM/YYYY’)),  PARTITION ptbl_2VALUES LESS THAN (TO_DATE(‘01/01/2011’, ‘DD/MM/YYYY’)));

    CREATE INDEX fact_idx_g ON fact_tbl (nrfact) GLOBAL

    PARTITION BY RANGE (nrfact)( PARTITION pidx_1 LESS THAN 2500,  PARTITION pidx_2 LESS THAN 5000,PARTITION pidx_3 VALUES LESS THAN (maxvalue));

    *

    97

    Indecşi LOCALI

  • 8/16/2019 DBS 1 Arhitectura BD

    98/100

    Indecşi LOCALI

    ■ Sunt definiţi fără o clauză de partiţionare, politica de partiţionare fiind strictdependentă de cea folosită la partiţionarea tabelelor de bază:

    CREATE TABLE fact_tbl (nrfact INTEGER, datafact DATE)PARTITION BY RANGE (datafact)

    ( PARTITION ptbl_1 VALUES LESS THAN TO_DATE(‘01/08/2010’,‘DD/MM/YYYY’),  PARTITION ptbl_2 VALUES LESS THAN TO_DATE(‘01/01/2011’,

    ‘DD/MM/YYYY’));

    CREATE INDEX fact_idx _l ON fact_tbl(datafact ) LOCAL;

    *

    98

    Referinţe

  • 8/16/2019 DBS 1 Arhitectura BD

    99/100

    Referinţe

    Titlu Referinţe interne URL

    Lahdenmaki, Tapio, Leach, Michael,Relational database index design and

    optimizers: DB2, Oracle, SQL server et al ,John Wiley & Sons, 2005

    Cap. 2, pag. 11Cap. 3, pag. 29

    Mullins, Craig, Database Administration: the

    complete guide to practices and procedures, Addison-Wesley, 2002

    Cap. 2, pag. 49

    Cap. 7, pag. 203Cap.10, pag. 267

    Thomas Kyte Expert Oracle Database Architecture.Oracle Database 9i, 10g, and

    11g Techniques and Solutions, Second

    Edition, Apress, 2010

    Cap. 13, pag. 557

    *

    99

  • 8/16/2019 DBS 1 Arhitectura BD

    100/100