CATEGORII DOCUMENTE |
Oracle memoreaza datele in mod logic in spatiile-tabel si fizic in fisierele de date. Spatiile-tabel pot apartine numai unei singure baze de date, constau din unul sau mai multe fisiere de date si sunt impartite in unitati logice de stocare. La randul lor fisierele de date pot apartine unui singur spatiu-tabel si unei singure baze de date, ele inmagazinand practic toate obiectele schemelor din baza de date.
Bazele de date, spatiile-tabel si fisierele de date sunt foarte strans legate intre ele, dar prezinta si deosebiri importante:
o baza de date Oracle consta din unul sau mai multe unitati logice de stocare numite spatii-tabel, care impreuna stocheaza toate datele bazei;
fiecare spatiu-tabel al unei baze de date Oracle consta din unul sau mai multe fisiere numite fisiere de date care sunt fizic structurate in functie de sistemul de operare pe care ruleaza baza de date.
Exemple:
cea mai simpla baza de date poate avea doar un spatiu-tabel si un singur fisier de date;
o alta baza de date poate avea trei spatii-tabel, fiecare fiind la randul lui constituit din doua fisiere de date (in total vom avea sase fisiere de date).
Serverul Oracle recunoaste doua tipuri de spatii-tabel:
Spatiul-tabel SYSTEM. Se creaza odata cu baza de date este necesar tuturor bazelor de date si contine dictionarul de date, unitati de program precum si segmentul de revenire precum si segmentul de revenire SYSTEM. Cu toate ca este permis, acest spatiu-tabel nu ar trebui sa contina obiecte proprii utilizatorilor.
Spatii-tabel non-SYSTEM. Permit o mai mare flexibilitate in administrarea bazei de date, ajuta la separarea diverselor obiecte din baza (indecsi, obiecte temporare, obiecte de lucru, segmenti de revenire, etc.) precum si a datelor dinamice de cele statice. De asemenea permit controlul spatiului total alocat fiecarui utilizator in parte.
Crearea spatiilor-tabel se realizeaza cu ajutorul comenzii:
CREATE TABLESPACE nume
[ DATAFILE clauze_fisier ]
[ MINIMUM EXTENT numar_intreg [K | M] ]
[ BLOCKSIZE numar_intreg [K] ]
[ LOGGING | NOLOGGING ]
[ DEFAULT clauza_stocare ]
[ ONLINE | OFFLINE ]
[ PERMANENT | TEMPORARY ]
[ clauze_administrare_extenti ]
[ clauze_administrare_segmente ]
unde:
DATAFILE - specifica fisierul sau fisierele de date ce alcatuiesc spatiul-tabel;
clauze_fisier - are urmatoarea sintaxa:
nume_fisier [ SIZE numar_intreg [ K | M ] [ REUSE ] [ clauza_autoextend ] ]
unde:
SIZE specifica dimensiunea fisierului in kilobytes sau megabytes,
REUSE permite server-ului Oracle sa refoloseasca un fisier mai vechi,
clauza_autoextend - activeaza sau dezactiveaza extinderea automata a fisierului de date cu urmatorii parametri : NEXT (specifica dimensiunea spatiului urmator alocat pe disc atunci cand mai multe extinderi sunt necesare), MAXSIZE (specifica spatiul maxim ce poate fi ocupat pe disc de extinderea automata a fisierului), UNLIMITED (spatiul ce poate fi ocupat de fisier este nelimitat);
MINIMUM EXTENT - asigura ca fiecare dimensiune a extentilor din spatiul-tabel sa fie un multiplu al unui numar_intreg. K si M se folosesc pentru a specifica dimensiunea in kilobytes respectiv megabytes;
BLOCKSIZE - specifica un bloc de dimensiune nestandard pentru spatiul-tabel. Pentru a se putea specifica aceasta clauza va trebui setat parametrul DB_CACHE_SIZE, iar numarul intreg specificat trebuie sa corespunda cu setarea unuia din parametrii DB_nK_CACHE_SIZE;
LOGGING / NOLOGGING - specifica daca se va face sau nu inregistrarea modificarilor tabelelor, indecsilor, partitiilor apartinand spatiului-tabel, intr-un fisier de revenire;
DEFAULT - specifica parametrii impliciti de stocare pe disc pentru toate obiectele create odata cu spatiul-tabel;
OFFLINE - face ca spatiul-tabel sa nu fie disponibil imediat dupa creare;
PERMANENT / TEMPORARY - specifica faptul ca spatiul-tabel va fi folosit pentru a pastra obiecte permanente respectiv temporare;
clauze_administrare_extenti - specifica modul de administrare al extinderilor spatiului-tabel;
clauze_administrare_segmenti - specifica modul de administrare al segmentilor
Exemplu:
SQL> CREATE TABLESPACE Tabele_temporare
DATAFILE '/oracle/data/temporar.dbf' SIZE 100M
AUTOEXTEND ON NEXT 5M MAXSIZE 200M
DEFAULT STORAGE (
INITIAL 160K
NEXT 160K
MINEXTENTS 1
MAXEXTENTS 50)
Spatiile-tabel isi aloca spatiu suplimentar cu ajutorul extinderilor. Ele pot folosi doua moduri diferite de a tine evidenta spatiului liber si a celui folosit:
spatii-tabel administrate local - extinderile sunt administrate in cadrul spatiilor-tabel prin intermediul bitmap-urilor. Fiecare bit al acestor bitmap-uri corespunde unui bloc sau unui grup de blocuri. Cand o extindere este alocata sau eliberata pentru refolosire, serverul Oracle schimba valorile acestor biti pentru a putea evidentia noua stare a blocurilor. Incepand cu Oracle 9i, acest mod de administrare este implicit.
spatii-tabel administrate de dictionarul de date - extinderile sunt administrate prin intermediul acestui dictionar. Server-ul Oracle actualizeaza anumite tabele din dictionar de fiecare data cand se aloca sau elibereaza o extindere.
Incepand cu Oracle 9i, modul de administrare local este implicit.
Acest mod de administrare al spatiilor-tabel se defineste in momentul crearii spatiului-tabel prin intermediul clauze_administrare_extinderi ce are urmatoarea sintaxa:
[ EXTENT MANAGEMENT [ DICTIONARY | LOCAL
[ AUTOALOCATE | UNIFORM [ SIZE numar_intreg [K | M] ] ] ]
unde:
DICTIONARY / LOCAL - specifica modul de administrare al spatiului-tabel. Daca se alege LOCAL nu se mai poate specifica optiunea DEFAULT, MINIMUM EXTENT sau TEMPORARY;
AUTOALLOCATE - specifica faptul ca spatiul-tabel este administrat de sistem, iar administratorul nu va putea specifica marimea extinderii. Aceasta optiune este implicita;
UNIFORM - specifica faptul ca spatiul-tabel se va extinde uniform prin alocare de extinderi cu dimensiunea specificata prin optiunea SIZE. Implicit dimensiunea extinderii este de 1M.
Exemplu:
SQL> CREATE TABLESPACE date_utilizator
DATAFILE '/oracle/oradata/userdata.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
Avantajele administrarii locale a spatiilor-tabel:
impiedica operatiile recursive de administrare a spatiului, fapt intalnit in cazul administrarii cu ajutorul dictionarului de date;
deoarece administrarea locala nu stocheaza date in tabelele dictionarului de date, se reduce continutul acestor tabele;
deoarece administrarea locala a extinderilor cauta automat spatiul liber adiacent , se elimina nevoia de unificare a extinderilor nealocate;
dimensiunea extinderilor administrate local poate fi determinata automat de catre sistem;
modificarile survenite in bitmap-ul asociat extinderii nu genereaza informatii de revenire deoarece ele nu actualizeaza tabelele din dictionarul de date.
Principalele caracteristici ale acestui mod de administrare sunt:
extinderile sunt administrate prin intermediul dictionarului de date;
fiecare segment pastrat in spatiul-tabel poate avea o clauza diferita de stocare (STORAGE);
sunt necesare operatii de unificare a extinderilor nealocate.
Marele avantaj al acestui mod de administrarea este flexibilitatea ridicata datorata clauzei de stocare ce poate fi diferita pentru fiecare segment.
Exemplu:
SQL> CREATE TABLESPACE date_utilizator
DATAFILE '/oracle/oradata/userdata.dbf' SIZE 500M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 1M NEXT 1M );
Sunt folosite pentru a stoca numai segmentele UNDO si nu pot contine alte obiecte ale bazei de date. Extinderile acestui spatiu-tabel sunt implicit administrate local. Se creaza cu ajutorul comenzii CREATE UNDO TABLESPACE care este similara lui CREATE TABLESPACE doar ca permite folosirea doar a clauzelor DATAFILE si EXTENT MANAGEMENT.
Exemplu:
SQL> CREATE UNDO TABLESPACE undo_1
DATAFILE '/oracle/oradata/undo_1.dbf' SIZE 40M;
Sunt destinate in special operatiilor de sortare, pe care le face mult mai eficiente. Nu sunt destinate altor obiecte permanente si se recomanda administrarea locala a acestor spatii-tabel. Fisierele de date asignate spatiilor-tabel temporare au urmatoarele particularitati:
intotdeauna sunt setate in modul NOLOGGING;
nu se poate seta atributul de read-only;
nu se poate crea un fisier cu comanda ALTER DATABASE;
aceste fisiere sunt necesare bazelor de date read-only;
restaurarea bazei de date de pe un suport media nu restaureaza si aceste fisiere.
Exemlpu:
SQL> CREATE TEMPORARY TABLESPACE temporar
TEMPFILE '/oracle/oradata/temp.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
Pe langa aceste spatii-tabel temporare, este recomandata crearea unui spatiu-tabel temporar implicit. Rolul sau este de a elimina folosirea spatiului-tabel SYSTEM pentru pastrarea datelor temporare. El se poate crea folosind:
CREATE DATABASE;
ALTER DATABASE.
Exemplu:
SQL> ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE temporar;
Daca o baza de date este creata fara a se specifica spatiul-tabel temporar implicit, spatiul-tabel SYSTEM este asignat tuturor utilizatorilor ce au fost creati fara clauza TEMPORARY TABLESPACE (de asemenea in alertSID.log se plaseaza automat un avertisment referitor la acest lucru). Spatiul-tabel temporar implicit poate fi modificat oricand prin intermediul comenzii prezentate mai sus in exemplu. Daca sunt utilizatori care erau asignati spatiului-tabel temporar implicit, ei vor fi automat reasignati noului spatiu-tabel temporar implicit.
Asupra acestor spatii-tabel avem urmatoarele restrictii:
nu se poate sterge pana un alt spatiu-tabel temporar nu este facut implicit;
nu poate fi scos temporar din utilizare (OFFLINE);
deoarece spatiul-tabel temporar implicit poate fi spatiul-tabel SYSTEM sau un altul temporar, el nu poate fi definit ca unul permanent.
In mod normal, pentru ca datele continute de spatiile-tabel sa fie disponibile utilizatorului, aceste spatii-tabel trebuie sa fie in uz (ONLINE)
Scoaterea din utilizare a unui spatiu-tabel (trecerea in modul OFFLINE) are ca efect imposibilitatea utilizatorilor de a mai accesa datele continute de acesta. Acest lucru se poate dovedi in cazurile cand se doreste:
scoaterea din utilizare a unei portiuni a bazei de date, in timp ce restul bazei este accesibil;
doreste realizarea unui backup (acest lucru este posibil chiar daca spatiile-tabel sunt in uz - ONLINE);
restaurarea unui spatiu-tabel sau a unui fisier de date in timp ce baza este deschisa;
mutarea unui fisier de date cand baza este deschisa.
Cand baza de date este deschisa, administratorul poate scoate din utilizare orice spatiu-tabel cu exceptia celor temporare, SYSTEM sau a celor care au segmente de revenire active. Trecerea in modul OFFLINE se face cu comanda:
ALTER TABLESPACE nume
unde:
NORMAL, se salveaza datele din SGA in fisierele de date corespunzatoare spatiului-tabel;
TEMPORARY, se realizeaza o verificare a tuturor fisierelor de date corespunzatoare spatiului-tabel, chiar daca unele nu pot fi scrise (aparand erori din aceasta cauza, fapt ce determina restaurarea lor de pe suport media);
IMMEDIATE, nu se face nici un fel de verificare si din acest motiv este necesara o restaurare de pe suport media a fisierelor de date. Nu se poate folosi IMMEDIATE daca baza de date ruleaza in modul NOARCHIVELOG;
FOR RECOVER, trece spatiul-tabel in modul OFFLINE special pentru restaurarea acestuia de pe suport media;
Schimbarea acestor parametri se realizeaza cu ajutorul comenzii :
ALTER TABLESPACE nume
[ MINIMUM EXTENT numar_intreg [ K | M ] ]
[ DEFAULT clauza_stocare ]
Exemplu:
SQL> ALTER TABLESPACE user_data
DEFAULT STORAGE (INITIAL 2M NEXT 2M
MAXEXTENTS 999);
La spatiile-tabel administrate local nu se pot modifica parametrii de stocare.
Marirea unui spatiu-tabel se poate realiza in doua moduri:
modificarea dimensiunii fisierului de date asociat (lucru ce se poate face atat manual cat si automat);
adaugarea de fisiere de date spatiului-tabel.
Activarea extinderii automate a fisierelor de date se poate realiza cu una din comenzile:
CREATE DATABASE
CREATE TABLESPACE . . . DATAFILE
ALTER TABLESPACE . . . ADD DATAFILE
Clauza AUTOEXTEND (care activeaza sau nu extinderea automata a fisierului de date) are urmatoarea sintaxa:
[AUTOEXTEND ]
unde:
AUTOEXTEND, activeaza (ON) sau nu (OFF) extinderea automata a fisierului;
NEXT, specifica dimensiunea ce se aloca pe disc la fiecare extindere;
MAXSIZE, specifica dimensiunea maxima ce se poate aloca pe disc.
Exemplu:
SQL> CREATE TABLESPACE user_data
DATAFILE '/oracle/oradata/user1.dbf' SIZE 500M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
Beneficiile folosirii clauzei AUTOEXTEND sunt:
reduce nevoia de a interveni imediat atunci cand un spatiu-tabel ramane fara spatiu liber;
asigura faptul ca aplicatiile nu se vor mai bloca din cauza imposibilitatii de a aloca extenti.
Activarea manuala a extinderii unui fisier de date se face prin intermediul comenzii ALTER DATABASE:
ALTER DATABASE [nume_baza]
DATAFILE 'nume_fisier' [, 'nume_fisier2'] . . .
RESIZE numar_intreg [ K | M ]
Exemplu:
SQL> ALTER DATABASE
DATAFILE '/oracle/oradata/user_data.dbf'
RESIZE 750M;
Serverul Oracle permite adaugarea ulterioara a fisierelor de date unui spatiu-tabel pentru a se putea creste totalul de spatiu de pe disc alocat spatiului-tabel. Acest lucru se realizeaza cu comanda:
ALTER TABLESPACE nume
ADD DATAFILE
specificatii_fisier [ clauza_autoextend ]
Exemplu:
SQL> ALTER TABLESPACE user_data
ADD DATAFILE '/oracle/oradata/user3.dbf' SIZE 100M
Tinand cont de faptul ca spatiile-tabel sunt de doua feluri, vom avea doua metode de mutare (reasezare) a fisierelor de date si anume prin comenzile:
ALTER TABLESPACE
Aceasta comanda se aplica doar fisierelor apartinand spatiilor-tabel non-SYSTEM si care nu contin segmente undo sau temporare. Altfel spus comanda se aplica doar acelor spatii-tabel care pot fi facute OFFLINE.
Pasii care se parcurg pentru redenumirea unui fisier sunt urmatorii:
se scot din folosinta spatiile-tabel (OFFLINE);
se folosesc comenzile sistemului de operare pentru a muta sau copia fisierele respective;
se executa comanda ALTER TABLESPACE RENAME DATAFILE;
se repun in folosinta spatiile-tabel (ONLINE);
se folosesc comenzi ale sistemului de operare pentru a sterge fisierele ce nu mai sunt necesare.
Exemplu:
ALTER TABLESPACE userdata RENAME
DATAFILE '/oracle/oradata/user3.dbf'
TO '/oracle/oradata/user03.dbf';
ALTER DATABASE
Comanda se aplica acelor spatii-tabel care nu pot fi facute OFFLINE.
Pasii ce trebuiesc parcursi sunt urmatorii:
se opreste baza de date;
se folosesc comenzile sistemului de operare pentru a muta sau copia fisierele respective;
se porneste baza in modul MOUNT;
se executa comanda ALTER DATABASE RENAME FILE;
se deschide baza de date.
Exemplu:
ALTER DATABASE RENAME
FILE '/oracle/oradata/system1.dbf'
TO '/oracle/oradata/system01.dbf';
Comanda care realizeaza stergerea are urmatoarea sintaxa:
DROP TABLESPACE nume
[ INCLUDING CONTENTS [ AND DATAFILES ]
[ CASCADE CONSTRAINTS ] ]
unde:
INCLUDING CONTENTS va forta stergerea tuturor segmentelor spatiului-tabel;
AND DATAFILES va sterge si fisierele de date asociate spatiului-tabel;
CASCADE CONSTRAINTS va sterge restrictiile de integritate referentiala (restrictii care apar daca tabelele ce urmeaza a fi sterse sunt parintii unor tabele din alt spatiu-tabel).
Exemplu:
SQL> DROP TABLESPACE userdata
INCLUDING CONTENTS AND DATAFILES;
Nu se poate sterge spatiul-tabel SYSTEM sau daca are segmente active. Prin urmare se recomanda ca inainte de a se sterge un spatiu-tabel, acesta sa fie facut OFFLINE pentru a fi siguri ca nu exista tranzactii care sa acceseze segmentele spatiului-tabel.
Pentru a putea obtine informatii despre spatiile-tabel, fisierele de date si cele temporare, administratorul are la dispozitie o serie de vederi ale sistemului pe care le poate interoga. Acestea sunt:
pentru spatiile-tabel
DBA_TABLESPACE
V$TABLESPACE
pentru fisierele de date
DBA_DATA_FILES
V$DATAFILE
pentru fisierele temporare
DBA_TEMP_FILES
V$TEMPFILE
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2339
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved