Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Arhitectura SGBDR Oracle

calculatoare



+ Font mai mare | - Font mai mic



Arhitectura SGBDR Oracle

Arhitectura Oracle descrisa in aceasta sectiune este o arhitectura generica, independenta de platformele pe care aceasta poate rula. Cu toate ca intre arhitecturile situate pe diferite platforme pot aparea diferente, fundamentele sunt in principiu aceleasi. Deoarece sistemul de operare Windows NT este foarte raspandit, in continuare ne vom referi la arhitectura precum si la caracteristicile de instalare ale unei baze de date pe aceasta platforma.



SGBDR Oracle consta din doua elemente fundamentale: baza de date si instanta. Baza de date este o colectie de date si are la randul ei un nivel fizic si un nivel logic.

Nivelul fizic consta dintr-un set de fisiere localizate pe hard-disk. Aceste fisiere sunt niste fisiere binare ce pot fi accesate numai prin utilizarea software-ului nucleului Oracle.

Din punct de vedere logic, baza de date este impartita in conturi ale utilizatorilor. Fiecare dintre aceste conturi este identificat printr-un nume si o parola unica pentru baza de date respectiva. Un cont de utilizator este proprietarul unor tabele sau al altor obiecte (tabele, vederi, indecsi, secvente, sinonime) ale bazei de date. Obiectele schemei si relatiile dinte ele formeaza designul relational al unei baze de date.)

In momentul cand un utilizator doreste sa acceseze datele continute in baza de date, nu poate face acest lucru decat introducand un nume de utilizator si o parola valida, adica practic este necesara conectarea sa la baza de date cu ajutorul unui cont. Conectarea la baza de date este necesara in momentul cand se doreste utilizarea diferitelor instrumente Oracle. In general, la lansarea in executie a unui instrument Oracle, va aparea o fereastra ce va solicita numele si parola utilizatorului. Numele utilizatorului si parola de conectare la baza de date este diferita de numele si parola utilizatorului sistemului de operare sub care ruleaza Oracle.

In doua conturi diferite de utilizator poate exista acelasi nume de tabel (sau orice alt tabel al bazei de date). Desi tabelele au acelasi nume, datorita faptului ca se gasesc in conturi diferite acestea sunt diferite prin structura sau continut. Un tabel nu poate avea decat un singur proprietar. Prin urmare, un tabel (sau orice alt obiect al bazei de date) este identificat prin nume si prin contul de utilizator care este proprietarul tabelului. Daca se doreste ca si alt cont de utilizator sa foloseasca acel tabel, proprietarul tabelului trebuie sa acorde anumite drepturi.

De multe ori, aceeasi baza de date (acelasi set de fisiere fizice) este folosita pentru a pastra in conturi separate diferite versiuni ale tabelelor. In acest sens pot exista versiuni ale tabelelor pentru dezvoltatorii de aplicatii, pentru cei care testeaza cum functioneaza sistemul sau anumite aplicatii, etc. Se pot utiliza doua conturi de utilizator pentru a pastra datele necesare a doua aplicatii complect separate. Cu alte cuvinte, pot exista doua baze de date logice implementate in aceeasi baza de date fizica, utilizand doua conturi de utilizator.

Nota Nu trebuie confundata notiunea de cont al unui utilizator, cu utilizatorii efectivi ai bazei de date. Practic pot exista mai multi utilizatori care sa se conecteze la un anumit moment la baza de date folosind acelasi cont de utilizator. Deoarece in terminologia folosita de catre Oracle un cont de utilizator este denumit utilizator vom folosi si noi in continuare aceasta denumire, semnificatia acestui termen fiind determinata de contextul in care va fi folosit.

Corespondenta dintre structurile nivelului logic si modul lor de stocare la nivel fizic se realizeaza prin intermediul structurilor logice de stocare. Scopul principal al unei structuri logice de stocare este de a defini modul in care va fi utilizat spatiul fizic de stocare a bazei de date. Practic, Oracle dicteaza modul in care este utilizat spatiul fizic al bazei de date.

Instanta este metoda folosita de catre sistem pentru a accesa baza de date si consta dintr-un set de procese de fundal necesare pentru sustinerea bazei de date si un segment de memorie a sistemului alocat bazei de date.

In continuare ne vom referi pe scurt la modul in care se creeaza o baza de date Oracle la instalarea lui Oracle Server precum si la componentele nivelului fizic al bazei de date, adica fisierele propriu-zise ale bazei de date si fisierele aditionale. Apoi vom trece succint in revista conceptul de instanta a bazei de date, legatura dintre o instanta si o baza de date, pornirea si oprirea unei baze de date. Deoarece crearea unei baze de date presupune cunoasterea mai multor concepte Oracle, ultimul paragraf din acest subcapitol va contine modul efectiv de creare in mod manual a unei baze de date. Pentru cei interesati, informatii suplimentare pot fi gasite in [2] [Austin98], [23] [Oracle8:Database Administration]. Structurile logice de stocare, utilizatorii si nivelul logic al bazei de date vor fi prezentate mai tarziu in capitole separate. O lista a principalelor comenzi care se pot efectua asupra bazei de date si a utilitarelor ce pot fi folosite pentru executarea acestora se gaseste in Anexa 2.

