Documente Academic
Documente Profesional
Documente Cultură
Formatul
Explicaii
CHAR( mrime)
Date
DATE
Long
LONG
LONG VARCHAR
LONG ROW
Numerice NUMBER
NUMBER (mrime)
NUMBER (ntregi
zecimali)
NUMBER(*)
DECIMAL
FLOAT
INTEGER
INTEGER (mrime)
RAW
SMALLINT
RAW(mrimea)
LONGRAW
unde:
UNIQUE se refer la faptul c tabela nu va conine dou rnduri cu aceleai
valori n coloanele index (deci nu vor exista dubluri n coloana index). Dac
se omite, tabela poate conine oricte asemenea rnduri care s aib n
coloana index aceeai valoare.
ASC|DESC precizeaz ordinea n care va fi pstrat indexul: ascendent sau
descendent.
COMPRESS indic faptul c indecii pot fi comprimai, reducndu-se n
acest mod spaiul necesar memorrii acestora i mrindu-se viteza
operaiilor care folosesc indecii. Comprimarea nu permite gsirea ntr-un
index a valorii unui anumit cmp fr s acceseze tabela. NOCOMPRESS
suprim comprimarea indecilor.
SYSSORT specific faptul c procedura standard ORACLE de sortare este
folosit pentru a crea un index. NOSYSSORT este folosit pentru depanare.
ROWS specific numrul aproximativ de rnduri ce urmeaz a fi indexate.
Acest numr este utilizat pentru a optimiza sortarea n SYSSORT. Clauza
nu are efect n SQL*Plus.
PCTFREE specific, n momentul crerii indexu-lui, procentul din spaiul
pentru index ce trebuie s rmn liber pentru actualizri. Nu are efect
asupra extensiilor alocate dup crearea indexului.
Indexul creat permite creterea vitezei de acces la datele unei tabele
prin intermediul coloanei index datorit faptului c se vor cuta rndurile
corespunztoare valorilor coloanei index, fr a citi ntreaga tabel.
Deoarece indexul i tabela trebuie actualizate, introducerile, tergerile i
modificrile n cmpul de valori ale coloanei index necesit un timp mai
mare. De aceea, se recomand crearea de maxim 3 indeci pentru o tabel.
In funcie de necesiti, se pot creea i terge n mod dinamic indeci.
Indecii creai pentru o singur tabel trebuie s aib nume distincte.
Pentru tabele diferite pot fi creai indeci cu acelai nume. n momentul
tergerii acestor indeci trebuie specificat tabela din care fac parte.
Comanda de validare a unui index este VALIDATE INDEX.
Aceast comand verific integritatea indexului specificat pentru o anumit
tabel. Dac pe tabela respectiv a fost creat un singur index, al crui nume
va fi specificat n comand, atunci numele tabelei poate fi omis. Comanda
VALIDATE INDEX are sintaxa:
VALIDATE INDEX nume-index
[ON nume-tabel] [WITH LIST];
unde:
Index dropped.
4.5. CREAREA I ACTUALIZAREA TABELELOR I INDECILOR
PARTIIONAI
Partiionarea este procesul de mprire a tabelelor i indecilor
foarte mari n mai multe tabele, i respectiv indeci, mai mici numite partiii
pentru a le putea manipula mai uor.
O dat definite partiiile, instruciunile SQL pot accesa i manipula
aceste partiii n loc de a manipula ntreaga tabel sau ntregul index din care
au provenit.
Toate partiiile au aceleai atribute logice ca i tabela sau indexul din
care au provenit. De exemplu toate partiiile unei tabele au aceleai coloane
cu aceleai constrngeri de integritate ca i tabela, iar partiiile unui index
sunt construite dup aceeai coloan ca i indexul din care au provenit.
Fiecare partiie este memorat ntr-un segment propriu aflat n
aceeai tabel spaiu sau n tabele spaiu diferite. Plasarea partiiilor n tabele
spaiu diferit prezint urmtoarele avantaje semnificative:
Riscul pierderii datelor poate fi diminuat;
Salvarea i restaurarea partiiilor se poate face independent unele fa de
altele;
Se poate realiza o echilibrare a operaiilor de I/O prin maparea partiiilor
pe discuri diferite.
O partiie este definit de urmtoarele:
Numele partiiei identific n mod unic partiia n schema de obiecte a
unui utilizator;
Referirea unei partiii se face n context obligatoriu cu numele tabelei
sau indexului din care provine. Numele unei partiii poate s apar n
instruciuni DDL i DML, precum i n utilitarele Import/Export i
SQL*Loader.
Exemplu:
ALTER TABLE tab10 DROP PARTITION part1;
Aria de cuprindere a partiiei este format din rndurile tabelei sau
indexului, care aparin acesteia bazat pe valorile coloanele ce definesc
partiia. Aria de cuprindere este definit prin clauzele:
PARTITION BY RANGE ( coloana1, colana2, )
i
VALUES LESS THAN (valoare1, valoare2, )
sau
ALTER TABLE MOVE PARTITION
Partiionarea indecilor se face respectnd cteva reguli:
Un index poate fi partiionat dac nu este inclus ntr-un grup de indeci
sau nu este definit pentru o tabel inclus ntr-un grup de tabele;
Indecii pot fi de patru categorii: locali prefixai, locali neprefixai,
globali prefixai i globali neprefixai. Indecii globali pot fi partiionai
sau nepartiionai. Un index este local dac cheile dintr-o partiie
oarecare a acestuia refer rnduri aflate ntr-o singur partiie a tabelei
pentru care a fost creat. Indexul local este prefixat dac este definit pe
un set de coloane dintre care cea mai din stnga este coloana dup care a
fost partiionat att indexul local, ct i tabela pe care a fost creat acesta.
De exemplu, presupunem c avem tabela TAB10 i indexul su
INDEX10, care au fost partiionai dup coloanele COL1 i CIOL2.
Dac indexul INDEX10 este definit pe coloanele (COL1, COL2,
COL3), atunci el este local prefixat pentru c n partea cea mai din
stnga(prefix) a listei coloanelor de indexare se afl coloanele COL1 i
COL2 dup care s-a fcut partajarea tabelei i a indexului su. Dac
indexul INDEX10 ar fi definit pe coloanele (COL1, CO23) atunci
indexul este local neprefixat. Indecii locali nu pot fi partiionai cu
clauza BY RANGE, aceast clauz se aplic numai pentru indecii
globali. Un index este global dac cheile dintr-o partiie oarecare a
acestuia refer rnduri aflate n mai multe partiii ale tabelei pentru care
a fost creat. La fel ca i n cazul indexului local putem avea index global
prefixat i index global neprefixa. Indexul global arat faptul c
partiionarea acestuia este definit de utilizator i nu trebuie s fie
echivalent cu partiionarea tabelei pentru care se creeaz.
Definirea atributelor fizice ale indecilor comport aceleai reguli ca la
definirea atributelor fizice ale partiiilor unei tabele, cu deosebirea c
aici se folosesc pentru crearea unui index comenzile:
CREATE INDEX
sau
ALTER TABLE SPLIT PARTITION,
iar pentru modificarea atributelor fizice comenzile SQL
ALTER INDEX MODIFY PARTITION
sau
ALTER INDEX REBUILD PARTITION.
ntr-un bloc de date al grupului. Dac SIZE este specificat astfel nct ntrun bloc de date s ncap dou chei de grup atunci spaiul acestui bloc este
folosit de ambele chei, iar dac un bloc de date nu poate cuprinde toate
rndurile aferente unei chei de grup, cheia de grup se memoreaz o singur
dat, iar blocurile de date se nlnuiesc de blocul n care se afl cheia de
grup. Dac ntr-un bloc de date ncap mai multe chei de grup, atunci acesta
poate s aparin mai multor lanuri de date.
Specificarea locului (tabelei spaiu) n care s fie plasat grupul de
tabele i grupul index asociat este obligatorie la crearea acestor grupuri.
Crearea grupului de tabele (cluster) se face cu comand SQL
CREATE CLUSTER. Se va crea nti grupul de tabele i apoi tabelele ce vor
face parte din grup. Atributele fizice se furnizeaz o singur dat, doar
pentru grup nu i pentru tabele.
Exemplu:
CREATE CLUSTER grup1 (col1 NUMBER (5))
PCTUSED 75 PCTFREE 10
SIZE 600
TABLESPACE tabsp1
STORAGE (INITIAL 200k
NEXT 290k
MINEXTENTS 3
MAXEXTENTS 25
PCTINCREASE 30);
CREATE TABLE tab1 (col1 NUMBER(5) PRIMARY KEY, col2
NUMBER (10), ) CLUSTER grup1 (col1);
CREATE TABLE tab2 (col3 NUMBER(5) PRIMARY KEY, col4
NUMBER (10), ,
col1 NUMBER (5) REFERENCE tab1(col1)) CLUSTER grup1
(col1);
unde col1 este cheia grupului.
Crearea grupului de indeci (cluster) se face cu comand SQL
CREATE INDEX cu clauza ON CLUSTER. Se va crea nti grupul de tabele
i apoi grupul de indeci asociat.
Exemplu:
CREATE INDEX index1
ON CLUSTER grup1
INITRANS 2
MAXTRANS 5
TABLESPACE tabsp2GR
PCTFREE 10
STORAGE (INITIAL 50k
NEXT 50k
MINEXTENTS 3
MAXEXTENTS 25
PCTINCREASE 30);
Modificarea grupurilor de tabele sau de indeci se face cu
comanda SQL ALTER CLUSTER. Elementele ce pot face obiectul
modificrii sunt atributele fizice ale grupului.