DBS 1 Arhitectura BD
-
Upload
monicaelenanistor -
Category
Documents
-
view
223 -
download
0
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