3.1 Crearea unei baze de date

La instalarea lui Oracle8 Server pe o platforma Windows NT se poate crea si o baza de date. In acest sens exista urmatoarele optiuni

Typical - se creeaza o baza de date exemplu, care poate fi folosita ca model la crearea unor noi baze de date. Acesta este optiunea cea mai convenabila si mai des folosita.

Custom - se lanseaza in executie instrumentul Oracle Database Assistant ce permite personalizarea parametrilor de configurare pentru baza de date ce urmeaza a fi creata.

None - nu se creeaza nici o baza de date

Baza de date poate fi creata nu numai in momentul instalarii ci si dupa aceea (acest lucru este neaparat necesar daca se instaleaza Oracle Server fara a se crea o baza de date, folosind optiunea "None"). Acest lucru se poate realiza cu ajutorul comenzii CREATE DATABASE sau cu ajutorul instrumentului Oracle Database Assistant, instrument specific numai platformei Windows NT. In cazul folosirii comenzii CREATE DATABASE se mai spune ca baza de date a fost creata manual.

Baza de date creata prin optiunea Typical are o configuratie predefinita referitoare la numele utilizatorilor, identificatorii de sistem, spatiile tabel, fisierele de date, parametrii de initializare, fisierele de control, fisierele jurnal pentru recuperare, segmentele de revenire, etc. Despre toate aceste notiuni vom vorbi in paragrafele urmatoare, mentionand caracteristicile pe care le are baza de date instalata prin optiunea Typical, pe care o vom numi in continuare baza de date exemplu. Daca baza de date exemplu este instalata pentru prima oara pe un calculator, identificatorul de sistem SID (System IDentifier) precum si numele bazei de date este ORCL. Pentru fiecare instalare aditionala creata pe acelasi calculator, identificatorul SID si numele bazei de date devine ORC0, ORC1, etc.

Utilitarul Oracle Database Assistant permite utilizatorului crearea, modificarea sau stergerea unei baze de date prin intermediul unei interfete grafice usor de utilizat. La randul sau, si acest utilitar ofera cele doua optiuni (Typical si Custom) pentru crearea unei baze de date. Fata de comanda CREATE DATABASE, Oracle Database Assistant are atat avantajul simplitatii interfetei grafice, cat si faptul ca odata cu baza de date, prin intermediul acestui utilitar se pot crea si componente ale acesteia precum spatii tabel si segmente de rollback.. Evident insa ca Oracle Database Assistant reprezinta doar o interfata grafica folosita pentru generarea unor comenzi SQL (CREATE DATABASE, CREATE TABLESPACE, CREATE ROLLBACK SEGMENT, etc.). De fapt, acest utilitar ofera atat posibilitatea crearii imediate a bazei de date cat si posibilitatea crearii doar a unui fisier batch si a fisierelor SQL necesare si care pot fi folosite mai tarziu pentru crearea bazei de date.

Deoarece crearea unei baze de date presupune cunoasterea componentelor nivelului fizic al bazei de date, conceptul de instanta a bazei de date, legatura dintre o instanta si o baza de date, pornirea si oprirea unei baze de date, in continuare ne vom referi la toate aceste concepte, urmand ca ultimul paragraf din acest subcapitol sa contina modul efectiv de creare manuala a unei baze de date (vezi sectiunea 3.7).

3.2 Nivelul fizic al bazei de date

Asa cum am mai mentionat la inceputul acestui subcapitol, la nivel fizic baza de date Oracle este alcatuita din mai multe fisiere. Aceste fisiere se pot imparti in doua categorii:

fisierele propriu-zise ale bazei de date - contin datele utilizatorilor;

fisierele aditionale - contin informatii necesare pentru ca baza de date sa functioneze corespunzator.

Fisierele propriu-zise ale bazei de date Oracle:

Fisierele de date

Toate datele din baza de date Oracle sunt stocate in fisierele de date. Deci acestea contin toate obiectele bazei de date (tabele, indecsi, secvente, segmente de rollback, segmente temporare, dictionarul de date, etc.). Aceste fisiere sunt de obicei de dimensiune mare, in functie de informatiile continute in baza de date. Fisierele de date Oracle exista ca fisiere ale sistemului de operare si pot fi manipulate la fel ca orice alte fisiere ale acestuia. Datele stocate in aceste fisiere sunt intr-un format binar astfel incat ele nu pot fi citite decat de SGBDR-ul Oracle. O baza de date Oracle are cel putin un fisier de date (adecvat pentru o baza de date mica sau o baza de date de testare), dar in mod uzual exista mai multe fisiere. Mai multe informatii despre modul de stocare a datelor sunt prezentate in capitolul urmator.

Baza de date exemplu, instalata cu optiunea Typical, contine patru fisiere de date localizate in directorul $ORACLE_HOMEDATABASE. Aceste fisiere sunt: sys1SID.ora, usr1SID.ora, tmp1SID.ora, rbs1SID.ora, unde SID este un sir de caractere ce reprezinta identificatorul de sistem.

