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
|