Arquitectura interna d'Oracle Server

Contingut: Conceptes sobre Oracle. Instàncies i processos.

Seguent


Conceptes sobre Oracle

Oracle Server = Una Base de Dades Oracle + una instància del programa servidor de BD Oracle

Una Base de Dades Oracle es pot veure des de dos punts de vista:

L’estructura física consta de :

L’estructura lògica consta de:

 

Disseny relacional de la B.D. = L’esquema d’objectes + les interrelacions existents entre els diferents objectes

 


Instàncies i processos

Instància d’Oracle = L’àrea SGA + els processos en execució

Els processos Oracle són programes que s’estàn executant en el servidor i realitzen alguna tasca concreta. En distinguim de dos tipus:

Tots els processos accedeixen a un àrea de memòria comú (buffer) anomenada System Global Area (SGA). El conjunt format per tots els processos (tant interns com d’usuari) i el bufer SGA s’anomena instància d’Oracle.

L’àrea global del sistema "System Global Area" (SGA) és una regió de memòria compartida que conté dades de control per una instància Oracle. La SGA es crea a l’engegar l’instància i es llibera quan l’aturem. Cada instància té la seva pròpia SGA.

Idealment la SGA ha de ser com més gran millor (ocupant sempre memòria física, no virtual) per minimitzar l’accés a disc. Contindrà diversos tipus d’estructures de dades, cadascuna de les quals té tamany fix predeterminat al crear l’instància. Veiem a continuació les principals.

 


Processos i estructures en memòria.

Oracle permet que diversos usuaris i aplicacions accedeixin concurrentment a una ùnica BD. Per gestionar els accessos utilitza estructures de dades en memòria i processos.

 

Manipuladors de processos o Cursors

Un Cursor és un manipulador (un identificador o punter) per la memòria associada amb un cert procés o subprocés. La majoría d’usuaris d’Oracle no s’en preocupen dels cursors ja que Oracle els manega de forma automàtica, no obstant l’interfície per els programadors ofereix als dissenyadors d’aplicacions més control sobre ells. Per exemple, el programador podrà incloure cursors per a controlar les diferents fases d’execució d’una instrucció SQL complexa

Area Global de Programa "Program Global Area" (PGA)

Ës un buffer de memòria que conté dades i informació de control per a cada procés del servidor. S’en crea un quan un procés del servidor arranca.


Organització dels Processos

En general hi ha dos tipus de processos: d’usari i del SGBD. Els primers executen codi d’un programa d’aplicació (com ara C/C++ ) o bé una de les eines d’ Oracle (com ara l’Oracle Enterprise Manager). Es comuniquen amb els processos del servidor a través d’una interfície de programes.

Oracle crea processos de servidor per manegar les peticions dels processos d’usuari. Per exemple, si l’usuari demana una taula que no hi es en la SGA, el procés de servidor asociat llegeix el bloc de dades des dels fitxers de dades i el còpia al buffer de la SGA

En una configuració de servidor dedicat cada proces de servidor manega els requeriments d’un procés d’usuari. En una configuració compartida ("multithreaded") diversos processos d’usuari poden compartir un reduït nombre de processos de servidor minimitzant el nombre total de processos en execució.

Oracle permet distribuir els diferents processos d’una instància de base de dades en diferents servidors, efectuant procés en paral.lel sempre i quan estigui instal.lada l’opció "Oracle Paralel Server". En aquest cas la comunicació entre processos es gestionada per el component Net8 (xarxa Oracle, veure tema més endavant). Poden també existir processos background addicionals anomenats dispatchers que definirem en un altre apartat.

En alguns sistemes els processos d’usuari i de servidor poden estar en màquines diferents.


Processos del sistema

Procés "Database Writer" (DBWn)

El "Database Writer" escriu el blocs que s’han modificat des de el caché de la Bd fins al fitxers de dades. Per defecte amb un únic procés d’escriptura és suficient, anomenat DBW0, peró podem configurar processos addicionals (DBW1 fins a DBW9) per millorar el rendiment de sistemes que modifiquen moltes dades. El paràmetre d’inicialització DB_WRITER_PROCESSES especifica el nombre de processos DBW.

Procés "Log Writer" (LGWR)

A mida que les transaccions s’efectúan ("commit") i el buffer queda ple, el procés LGWR escriu les dades en el fitxer "redo log" necessari per a fer recuperacions d’informació en cas de fallos.

Procés "Checkpoint" (CKPT)

A intervals de temps els buffers en la SGA que han estat modificats es buiden en els fitxers de dades per els processos DBWn; aquest esdeveniment s’anomena un "checkpoint". El procés checkpoint és el responsable d’enviar la senyal als DBWn i d’actualitzar els fitxers de control de la Bd per indicar que s’ha realitzat el més recent "checkpoint".

Procés monitor de sistema "System Monitor" (SMON)

SMON neteja segments temporals que ja no estan en ús i recupera transaccions que no han acabat degut a errors de fitxer o d’execució.

Monitor de processos "Process Monitor" (PMON)

Quan un procés d’usuari falla, PMON és responsable de netejar la caché i lliberar els recursos que el procés había agafat, així com reiniciar processos de servidor si han fallat també.

Procés arxivador "Archiver" (ARCH)

Quan els fitxers "redo log" estàn plens, l’ARCH els còpia en fitxers auxiliars. ARCH només funciona si el sistema "redo log" de la BD funciona amb l’opció ARCHIVELOG.

Recuperador de connexió "Recoverer" (RECO)

En BD distribuïdes on les dades estàn repartides en una xarxa, el RECO s’utilitza per a restaurar la connexió quan la xarxa dóna errors. A intervals regulars RECO intenta reconnectar a les BD remotesi automàticament complertar les transaccions pendents.

Processos "Dispatcher" (Dnnn)

Només existeixen en configuracions de servidor "multi-threaded". Al menys un dispatcher es crea per cada protocol de comunicació en ús (D000, . . ., Dnnn). Cada dispatcher enruta les demandes dels processos d’usuari cap els processos de servidor compartits i retorna les respostes a cada procés d’usuari.

Cues de processos "Job Queue" (SNPn)

En una configuració de BD distribuïda podem tenir fins a trenta-sis cues de processos (SNP0, ..., SNP9, SNPA, ..., SNPZ).


Seguent