Fisierele de control

Orice baza de date trebuie sa aiba cel putin un fisier de control. Fisierul de control reprezinta punctul central al bazei de date. El contine numele bazei de date, data si ora la care a fost creata, informatii vitale pentru pornirea bazei de date, precum localizarea si starea fisierelor de date si a fisierelor redo log. Majoritatea parametrilor continuti in fisierul de control iau valori in timpul crearii bazei de date si sunt relativ stabili, in sensul ca nu se schimba de la o zi la alta. Fisierul de control este binar si nu poate fi citit sau editat manual. Avand in vedere ca fara un fisier de control corect baza de date nu poate fi pornita, acest fisier trebuie protejat. Oracle asigura un mecanism de stocare a mai multor fisiere de control, astfel incat majoritatea bazelor de date Oracle opereaza cu fisiere de control multiple.

Baza de date exemplu, instalata cu optiunea Typical, contine un singur fisier de control localizat in directorul $ORACLE_HOMEDATABASE. Acest fisier are denumirea ctl1SID.ora.

Fisierele jurnal pentru recuperare (redo log files)

Orice baza de date contine cel putin doua fisiere jurnal pentru recuperare. Acestea sunt fisiere care pastreaza informatii folosite in cazul unei defectiuni de functionare a sistemului. Ele contin un jurnal al tuturor schimbarilor facute asupra bazei de date. Aceste informatii sunt utilizate in cazul unei erori in functionarea sistemului in scopul de a efectua din nou schimbarile care au fost facute bazei de date si apoi permanentizate (commited) dar care in cazul unei defectiuni de functionare este posibil sa nu fi fost facute si fisierelor de date corespunzatoare. Fisierele redo log trebuie protejate impotriva defectiunilor hardware; daca informatiile continute in acestea sunt pierdute, nu mai este posibila recuperarea sistemului.

Fisierele jurnal pentru recuperare se mai numesc si fisiere jurnal pentru recuperare online (online redo log files). In momentul in care o instanta Oracle este pornita se utilizeaza intotdeauna doua sau mai multe fisiere redo log. Modificarile facute sunt inregistrate pe rand in aceste fisiere. Astfel, in momentul in care unul din fisiere este plin, modificarile se inregistreaza in fisierul urmator, s.a.m.d. Cand toate fisierele sunt pline, primul fisier este rescris, ciclul continuand.

Baza de date exemplu, instalata cu optiunea Typical, contine patru fisiere jurnal pentru recuperare online ce au dimensiunea de 1 MB fiecare si sunt localizate in directorul $ORACLE_HOMEDATABASE. Aceste fisiere se numesc log1SID.ora, log2SID.ora, log3SID.ora, log4SID.ora.

Fisiere aditionale:

Fisierul de initializare a parametrilor

Fisierul de initializare a parametrilor reprezinta principalul mijloc de configurare a SGBDR-ului. El este pur si simplu o colectie de valori ale unor parametri, care fiecare controleaza sau modifica un anumit aspect din modul de functionare al unei bazei de date si instante. Fisierul de initializare este un fisier ASCII care poate fi editat de catre administratorul bazei de date pentru optimizarea performantelor acesteia. Numele atribuit in mod implicit fisierului de initializare a parametrilor este initSID.ora, unde SID este identificatorul de sistem pentru baza de date pe care o controleaza (de exemplu, pentru SID test, numele fisierului de initializare va fi inittest.ora). Fisierul de initializare este citit inainte de pornirea bazei de date; schimbarile facute parametrilor in acest fisier nu sunt luate in considerare pana cand instanta nu este inchisa si re-pornita. Totusi, unii dintre parametrii de initializare au caracter dinamic, adica pot fi modificati in timp ce o instanta este pornita. Efectul schimbarii acestor parametrii va fi imediat, nefiind necesara inchiderea si re-pornirea instantei. Schimbarea parametrilor in mod dinamic se poate face cu ajutorul comenzilor ALTER SESSION, ALTER SYSTEM sau ALTER SYSTEM DEFERRED.

Tabelul urmator contine o descriere succinta a parametrilor cei mai importanti. Despre unii dintre parametrii vom mai discuta si in sectiunile urmatoare.

Nume Parametru

Descriere

BACKGROUND_DUMP_DEST

Locatia unde vor fi plasate fisierele istoric create de procesele de fundal (inclusiv fisierul alert.log)

COMPATIBLE

Versiunea cu care este compatibila aceasta instanta. Acest lucru previne utilizarea unor facilitati ale bazei de date specifice unor versiuni mai mari decat valoarea acestui parametru.

CONTROL_FILES

Numele fisierelor de control. Daca acest parametru nu se schimba, fisierele de control din alte baze de date pot fi rescrise de noua instanta, facand celelalte instante inutilizabile.

DB_BLOCK_BUFFERS

Numarul de blocuri din SGA. Valoarea initiala si minima in acelasi timp este 50.

DB_BLOCK_SIZE

Marimea in bytes a blocurilor bazei de date. Acest parametru nu poate fi modificat dupa ce baza de date a fost creata.

