oracle pl sql error oracle pl sql error oracle pl sql error
 

L' architettura di Oracle

 

Un server Oracle è rappresentato fondamentalmente da due strutture, il database e l'istanza. Con il termine database (d'ora in poi DB) si indicano i file fisici in cui sono memorizzati i dati, mentre per istanza si intende l'insieme delle aree di memoria e dei processi di background necessari ad accedere ai dati, ovvero al DB.

L'architettura del server è complessa: ogni area di memoria nell'istanza contiene dati che non sono contenuti in altre e i processi di background hanno compiti ben precisi, tutti diversi fra loro.

Ogni DB deve obbligatoriamente fare riferimento almeno ad un'istanza, è anche possibile avere più di un'istanza per database, ma nella nostra guida faremo sempre riferimento a database a singola istanza.

Ciascun DB consiste di strutture logiche di memorizzazione, per immagazzinare e gestire i dati, (tabelle, indici, etc.) e di strutture fisiche di memorizzazione che contengono le strutture logiche.

I servizi offerti dalle strutture logiche del server sono indipendenti dalle strutture fisiche che le contengono. Questo perché le strutture logiche possano essere progettate nello stesso modo indipendentemente dall'hardware e dal sistema operativo impiegati.

Quindi sia che abbiamo un'installazione di server Oracle su sistema operativo Microsoft, Linux o Solaris non troveremmo alcuna differenza nella progettazione delle strutture logiche di memorizzazione.

Strutture logiche di memorizzazione

Tablespace Un Tablespace è una divisione logica di un database. Ogni databse ha almeno un tablespace il cui nome è SYSTEM. E' possibile utilizzare differenti tablespace per suddividere utenti e applicazioni per facilatare la gestione e migliorare l'efficenza stessa del database. Per esempio si può creare un tablespace per ciascun utente che andrà a memorizzare propri dati nel database oppure creare un tablespaces per gli Utenti (USERS), uno per gli indici (INDEX) e uno per i segmenti di rollback.

Block

Un blocco dati è la più piccola unità di memorizzazione in Oracle, pertanto indivisibile, e corrisponde ad un numero di byte scelto dal DBA durante la creazione del database. È sempre multiplo della capacità del blocco usato dal sistema operativo su cui si opera. Per approfondire possiamo consultare la documentazione alla voce DB_BLOCK_SIZE.

Extent

È composto di un numero specifico di blocchi contigui di dati (block).

Segment

È formato da un insieme di extent. Ne sono un esempio le tabelle o gli indici. Ogni qualvolta si crea un segment Oracle alloca al suo interno almeno un extent che, a sua volta, contiene almeno un block. Tutto questo è sempre deciso dal DBA. Un segment può essere associato esclusivamente ad un tablespace.

Figura 1. Relazioni tra tablespace, segment, extent e block

 

Strutture fisiche di memorizzazione Datafile

Ogni tablespace è costituito da uno o più falie fisici presenti sul disco (o dischi nel caso di soluzioni RAID) che vengono chiamati DataFiles. La separazioni dei datafile e dei realtivi tablespace è importante per pianificare e mettere a punto in che modo il databse affronterà le richieste di I/O. Sbagliare questi rapporti significa un dastico calo delle perfomce generali. Ogni database Oracle deve avere uno o più data file. Ciascun data file è associato esclusivamente ad un tablespace, ma un tablespace può essere formato anche da più di un data file.

Redo log file

Registrano tutte le modifiche occorse ai dati. Ogni DB possiede almeno due file di redo log, perché Oracle scrive in questi file in maniera circolare: quando un file di redo log è pieno allora Oracle scrive in quello successivo, quando l'ultimo file di redo log è pieno allora Oracle ricomincia dal primo, assicurandosi però di memorizzare le informazioni nei data file prima di sovrascriverle.

Se una qualsiasi anomalia non permette la scrittura delle modifiche occorse al database nei rispettivi data file, allora possiamo tranquillamente ottenere tali modifiche dai redo log file. Le modifiche ai dati, pertanto, non sono mai perse.

I redo log file rappresentano la cronologia delle modifiche ai dati e sono di vitale importanza per l'integrità del DB. Oracle permette di avere più di una copia per ciascun redo log file: questa importante caratteristica è denominata multiplexing dei redo log file.

Control file

Ogni database ha almeno un control file che contiene informazioni circa la struttura fisica del DB, ovvero il nome, la data e l'ora di creazione e il percorso completo di ciascun data file e redo log file. È di vitale importanza e si consiglia di configurarne più di una copia: anche in questo caso parleremo di multiplexing di control file.

Figura 2. Relazioni fra le strutture fisiche e logiche di un DB

 

 
 

Aree di memoria in Oracle

Le aree di memoria di un server Oracle sono usate per contenere i dati, le informazioni del dizionario dei dati, i comandi SQL, il codice PL/SQL e tanto altro ancora. Tali aree sono allocate nell'istanza Oracle ogni qualvolta questa è fatta partire e deallocata, vale a dire rilasciata, quando la stessa è "terminata".

Le due maggiori strutture di memoria sono la System Global Area (SGA) e la Program Global Area (PGA), quest'ultima non sarà trattata in questa guida.

Figura 3. Componenti della SGA e della PGA

 

System Global Area

È un'area di memoria condivisa, il che significa che tutti gli utenti del DB ne condividono le informazioni. È composta a sua volta di più aree di memoria ed ha uno spazio allocato all'avvio di un'istanza definito dal parametro SGA_MAX_SIZE (consultare la documentazione per maggiori dettagli).

L'SGA e i processi di background formano l'istanza Oracle. Come si può vedere in figura 3 quest'area è formata dal Database Buffer Cache, dal Redo Log Buffer, dallo Shared Pool, dal Large Pool e dal Java Pool. Le ultime due sono opzionali mentre le altre sono obbligatorie per ciascuna istanza.

I processi di background di Oracle

Un processo è un meccanismo usato dal sistema operativo per eseguire alcune attività. Oracle Function inizializza diversi processi di background per ogni istanza. Nelle prossime lezioni vedremo come avvianre una e come teminarla a piacimento. Ogni processo di background è responsabile nel portare a termine specifici compiti.

Non tutti i processi sono presenti in un'istanza Oracle: la maggior parte di essi sono obbligatori, la presenza di altri dipende dal tipo di architettura Oracle desiderata. Sono processi di background il Database Writer (DBWn), il Log Writer (LGWR), il Checkpoint (CKPT), il System Monitor (SMON), il Process Monitor (PMON), l'Archiver (ARCn), il Recoverer (RECO), il Dispatcher (Dnnn) e lo Shared Server (Snnn).

 
 
Oracle news Oracle guide
     
  29-11-2006 Guida Oracle 10g, corso Oracle, corso Oracle select
     
  29-11-2006 Guida Oracle 10g, corso Oracle, corso Oracle select
     
  29-11-2006 Create Functions
Functions Oracle Functions
Delete Delete
Between Between
Check Check
Count Count
Datatypes Datatypes
Delete Oracle Delete Statement
Distinct Distinct
Exists Exists
Functions Functions
Grant revoke Grant Revoke
Group by Oracle Group by
Having Having
Oracle Function in Oracle Function in
Indexes Indexes
Insert Insert
Intersect Intersect
Isnull Is null
Joins Joins
oracle pl sql error Oracle declare vars
 
Oracle Functions PLSQL  l  Guide  l  Services  l  Oracle Collaborations Suite  l  Products  l  Contact
Oracle errors ora