Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Administrarea tablespace-urilor si a fisierelor de date
Obiective
Descrierea structurii logice a bazei de date
Crearea tablespace-urilor
Schimbarea dimensiunilor tablespace-urilor folosind diferite metode
Schimbarea starii si a parametrilor de stocare pentru tablespace-uri
Mutarea fisierelor de date ale tablespace-urilor
Pregatirea tablespace-urilor necesare
Arhitectura bazei de date se refera la structura logica si structura fizica ale bazei de date.
Structura fizica cuprinde fisierele de control, fisierele de redo log online si fisierele de date.
Structura logica cuprinde tablespace-uri, segmente, extenturi si blocuri de date.
Separatia structurilor logica si fizica ofera un control fin al administrarii spatiului disc. Cind sint create structurile logice de stocare, spatiul este alocat in baza de date conform cu parametri predefiniti. DBA-ul are posibilitatea sa configureze acesti parametri.
O baza de date poate fi divizata in zone logice mai mici numite tablespace-uri.
Tablespace-uri
Un tablespace poate apartine unei singure baze de date.
Orice tablespace consta in unul sau mai multe fisiere ale sistemului de operare.
Tablespace-urile pot fi trecute online cit timp baza de date ruleaza.
Cu exceptia tablespace-ului SYSTEM si a unui tablespace care contine un segment de rollback activ, tablespace-urile pot fi trecute offline si baza de date continua sa ruleze.
Starea tablespace-urilor poate fi comutata intre read-write si read-only.
UTILITATEA TABLESPACE-URILOR
In controlul alocarii de spatiu disc si in alocarea cotelor de spatiu disc utilizatorilor
In controlul disponibilitatii datelor prin trecerea tablespace-urilor in starea online sau offline
In distribuirea stocarii datelor pe dispozitive de stocare diferite pentru a imbunatati performanta I/O a sistemului
Se pot executa operatii de backup si de refacere partiala
Se pot pastra cantitati mari de date statice pe dispozitive read only
FISIERELE DE DATE
Orice tablespace intr-o baza de date Oracle este alcatuit din unul sau mai multe fisiere ,fisierele de date. Acestea sint fisiere ale sistemului de operare pe care ruleaza serverul Oracle.
Un fisier de date poate aprtine unui singur tablespace.
Un server Oracle creeaza un fisier de date alocind cantitatea specificata de spatiu disc plus o cantitate mica de overhead.
DBA-ul poate schimba dimensiunea unui fisier de date dupa crearea sa sau poate impune ca un fisier de date sa creasca in mod dinamic pe masura ce obiectele din acel tablespace cresc. Aceasta are ca urmare ca baza de date poate contine mai putine fisiere de date per tablespace si ca DBA-ul poate ocoli limitarea impusa de parametrul MAXDATAFILES.
Oracle permite controlul spatiului disc pina la cel mai fin nivel de granularitate prin intermediul structurilor logice de stocare ce includ segmente, extenturi si blocuri de date.
SEGMENTE
Un segment este spatiul alocat pentru un anume tip de structura logica de stocare in cadrul unui tablespace. Urmatoarele sint exemple de segmente:
Segmente pentru tabele
Segmente pentru indecsi
Segmentele temporare
Segmentul de rollback
Un segment cum ar fi un segment de date se poate desfasura pe mai multe fisiere ce apartin aceluiasi tablespace.
EXTENTURI
Pe urmatorul nivel de granularitate al organizarii logice a spatiului disc se afla extenturile. Un extent este o multime de blocuri contigue.
Orice tip de segment este alcatuit din unul sau mai multe extenturi. Un extent nu se poate desfasura pe mai multe fisiere de date ci trebuie sa se afle intr-un singur fisier de date.
BLOCURI DE DATE
La cel mai fin nivel de granularitate, datele din baza de date Oracle sint stocate in blocuri de date. Un bloc de date corespunde unuia sau mai multor blocuri fizice ale sistemului de operare alocate intr-un fisier de date existent.
Dimensiunea blocului de date este specificata pentru fiecare baza de date Oracle prin parametrul de initializare DB_BLOCK_SIZE cind baza de date este creata. Un bloc al bazei de date este cea mai mica unitate de I/O.
Tablespace-ul SYSTEM contine:
Informatiile dictionarului de date
Segmentul de rollback SYSTEM
Un tablespace non-SYSTEM contine:
Segmente de rollback
Segmente temporare
Datele aplicatiilor
Indecsii aplicatiilor
O baza de date contine macar un tablespace: tablespace-ul SYSTEM.
Tablespace-urile suplimentare se creeaza pentru un control marit si pentru usurinta pe termen lung a intretinerii.
Serverul Oracle percepe doua tipuri de tablespace-uri: SYSTEM si celelalte.
Tablespace-ul SYSTEM
Necesar in toate bazele de date pentru operatiile bazei de date
Contine informatiile din dictionarul bazei de date, definitii ale procedurilor stocate si pachetelor si declansatoarele bazei de date
Contine segmentul de rollback SYSTEM
Nu ar trebui sa contina date utilizator desi este permis
Un tablespace non-SYSTEM
Permite mai multa flexibilitate in administrarea bazei de date.
Poate stoca segmente de rollback, segmente temporare, date si indecsi ale aplicatiilor
CREATE TABLESPACE app_data
DATAFILE '/DISK4/app01.dbf' SIZE 100M,
'/DISK5/app01.dbf' SIZE 100M
MINIMUM EXTENT 500K
DEFAULT STORAGE (INITIAL 500K NEXT 500K MAXEXTENTS 500 PCTINCREASE 0) ;
Se poate crea un tablespace cu urmatoarea comanda CREATE TABLESPACE:
CREATE TABLESPACE tablespace
DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]
[MINIMUM EXTENT integer[K|M]]
[DEFAULT storage_clause]
[PERMANENT|TEMPORARY]
[ONLINE|OFFLINE]
storage_clause:==
STORAGE ([INITIAL integer[K|M]]
[NEXT integer[K|M]]
[MINEXTENTS integer[K|M]]
[MAXEXTENTS ]
[PCTINCREASE integer]
)
unde
tablespace
este numele tablespace-ului de creat
DATAFILE
specifica fisierele ce vor constitui tablespace-ul
DEFAULT STORAGE
specifica parametrii impliciti de stocare pentru toate obiectele create in acel tablespace
MINIMUM EXTENT
asigura ca orice marime de extent folosita in acel tablespace este multiplu al acestei valori
ONLINE
face tablespace-ul disponibil imediat dupa creare
OFFLINE
face tablespace-ul indisponibil imediat dupa creare
PERMANENT
acel tablespace poate fi folosit pentru a stoca obiecte permanente
TEMPORARY
specifica ca tablespace-ul va fi folosit numai pentru stocarea obiectelor temporare; d.ex. segmente folosite pentru sortari implicite determinate de clauzele ORDER BY.
Limite
Numarul maxim de tablespace-uri pe baza de date este de 64K. Numarul maxim de fisiere per tablespace este de 1023.
Prin setarea optiunii MINIMUM EXTENT DBA-ul controleaza fragmentarea tablespace-ului. Aceasta optiune poate fi specificata numai pentru tablespace-uri nu si pentru stocarea obiectelor individuale.
Urmatorii parametri afecteaza alocarea de spatiu pentru segmente:
INITIAL
NEXT
MAXEXTENTS
MINEXTENTS
PCTINCREASE
Cantitatea de spatiu folosita de un segment este determinata de clauza de stocare.
Acesti parametri sint determinati la crearea unui segment.
Daca nici un parametru specific de stocare nu este specificat in comanda CREATE a segmentului - cum ar fi CREATE TABLE, CREATE INDEX, CREATE CLUSTER sau CREATE ROLLBACK SEGMENT - atunci segmentul va folosi parametrii impliciti de stocare pentru tablespace-ul in care este creat.
INITIAL defineste marimea primului extent. Dimensiunea minima a primului extent este de doua blocuri, adica 2*DB_BLOCK_SIZE. Dimensiunea implicita este de 5 blocuri.
NEXT se refera la dimensiunea celui de-al doilea extent. Dimensiunea minima a celui de-al doilea extent este de 1 bloc. Dimensiunea implicita este de 5 blocuri.
MINEXTENTS este numarul de extenturi alocate cind segmentul este creat. Valoare minima si implicita este 1.
PCTINCREASE este procentul cu care dimensiunea extenturilor creste.
Dimensiunea unui extent este calculata folosind formula:
Sizen = NEXT x (1 + PCTINCREASE/100)(n - 2)
unde: Sizen este dimensiunea celui de-al n-lea extent.
D.ex. daca NEXT este 200K si PCTINCREASE este 50, urmatorul extent va fi de 200K, al treilea de 300K, al patrulea de 450K s.a.m.d.
Valoarea minima este 0 iar cea implicita de 50. Valoarea calculata este rotunjita la urmatorul multiplu de dimensiunea blocului de date.
MAXEXTENTS determina numarul maxim de extenturi pe care la poate avea un segment.
Daca MINIMUM EXTENT este specificat pentru un tablespace, extenturile alocate pentru un segment in acest tablespace vor avea dimensiunile multipli ai valorii acestui parametru.
Sint folosite pentru operatii de sortare
Nu pot contine nici un obiect permanent
CREATE TABLESPACE sort
DATAFILE '/DISK2/sort01.dbf' SIZE 50M
MINIMUM EXTENT 1M
DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS 50 PCTINCREASE 0) TEMPORARY ;
DBA-ul are posibilitatea de a crea tablespace-uri temporare. Un tablespace temporar poate fi folosit numai pentru segmente de sortare si nu pot fi contine nici un obiect permanent.
Tablespace-urile existente pot fi modificate ca sa devina temporare cita vreme nu contin nici un obiect permanent.
ALTER TABLESPACE app_data
ADD DATAFILE
'/DISK5/app03.dbf' SIZE 200M ;
Se poate mari un tablespace in doua moduri:
Prin adaugarea de fisiere de date tablespace-ului
Prin schimbarea dimensiunii unui fisier de date
Se pot adauga fisiere de date la un tablespace pentru a mari dimensiunea spatiului disc alocat tablespace-ului prin comanda ALTER TABLESPACE ADD DATAFILE:
ALTER TABLESPACE tablespace
ADD DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]
Daca adaugati noi fisiere de date unui tablespace, specificati numele coplet al fisierelor, altfel vor fi create in directorul implicit al serverului bazei de date.
Exemplu:
ALTER TABLESPACE app_data
ADD DATAFILE
'/DISK6/app04.dbf' SIZE 200M
AUTOEXTEND ON NEXT 10M
MAXSIZE 500M
Clauza AUTOEXTEND permite sau interzice extensia automata a fisierelor de date. Cind un fisier de date este creat, urmatoarele comenzi SQL pot fi folosite pentru a specifica extinderea automata a fisierelor:
CREATE DATABASE
CREATE TABLESPACE DATAFILE
ALTER TABLESPACE ADD DATAFILE
Folositi urmatoarea comanda pentru a adauga un fisier de date cu extinderea automata permisa:
ALTER TABLESPACE tablespace
ADD DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]
Se foloseste comanda ALTER DATABASE pentru a activa sau inhiba extinderea automata a fisierelor pentru fisierele de date existente:
ALTER DATABASE [database]
DATAFILE 'filename' [, 'filename']
autoextend_clause
In loc sa se adauge spatiu la baza de date prin adaugarea de fisiere de date, DBA-ul poate schimba dimensiunea unui fisier de date. DBA-ul poate corecta erorile in estimarea necesarului de spatiu si sa elibereze spatiul nefolosit din baza de date. Comanda pentru redimensionarea manuala a unui fisier al unei baze de date:
ALTER DATABASE [database]
DATAFILE 'filename'[, 'filename']
RESIZE integer[K|M]
unde
integer este dimensiunea absoluta a fisierului rezultat.
Reducerea dimensiunii unui fisier de date este posibila numai daca nu sint stocate obiecte peste limita specificata.
Comanda urmatoare modifica parametrii de stocare impliciti ai unui tablespace.
ALTER TABLESPACE tablespace
Starea Offline
Datele unui tablespace offline nu pot fi accesate
Tablespace-ul SYSTEM si orice alt tablespace cu segmente de rollback active nu pot fi trecute in stare offline.
Exemplu:
ALTER TABLESPACE app_data OFFLINE ;
Utilizatorii pot accesa un tablespace numai daca este online. DBA-ul poate sa treaca un tablespace in starea offline pentru:
a face o portiune a baze de date inaccesibila si in acelasi timp sa permita accesul la restul bazei de date
a face tabele sau aplicatii inaccesibile in timp ce muta fisierele de date
Serverul Oracle nu permite nici unei instructiuni SQL sa refere obiecte continute in acel tablespace. Serverul Oracle executa un checkpoint pentru toate fisierele din acel tablespace inainte de a-l trece in starea offline.
Utilizatorii care incearca sa acceseze tabele sau alte obiecte din acel tablespace fie direct fie pentru verificari de integritate referentiala, primesc eroare.
Cind tablespace-ul devine offline sau redevine online, evenimentul este inregistrat in dictionarul de date si in fisierul de control. Daca tablespace-ul este offline in momentul opririi bazei de date, atunci va ramine offline si nu va fi verificat atunci cind baza de date este ulterior montata si deschisa.
Ori de cite ori baza de date este deschisa, DBA-ul poate trece in starea offline orice tablespace cu exceptia tablespace-ului SYSTEM sau a tablespace-urilor cu segmente de rollback active sau cu segmente temporare. Cind un tablespace devine offline toate fisierele de date asociate sint trecute in starea offline.
ALTER TABLESPACE tablespace
Mutarea fisierelor de date:
ALTER TABLESPACE
Tablespace-ul APP_DATA trebuie sa fie offline.
Fisierele de date tinta trebuie sa existe
Exemplu:
ALTER TABLESPACE app_data RENAME DATAFILE '/DISK4/app01.dbf' TO
'/DISK5/app01.dbf' ;
Depinzind de tipul tablespace-ului, DBA-ul poate muta fisierele de date folosind una din urmatoarele metode:
Urmatoarea comanda ALTER TABLESPACE este aplicabila numai fisierelor de date dintr-un tablespace non-SYSTEM si care nu contine segmente temporare sau segmente de rollback active:
ALTER TABLESPACE tablespace
RENAME DATAFILE 'filename'[, 'filename']
TO 'filename'[, 'filename']
Se foloseste urmatorul procedeu pentru a redenumi un fisier de date:
Se trece tablespace-ul in starea offline.
Se foloseste o comanda a sistemului de operare pentru a muta sau copia fisierele.
Se executa comanda ALTER TABLESPACE RENAME DATAFILE.
Se trece tablespace-ul in starea online.
Se foloseste o comanda a sistemului de operare pentru a sterge fisierul de date daca este necesar.
Nota
Numele fisierelor sursa trebuie sa fie aceleasi cu cele din fisierul de control.
Baza de date trebuie sa fie montata
Fisierul de date tinta trebuie sa existe
Exemplu:
ALTER DATABASE RENAME FILE
'/DISK1/system01.dbf' TO '/DISK2/system01.dbf' ;
Comanda ALTER DATABASE poate fi folosita pentru a muta orice tip de fisier de date:
ALTER DATABASE
RENAME FILE 'filename'[, 'filename']
TO 'filename'[, 'filename']
Executati urmatorii pasi pentru a muta un fisier ce nu poate fi trecut in starea offline:
Opriti baza de date.
Folositi o comanda a sistemului de operare pentru a muta fisirele.
Montati baza de date.
Executati comanda ALTER DATABASE RENAME FILE.
Deschideti baza de date.
Aceste comenzi verifica existenta fisierelor in noua locatie; ele nu creeaza nici nu muta fisiere.
Dati intotdeauna numele de fisiere complete (incluzind calea) pentru a identifica fisierele de date noi si vechi.
Exemplu:
ALTER TABLESPACE app_data READ ONLY ;
Tablespace-ul app_data este acum disponibil numai pentru operatii de citire.
Trecerea tablespace-urilor in starea read-only impiedica operatii ulterioare de scriere in fisierele de date. Utilitatea tablespace-urilor read-only consta in a asigura ca nu se fac modificari ale datelor si in eliminarea necesitatii de a se face copii de siguranta sau refaceri ale unor portiuni mari statice din baza de date. Serverul Oracle nu actualizeaza niciodata tablespace-urile read-only si prin urmare acestea se pot afla pe dispozitive de stocare read-only.
Comanda SQL:
ALTER TABLESPACE tablespace READ
Tablespace-ul trebuie sa fie in starea online.
Nu sint permise tranzactii active.
Tablespace-ul nu trebuie sa contina segmente active de rollback.
Tablespace-ul nu trebuie sa fie implicat intr-un backup online.
Inainte ca DBA-ul sa poata face un tablespace read-only, citeva conditii trebuie satisfacute. Pentru a-l trece in starea read-only este recomandat sa se porneasca instanta in mod restrictionat.
Pentru a face un tablespace read-only read-write, toate fisierele din tablespace trebuie sa fie online.
Trecerea unui tablespace in starea read-only va determina initierea unui eveniment de checkpoint pentru toate fisierele de date ale tablespace-ului.
Se trece tablespace-ul in starea read-only
Se copie fisierele lui pe un dispozitiv read-only
Se redenumesc fisierele de date incit sa indice catre noua locatie
Se pot elimina obiectele unui tablespace read-only.
Urmatoarea instructiune elimina tablespace-ul APP_DATA impreuna cu continutul sau:
DROP TABLESPACE app_data INCLUDING CONTENTS ;
Se poate inlatura un tablespace din baza de date cind tablespace-ul si continutul sau nu mai sint necesare folosind urmatoarea comanda SQL:
DROP TABLESPACE tablespace
[INCLUDING CONTENTS [CASCADE CONSTRAINTS]]
unde
tablespace
specifica numele tablespace-ului de inlaturat
INCLUDING CONTENTS
inlatura toate segmentele din tablespace
CASCADE CONSTRAINTS
inlatura restrictiile de integritate referentiala din tabelele din afara tablespace-ului ce referea chei primare sau unice din tablespace-ul eliminat
Probleme:
Un tablespace ce mai contine date nu poate fi inlaturat fara clauza INCLUDING CONTENTS.
Odata ce un tablespace a fost eliminat, datele lui nu mai fac parte din baza de date.
Cind un tablespace este eliminat, se sterg numai pointerii catre fisierele lui din fisierul de control. Fisierele bazei de date ramin si trebuie sterse explicit la nivelul sistemului de operare.
Chiar daca starea unui tablespace este comutata read-only, tablespace-ul tot poate fi eliminat odata cu segmentele continute. Instructiunea DROP actualizeaza doar dictionarul de date (care trebuie sa se gaseasca intr-un tablespace read-write) dar nu actualizeaza si fisierele care alcatuiesc tablespace-ul.
Se recomanda trecerea tablespace-ului in starea offline inainte de a fi eliminat pentru a asigura ca nici o tranzactie nu acceseaza vreun segment al tablespace-ului.
TABLESPACE_NAME
NEXT_EXTENT
MAX_EXTENTS
PCT_INCREASE
MIN_EXTLEN
STATUS
CONTENTS
Pentru a lista numele si parametrii de stocare impliciti ale tuturor tablespace-urilor din baza de date folositi urmatoarea interogare asupra view-ului DBA_TABLESPACES:
SQL> SELECT tablespace_name, initial_extent, next_extent, max_extents,
2 pct_increase, min_extents
3 FROM dba_tablespaces ;
TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTENTS
SYSTEM 10240 10240 121 50 1
USER_DATA 10240 10240 121 50 1
ROLLBACK_DATA 10240 10240 121 50 1
TEMPORARY_DATA 10240 10240 121 50 1
Puteti folosi urmatoarea interogare pentru a obtine informatii despre tablespace-uri, cum ar fi daca sint temporare sau permanente, sau despre disponibilitatea fisierelor de date:
SQL> SELECT tablespace_name, contents, status
2 FROM dba_tablespaces ;
TABLESPACE_NAME CONTENTS STATUS
SYSTEM PERMANENT ONLINE
USER_DATA PERMANENT ONLINE
ROLLBACK_DATA PERMANENT ONLINE
TEMPORARY_DATA PERMANENT ONLINE
FILE_NAME
TABLESPACE_NAME
BYTES
AUTOEXTENSIBLE
MAXBYTES
INCREMENT_BY
Urmatoarea interogare returneaza informatii despre tablespace-urile carora le apartin fisierele de date si despre setarile optiunii AUTOEXTEND:
SQL> SELECT file_name, tablespace_name, bytes
FROM dba_data_files
FILE_NAME TABLESPACE_NAME BYTES
----------
C:ORAWIN95DATABASEUSR1ORCL.ORA USER_DATA 3145728
C:ORAWIN95DATABASERBS1ORCL.ORA ROLLBACK_DATA 5242880
C:ORAWIN95DATABASETMP1ORCL.ORA TEMPORARY_DATA 2097152
C:ORAWIN95DATABASESYS1ORCL.ORA SYSTEM 10485760
Obtinerea de informatii asupra fisierelor de date si tablespace-urilor din fisierul de control
V$DATAFILE V$TABLESPACE
- TS# - TS#
- NAME - NAME
- FILE#
- RFILE#
- STATUS
- ENABLED
- BYTES
- CREATE_BYTES
Urmatoarea interogare asupra view-urilor dinamice de performanta V$DATAFILE si V$TABLESPACE afiseaza informatii despre numele si dimensiunea fisierelor de date, numele tablespace-urilor carora le apartin fisierele de date si despre disponibilitatea (starea ONLINE, OFFLINE, READ WRITE sau READ ONLY) fisierelor de date:
SELECT file#, d.name, status, enabled,
bytes, create_bytes, t.name,
FROM v$datafile d, v$tablespace t
WHERE t.ts# = d.ts#
Nota:
Coloana FILE# contine numarul absolut al fisierului de date iar coloana RFILE# numarul fisierului de date in tablespace-ul de care apartine.
Cosideratii privitoare la crearea de tablespace-uri
Folositi mai multe tablespace-uri
Specificati parametri de stocare pentru tablespace-uri
Folositi mai multe tablespace-uri
Folosind mai multe tablespace-uri obtineti mai multa flexibilitate in lucrul cu baza de date:
Separati datele utilizatorilor de datele dictionarului de date
Separati datele aplicatiilor unele de altele
Stocati fisierele de date pe tablespace-uri diferite, pe discuri diferite pentru a reduce contenciunea de I/O
Separati segmentele de rollback de segmentele de date pentru a evita ca o eroare aparuta intr-un singur loc pe disc sa provoace pierderea permanenta a datelor
Puteti trece tablespace-uri individuale offline in timp ce celelalte ramin online
Rezervati tablespace-urile conform cu destinatia lor de folosire, cum ar fi activitate cu grad inalt de actualizare, numai pentru citire sau pentru stocare de segmente temporare
Puteti face copii de siguranta pentru tablespace-uri in mod individual
Referinta
Context |
Referinta |
Parametru de initializare |
DB_FILES |
View-uri dinamice de performanta |
V$DATAFILE V$TABLESPACE |
View-uri ale dictionarului de date |
DBA_DATA_FILES DBA_TABLESPACES |
Comenzi |
CREATE TABLESPACE DATAFILE . DEFAULT STORAGE . MINIMUM EXTENT CREATE TABLESPACE DATAFILE AUTOEXTEND ALTER TABLESPACE ADD DATAFILE AUTOEXTEND ALTER DATABASE DATAFILE RESIZE ALTER TABLESPACE . DEFAULT STORAGE . MINIMUM EXTENT ALTER TABLESPACE RENAME DATAFILE . ALTER DATABASE RENAME FILE . ALTER TABLESPACE READ ONLY ALTER TABLESPACE READ WRITE ALTER TABLESPACE OFFLINE DROP TABLESPACE |
Copyright © 2024 - Toate drepturile rezervate