DB_FILES

Numarul maxim de fisiere ale bazei de date ce pot fi deschise simultan.

DB_NAME

Identificatorul bazei de date. Acest identificator este optional, dar daca se foloseste trebuie sa fie identic cu numele bazei de date folosit in comanda CREATE DATABASE.

LOG_ARCHIVE_DEST

Locatia fisierelor redo log arhivate.

LOG_ARCHIVE_START

Activeaza sau dezactiveaza arhivarea automata. Daca este setat pe true, procesul ARCH este pornit automat la pornirea instantei.

LOG_BUFFER

Numarul de bytes alocati pentru fisierele redo log in memoria SGA.

MAX_DUMP_FILE_SIZE

Dimensiunea maxima a fisierelor istoric, specificata ca numarul de blocuri ale sistemului de operare.

PROCESSES

Numarul maxim de procese ale sistemului de operare ce se pot conecta la aceasta instanta.

ROLLBACK_SEGMENTS

Lista segmentelor de revenire care vor fi activate (online) automat la deschiderea bazei de date.

SHARED_POOL_SIZE

Marimea in bytes a unei anumite zone de memorie din SGA. Valoarea implicita este 3500000.

SQL_TRACE

Activeaza sau dezactiveaza crearea unor fisiere istoric suplimentare.

USER_DUMP_DEST

Locatia fisierelor istoric suplimentare create la cererea utilizatorului.

Pentru baza de date exemplu, fisierul de initializare se gasesc in directorul $ORACLE_HOMEDATABASE.

Parametrii care nu sunt specificati in fisierul de initializare iau in mod automat valori implicite. Pentru a putea afla valoarea unui parametru se poate folosi utilitarul Server Manager versiunea 3.0. Acest utilitar se lanseaza in executie din prompterul MS-DOS:

C:> SVRMGR30

Comanda care afiseaza valoarea unui parametru este urmatoarea:

SVRMGR> SHOW PARAMETER nume_parametru

Unde nume_parametru este numele parametrului a carui valoare se doreste a se afla. De exemplu:

SVRMGR> SHOW PARAMETER DB_FILES

Fisiere jurnal arhivate pentru recuperare (archived redo log files)

Fisierele jurnal pentru recuperare arhivate (denumite si offline redo log files) sunt copii ale fisierelor redo log care au fost umplute cu informatii referitoare la modificarile inregistrate. Aceasta facilitate este optionala. Pentru a putea activa aceasta facilitate se pot folosi doua metode: prin setarea parametrului LOG_ARCHIVE_START din fisierul de initializare cu valoarea TRUE sau in mod dinamic prin folosirea comenzii ALTER SYSTEM cu clauza ARCHIVE LOG START dupa ce instanta a fost pornita. Cand arhivarea automata este activata, procesul ARCH (cel care arhiveaza) copiaza fisierele redo log completate in directorul specificat de parametrul de initializare LOG_ARCHIVE_DEST. Numele fisierelor redo log arhivate este dat de parametrul de initializare LOG_ARCHIVE_FORMAT.

Daca exista un set complet de fisiere redo log arhivate aferente modificarilor facute unei baze de date, precum si baza de date initiala, in cazul in care fisierele de date sunt corupte se pot reaplica schimbarile facute bazei de date astfel incat sa se recupereze datele pierdute.

Fisiere istoric (trace files)

Bazele de date Oracle au cel putin un fisier in care sunt scrise toate mesajele, erorile si evenimentele importante. Acesta poarta numele SIDalrt.log, unde SID este identificatorul de sistem pentru baza de date. Acest fisier (numit si ALERT file) este primul care trebuie cercetat in cazul cand se investigheaza o defectiune a bazei de date. El contine un istoric al mesajelor privind defectiunile importante ale bazei de date, pornirea si oprirea acesteia cat si alte evenimente importante. Daca fisierul ALERT nu exista, acesta se creeaza automat in momentul pornirii bazei de date.

Pe langa acest fisier istoric mai exista si alte fisiere create automat de catre procesele de fundal. Acestea poarta numele sidPROC.trc, unde sid este identificatorul de sistem pentru baza de date iar PROC este numele procesului de fundal (DBWR, LGWR, SMON, PMON, etc.). Toate aceste fisiere istoric create in mod automat se afla localizate in directorul specificat de parametrul de initializare BACKGROUND_DUMP_DEST. Pentru baza de date exemplu fisierele istoric se gasesc in directorul $ORACLE_HOMERDBMS80TRACE.

Pe langa fisierele istoric create in mod obligatoriu, la cererea utilizatorului se pot crea fisiere istoric suplimentare. Aceasta facilitate este activata prin setarea parametrului de initializare SQL_TRACE. Acest parametru poate fi modificat si in mod dinamic prin folosirea comenzii ALTER SESSION. Numele acestor fisiere este oraSECV.trc, unde SECV este o secventa de numere unica generata automat de catre sistem. Locatia unde vor fi create aceste fisierele istoric este data de alt parametru de initializare: USER_DUMP_DEST. Se recomanda ca locatia continuta de acest parametru sa fie diferita de locatia continuta de parametrul BACKGROUND_DUMP_DEST.

