Arhitectura procesului

Un proces este un „fir de control” sau un mecanism dintr-un sistem de operare ce poate executa o serie de pasi. Un proces are propria sa zona de memorie în care ruleaza.
Un server Oracle are doua tipuri generale de procese: procese utilizator si procese Oracle.

Procese Utilizator(Client)

Procesele utilizator sunt create si mentinute pentru a rula codul unor aplicatii (cum ar fi PL/SQL, Pro*C / C++) sau un instrument Oracle (cum ar fi Enterprise Manager). Procesele utilizator se ocupa si de comunicatia cu procesul server prin interfata programului.

Procese Oracle

Procesele Oracle sunt apelate de alte procese pentru a executa functii în favoarea procesului apelant.

Procese Server. Oracle creeaza procese server pentru a manipula cerintele proceselor utilizator conectate. Un proces server comunica cu procesul utilizator si interactioneaza cu Oracle pentru a rezolva cerintele din partea procesului utilizator asociat.

Oracle poate fi configurat astfel încât sa modifice numarul de procese utilizator pentru fiecare proces server. Într-o configuratie server dedicata, un proces server se ocupa de cerintele unui singur proces utilizator. O configuratie server partajata permite mai multor procese utilizator sa poarte un numar mic de procese server, minimizând numarul de procese server si maximizând utilizarea resurselor disponibile ale sistemului.

Pe unele sisteme, procesele utilizator si server sunt separate, în timp ce pe altele ele sunt combinate într-un singur proces. Daca un sistem foloseste serverul partajat sau daca procesele user si server ruleaza pe statii diferite, atunci procesele utilizator si server trebuie sa fie separate. Sistemele client / server separa procesele utilizator si server si le ruleaza pe statii diferite.

Procese Background: Oracle creeaza un set de procese background pentru fiecare instanta. Procesele background consolideaza functii care altfel ar fi fost preluate de mai multe programe Oracle rulând pentru fiecare proces utilizator. Ele executa operatii de intrare/iesire asincrone si monitorizeaza alte procese Oracle pentru a furniza un paralelism crescut pentru performante si fiabilitate mai bune.

DatabaseWriter (DBWn) scrie blocurile modificate din zona cache a buffer-ului bazei de date în fisierele de date. Cu toate ca un proces database writer este suficient pentru majoritatea sistemelor se pot configura procese aditionale pentru a mari performanta la scriere care modifica date foarte des. Parametrul de initializare DB_WRITER_PROCESSES specifica numarul de procese DBWn.

Log Writer (LGWR) scrie intrari redo log pe disc. Intrarile redo log sunt generate în buffer-ul redo log al SGA, iar LGWR scrie intrarile redo log secven?tal într-un jurnal redo online. Daca baza de date poseda un jurnal redo multiplexat, atunci LGWR scrie intrarile redo log într-un grup de fisiere redo log online.

Checkpoint (CKPT) La intervale specificate de timp toate bufferele bazei de date din SGA modificate sunt scrise catre fisierele de date de DBWn. Acest eveniment se numeste checkpoint. Procesul checkpoint e responsabil cu semnalizarea unui checkpoint catre DBWn si actualizarea tuturor fisierelor de date si de control ale bazei de date indicând cele mai recente checkpoint-uri.

System Monitor (SMON) realizeaza refacerea bazei de date când o instanta  nefinalizata este initializata din nou. Procesele SMON ale unei instante pot realiza refacerea altor instante care au picat.

Process Monitor (PMON) realizeaza refacerea procesului când pica un proces utilizator. PMON este responsabil de stergerea memoriei cache si eliberarea resurselor pe care le utiliza procesul.

Arhivatorul (ARCn) copiaza fisierele redo log într-un depozit arhivat dupa ce a aparut o schimbare de jurnal. Cu toate ca un singur proces ARCn (ARC0) este suficient majoritatii sistemelor, se pot specifica pâna la zece procese ARCn folosind parametrul dinamic de initializare LOG_ARCHIVE_MAX_PROCESSES.

Recuperatorul (RECO) este folsit pentru rezolvarea tranzactiilor distribuite ce asteapta din cauza unei caderi de sistem sau retea într-o baza de date distribuita. La intervale de timp, recuperatorul local încearca sa se conecteze la bazele de date si sa realizeze automat validarea sau anularea portiunii locale a oricarei tranzactii distribuite ce asteapta.

Procesele Job Queue (Jnnn) sunt folosite pentru procesarea "in coada". Aceste procese sunt manipulate dinamic ceea ce permite utilizatorilor sa foloseasca mai multe procese de acest gen daca au nevoie.

Expeditoarele (Dnnn) sunt procese background optionale prezente doar atunci când este folosita o configuratie de server partajat. Cel putin un proces expeditor este creat pentru fiecare protocol de comunicare aflat în uz (D000, …, Dnnn). Fiecare proces expeditor este responsabil de root-area cererilor de la procesele user conectate catre procesele server partajate disponibile si returnarea raspunsului catre procesele utilizator corespunzatoare.

Lock Manager Server (LMS) acest proces este folosit pentru blocare inter-instanta.

Queue Monitor (QMNn) acestea sunt procese background optionale ce monitorizeaza cozile de mesaje. Se pot configura pâna la zece procese de acest tip.