3.3 Instanta unei baze de date

O baza de date Oracle depoziteaza datele in fisiere fizice si permite accesul controlat al utilizatorului la aceste fisiere printr-un set de procese ale sistemului de operare. Aceste procese sunt activate in timpul instantei de pornire. Din cauza faptului ca acestea opereaza fara interactiunea directa a utilizatorului, ele sunt cunoscute sub denumirea de procese de fundal. Pentru a manipula eficient datele si pentru a activa comunicarea intre diferite procese, Oracle foloseste memoria partajata, cunoscuta si sub numele de Shared Global Area (SGA). Aceste procese de fundal, impreuna cu segmentul memoriei partajate (SGA), constituie o instanta Oracle.

Fiecare instanta Oracle utilizeaza mai multe procese de fundal, dar in mod implicit orice instanta contine 5 procese de fundal. Pentru a intelege, la modul general, ce reprezinta un proces de fundal, vom enunta in continuare functiile celor 5 procese de fundal implicite:

DBWR (Database Writer) - scrie in baza de date modificarile efectuate asupra datelor;

LGWR (Log Writer) - inregistreaza schimbarile facute in memoria partajata;

SMON (System Monitor) - verifica in primul rand consistenta bazei de date si in functie de rezultatele acestui proces initiaza procesul de recuperare al datelor in momentul deschiderii bazei de date;

PMON (Prosses Monitor) - deruleaza tranzactiile neefectuate si elibereaza resursele in cazul in care un proces esueaza;

CKPT (Checkpoint) - este responsabil de modificarile privind starea bazei de date atunci cand schimbarile facute in memoria partajata sunt inregistrate permanent in baza de date.

In afara de aceste procese de fundal mai exista si altele cum ar fi: ARCH (Archiver Prosses), RECO (Recoverer Prosses), SNPn (Snapshot Prosses), LCK (Lock) etc.

3.4 Legatura dintre o baza de date si o instanta

Legatura dintre o baza de date Oracle si o instanta consta in faptul ca o baza de date nu este accesibila utilizatorilor pana cand nu este deschisa de o instanta. Cu alte cuvinte, o instanta reprezinta calea de a accesa o baza de date Oracle. Fiecare instanta are propriul sau set de procese de fundal si propria memorie partajata (SGA). Operatia de pornire a unei instante implica pornirea proceselor de fundal si alocarea zonei de memorie partajata. O instanta poate deschide si utiliza la un anumit moment numai o singura baza de date. Baza de date Oracle este identificata prin numele ei. Desi este posibil sa se foloseasca un nume aferent bazei de date si alt nume aferent instantei, in cazul in care corespondenta dintre instante si baze de date este de unu-la-unu (cum se intampla in general) este recomandabil ca pentru o mai buna administrare sa se foloseasca acelasi nume.

3.5 Pornirea unei baze de date Oracle

Utilizatorii nu au acces la datele continute in baza de date pana cand aceasta nu este pornita. Pornirea unei baze de date presupune parcurgerea a trei etape succesive. In functie de anumite operatii care se executa asupra bazei de date, procesul de pornire se poate opri dupa oricare din aceste etape. Baza de date nu se poate porni decat daca exista drepturile necesare. Prin urmare, aceste operatii trebuiesc facute de catre administratorul bazei de date. Pentru baza de date exemplu, numai contul de utilizator INTERNAL, cu parola ORACLE, poate porni baza de date. In continuare vom enumera etapele necesare pentru a porni o baza de date.

Pornirea unei instante

Pornirea unei instante este sinonima cu pornirea unei baze de date. Pe parcursul acestei etape Oracle citeste fisierul de initializare a parametrilor, aloca memoria partajata (SGA), porneste procesele de fundal si deschide fisierele istoric.

In momentul crearii unei baze de date sau in momentul cand se recreeaza fisierele de control se parcurge numai etapa de pornire a unei instante, fara a se trece mai departe la etapa de montare a bazei de date.

Montarea bazei de date

Montarea unei baze de date presupune asocierea unei baze de date cu o instanta pornita anterior, localizarea si deschiderea fisierelor de control specificate in fisierul de initializare a parametrilor precum si obtinerea informatiilor referitoare la numele si starea fisierelor de date si a fisierelor jurnal pentru recuperare.

Daca se doreste redenumirea fisierelor de date, activarea sau dezactivarea unor optiuni de arhivare sau daca se doreste recuperarea in totalitate a bazei de date, atunci procesul se va opri la etapa de montare a bazei de date, fara a se trece mai departe la etapa de deschidere efectiva a bazei de date.

Deschiderea bazei de date

Deschiderea bazei de date este procesul prin care baza de date este pusa la dispozitia utilizatorilor pentru operatii obisnuite (baza de date este deschisa in mod normal). In aceasta etapa se realizeaza deschiderea efectiva a fisierelor de date si a fisierelor jurnal pentru recuperare si se verifica consistenta bazei de date.

3.6 Oprirea unei baze de date Oracle

Oprirea unei baze de date Oracle presupune parcurgerea urmatoarelor trei etape:

Inchiderea bazei de date

Inchiderea bazei de date determina scrierea tuturor datelor bazei de date in fisierele de date. Fisierele de control raman deschise deoarece baza de date este inca montata.

Demontarea bazei de date

Demontarea bazei de date presupune disocierea bazei de date de instanta. In aceasta etapa Oracle inchide fisierele de control.

Inchiderea instantei

Inchiderea instantei presupune inchiderea tuturor proceselor de fundal, eliberarea memoriei partajate, precum si inchiderea fisierelor istoric.

Oprirea unei baze de date se poate realiza in patru moduri:

a)      Normal - este modul implicit de inchidere a unei baze de date. In timpul inchiderii normale, Oracle nu mai accepta conectarea unor noi utilizatori si asteapta ca toti utilizatorii curenti sa se deconecteze, apoi inchide si demonteaza baza de date, dupa care opreste instanta. Urmatoarea pornire a bazei de date nu va necesita o operatie de recuperare a instantei.

b)      Tranzactional - este similar cu modul de inchidere Normal, cu diferenta ca deconectarea unui client se face automat dupa ce tranzactia curenta a acestuia cu baza de date a luat sfarsit.

c)      Imediat - comenzile SQL curente nu se proceseaza si nu asteapta ca utilizatorii curenti sa se deconecteze, apoi inchide si demonteaza baza de date, dupa care opreste instanta. Urmatoarea pornire a bazei de date nu va necesita o operatie de recuperare a instantei.

d)      Abort - comenzile SQL curente nu se proceseaza, nu asteapta ca utilizatorii curenti sa se deconecteze, iar tranzactiile ce nu sunt permanentizate (commited) nu se deruleaza. Instanta este oprita fara a se inchide fisierele, fapt care va determina o operatie de recuperare a instantei in momentul urmatoarei porniri a bazei de date.

3.7 Crearea manuala a unei baze de date

Comanda CREATE DATABASE este o comanda ce ofera o mai mare flexibilitate in comparatie cu celelalte metode de creare a bazei de date deoarece ofera posibilitatea de a putea specifica anumiti parametri ce nu pot fi specificati altfel. Punctul slab este insa faptul ca exista o mai mare posibilitate de a aparea erori de sintaxa. Crearea manuala a unei baze de date este in general mai complicata decat prin celelalte metode, prin urmare trebuie facuta dupa ce s-a acumulat o anumita experienta.

Crearea manuala a unei baze de date nu presupune numai executarea comenzii CREATE DATABASE, ci si efectuarea anumitor pasi premergatori. Prin urmare, pentru a crea o baza de date in mod manual trebuiesc efectuate urmatoarele operatii:

Setarea anumitor variabile ale sistemului de operare.

Setarea acestor variabile depinde bineinteles de sistemul de operare pe care va fi instalata baza de date.

Pentru sistemul de operare este Windows NT, vor trebui efectuati urmatorii pasi:

Setarea variabilei ORACLE_SID, variabila ce va fi utilizata de catre SVRMGR30 (Server Manager versiunea 3.0).

Parametrii precum ORACLE_HOME sau ORACLE_SID sunt variabile definite in registrii sistemului de operare (se mai numesc si variabile de mediu) si au urmatoarea semnificatie:

Ø      ORACLE_HOME - directorul unde software-ul Oracle va fi instalat

Ø      ORACLE_SID - specifica numele instantei, nume ce trebuie sa fie unic pentru instantele ce ruleaza pe aceeasi masina.

Aceste variabile se pot edita cu ajutorul utilitarului regedit.exe, si se gasesc in directorul HKEY_LOCAL_MACHINESOFTWAREORACLE. In consecinta, pentru a se putea crea o noua baza de date, parametrul ORACLE_SID va trebui setat cu ajutorul comenzii:

C:> set ORACLE_SID=test

Crearea unui serviciu si a unui fisier de parole utilizand de exemplu urmatoarea comanda din utilitarul ORADIM80:

C:>ORADIM80 -NEW -SID test -INTPWD baza -STARTMODE auto

-PFILE c:orantdatabaseinittest.ora

Comanda de mai sus creeaza un nou serviciu numit test, care este pornit automat cand porneste Windows NT. Parola pentru contul intern este baza, iar parametrul PFILE ofera calea completa a fisierului initSID.ora, in cazul nostru inittest.ora. In urma executarii acestei comenzi nu va aparea nici un mesaj referitor la modul de incheiere al comenzii, adica daca aceasta a fost executata cu succes sau nu. Pentru a verifica daca acest serviciu a fost pornit, se poate verifica daca in fereastra Services din Windows NT Control Panel exista serviciul OracleServiceTEST.

Pregatirea fisierului de initializare a parametrilor

Pentru a pregati fisierul de initializare a parametrilor este recomandat sa se copieze mai intai fisierul initSID.ora (in cazul bazei de date exemplu acesta va fi initORCL.ora) cu un alt nume. In cazul exemplului nostru, acesta se va numi inittest.ora. Parametrii din acest fisier pot fi apoi modificati sau pot ramane neschimbati insa trebuie neaparat schimbati urmatorii parametrii:

DB_NAME - identificatorul bazei de date. Acest identificator este necesar in momentul crearii unei noi baze de date. El nu trebuie sa fie identic cu identificatorul ORACLE_SID, dar trebuie sa fie identic cu numele bazei de date utilizat in comanda CREATE DATABASE. In exemplul nostru parametrul DB_NAME este denumit test si este identic cu identificatorul ORACLE_SID. In general cei doi parametrii sunt identici.

CONTROL_FILES - specifica fisierele de control. Este recomandabil sa se specifice cel putin doua fisiere de control situate pe discuri diferite.

DB_BLOCK_SIZE - determina marimea blocului bazei de date. Aceasta dimensiune nu poate fi modificata dupa ce baza de date a fost creata.

Pornirea instantei

Pentru a porni instanta unei baze de date este necesara mai intai conectarea la baza de date cu privilegiul SYSDBA. Conectarea la baza de date se face din utilitarul SVRMGR30 prin comanda:

SVRMGR> CONNECT INTERNAL/parola

INTERNAL nu este un utilizator special ci este de fapt un sinonim al utilizatorului SYS cu privilegiul SYSDBA. (Mai multe detalii despre utilizatorii si privilegiile acestora se gasesc in capitolul . Parola utilizatorului INTERNAL este cea folosita la crearea serviciului de la pasul 1 cu ajutorul utilitarului ORDIM80 (in exemplul nostru parola este baza)

Dupa ce s-a realizat conectarea la baza de date trebuie pornita instanta, dar fara a se face si montarea bazei de date, prin urmatoarea comanda:

SVRMGR> STARTUP NOMOUNT PFILE=inittest.ora

Daca fisierul de initializare al parametrilor nu se afla in directorul curent, atunci trebuie specificata calea acestuia in parametrul PFILE. De exemplu:

SVRMGR>STARTUP NOMOUNT PFILE=C:ORANTDATABASEinittest.ora

Crearea bazei de date

Pentru a crea o baza de date se foloseste comanda CREATE DATABASE ce are sintaxa urmatoare:

CREATE DATABASE [nume_baza_de_date]

[CONTROLFILE REUSE]

[LOGFILE[GROUP intreg]specificatie_grup_fisiere_redo_log

[GROUP intreg]specificatie_grup_fisiere_redo_log]]

[MAXLOGFILES intreg]

[MAXLOGMEMBERS intreg]

[MAXLOGHISTORY intreg]

[DATAFILE specificatie_fisier_de_date [,specificatie_fisier_de_date]]

[MAXDATAFILES intreg]

[MAXINSTANCES intreg]

[ARCHIVELOG|NOARCHIVELOG]

[CHARACTER SET set_de_caractere]

[NATIONAL CHARACTER SET set_de_caractere]

unde:

nume_baza_de_date specifica numele bazei de date ce va fi creata. Daca acest nume este omis, va fi utilizat parametrul DB_NAME din fisierul de initializare;

CONTROLFILE REUSE specifica faptul ca fisierele de control existente identificate de parametrul CONTROL_FILE din fisierul de initializare pot fi reutilizate;

LOGFILE GROUP specifica numele fisierelor redo log ce vor fi folosite precum si grupul de care acestea apartin. Daca se omite acest parametru, Oracle va crea doua grupuri de fisiere redo log, al caror nume si localizare vor depinde de sistemul de operare pe care este instalata baza de date. Un grup de fisiere redo log consta din copii identice ce se recomanda a fi stocate pe discuri diferite;

MAXLOGFILES specifica numarul maxim de grupuri de fisiere redo log care pot fi create;

MAXLOGMEMBERS specifica numarul maxim de fisiere redo log care pot fi membre ale unui grup;

MAXLOGHISTORY specifica numarul maxim de fisiere redo log arhivate pentru recuperari automate. Acest parametru este folositor numai daca se doreste utilizarea fisierelor redo log arhivate;

DATAFILE specifica numele fisierelor de date ce vor fi folosite initial. Aceste fisiere de date vor face parte din spatiul tabel SYSTEM creat odata cu baza de date (vezi sectiunea 4.1). Daca aceasta optiune este omisa, Oracle creeaza in mod implicit un fisier de date.

MAXDATAFILES specifica numarul maxim de fisiere de date ce pot fi create pentru aceasta baza de date;

MAXINSTANCES specifica numarul maxim de instante simultane ce pot monta si deschide baza de date;

ARCHIVELOG|NOARCHIVELOG stabileste daca fisierele redo log trebuie arhivate inainte de a fi reutilizate, respectiv daca fisierele redo log pot fi reutilizate fara a mai arhiva continutul lor. Daca se omite acest parametru modul implicit (default) este NOARCHIVELOG;

CHARACTER SET specifica setul de caractere pe care il foloseste baza de date pentru a depozita date. Acest parametru nu poate fi schimbat dupa ce baza de date este creata. Setul de caractere si valoarea initiala a acestui parametru sunt dependente de sistemul de operare;

NATIONAL CHARACTER SET specifica setul national de caractere pe care il foloseste baza de date pentru a depozita date de tipul NCHAR, NCLOB, NVARCHAR2. Daca nu este specificat, setul national de caractere va avea aceeasi valoare ca setul de caractere.

Specificatia unui grup de fisiere redo log, notata mai sus prin specificatie_grup_fisiere_redo_log are urmatoarea sintaxa:

[SIZE intreg [K|M] ]

[REUSE]

Specificatia unui fisier de date, notata mai sus prin specificatie_fisier_de_date are urmatoarea sintaxa:

nume_fisier

SIZE intreg [K|M]]

REUSE]

AUTOEXTEND ]

unde SIZE specifica marimea fisierului, REUSE determina refolosirea unui fisier de date deja existent, iar optiunea AUTOEXTEND arata daca fisierul poate creste automat (ON) sau nu (OFF) si, daca este cazul, marimea cresterii fisierului (NEXT) si marimea maxima a fisierului (MAXSIZE). O explicatie mai detaliata a acestor parametrii se gaseste in sectiunea

Pentru exemplificare vom crea o baza de date numita test:

CREATE DATABASE test

CONTROLFILE REUSE

LOGFILE GROUP 1

('c:ORANTDATABASElogc1test.ora',

'd:DBlogd1test.ora') SIZE 1024K REUSE

GROUP 2

('c:ORANTDATABASElogc2test.ora',

'd:DBlogd2test.ora') SIZE 1024K REUSE

MAXLOGFILES 5

MAXLOGMEMBERS 5

MAXLOGHISTORY 1

DATAFILE

'c:ORANTDATABASEsys1test.ora'

SIZE 50M REUSE AUTOEXTEND ON

NEXT 10M MAXSIZE 200M

MAXDATAFILES 100

MAXINSTANCES 1

CHARACTER SET WE8ISO8859P1;

Aceasta comanda creeaza o baza de date numita test. Baza de date contine doua grupuri de fisiere redo log. Fisierul logc1test.ora este identic cu fisierul logd1test.ora iar fisierul logc2test.ora este identic cu fisierul logd2test.ora cu mentiunea ca acestea se afla pe discuri diferite. Aceasta reprezinta o protectie in cazul in care unul din fisierele redo log este pierdut din cauza unor erori. Pentru o mai buna organizare, este de preferat ca numele fisierului redo log sa contina si discul pe care este stocat (in exemplul de mai sus avem logc1test.ora respectiv logd1test.ora). Baza de date are un singur fisier de date (sys1test.ora) care are o marime de 50MB. Fisierul de date poate sa se autoextinda automat cu cate 10MB pana la dimensiunea de 200 MB. Setul de caractere WE8ISO8859P1 reprezinta de fapt setul de caractere ISO 8859-1 West European. Oracle suporta 180 de seturi de caractere.

Pentru a putea evita pe cat posibil erorile de sintaxa care pot aparea in momentul utilizarii comenzii CREATE DATABASE se poate modifica script-ul de creare a bazei de date oferit de Oracle. Numele si locatia acestui script variaza in functie de sistemul de operare. In Windows 95/98/NT script-ul se numeste BUILD_DB.SQL iar pentru Unix script-ul se numeste CRDB.SQL. Folosind aceasta metoda, script-ul mentionat se copiaza, apoi se efectueaza schimbarile necesare pentru a crea o baza de date cu o configuratie proprie, iar in final se ruleaza script-ul respectiv.

In momentul executarii comenzii CREATE DATABASE, Oracle efectueaza urmatoarele operatii:

Creeaza fisierele de date specificate. Daca au fost specificate fisiere de date existente, datele acestora sunt sterse;

Creeaza si initializeaza fisierele de control specificate;

Creeaza si initializeaza fisierele redo log specificate;

Creeaza spatiul tabel SYSTEM si segmentul de revenire SYSTEM (vezi sectiunile 4.1 si 4.2.3);

Creeaza dictionarul de date (vezi sectiunea 6.11);

Creeaza utilizatorii SYS si SYSTEM (vezi sectiunea 5.4);

Specifica setul de caractere pentru baza de date. Acest set de caractere nu mai poate fi modificat dupa ce baza de date a fost creata;

Monteaza si deschide baza de date in mod exclusiv, adica numai instanta respectiva poate accesa baza de date in acel moment. Daca se doreste ca baza de date sa fie accesata de mai multe instante, atunci aceasta trebuie oprita si apoi repornita;

Rularea script-ului de generare a dictionarului de date si respectiv de instalare a obiectelor folosite de PL/SQL

Pentru ca baza de date sa poata functiona corect trebuie generat dictionarul de date (vezi 6.11.). Acest lucru se realizeaza prin rularea scriptului CATALOG.SQL:

SVRMGR>@%RDBMS80%ADMINCATALOG.SQL

Un alt script care trebuie rulat este script-ul CATPROC.SQL care instaleaza obiectele folosite de PL/SQL:

SVRMGR>@%RDBMS80%ADMINCATPROC.SQL



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1838
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved