giovedì 12 maggio 2016

ORACLE 11 XE - PARTE 2 - INSIDE THE BOX


Seconda parte dedicata alla introduzione al database Oracle. Vedremo insieme in cosa consiste fisicamente e logicamente un database famigliarizzando con i termini tecnici del mondo Oracle.



Un passo indietro

Un Database è un insieme di dati, il compito di un Database è quello di memorizzare e rendere disponibili questi dati. Un Database Server è ciò che lega il Database ai suoi utilizzatori, favorendo l'accesso concorrente ai dati con prestazioni efficienti, prevenire accessi non autorizzati e gestire procedure di backup e ripristino.

Ogni Database è formato da strutture logiche e fisiche. 
Le strutture logiche sono ciò che viene comunemente chiamato tabella, vista, record, dato, utenti, privilegi, schemi e relazioni. La rappresentazione in bit e byte di queste entità forma le strutture fisiche. La separazione fra strutture logiche e strutture fisiche permette la modifica di uno dei due elementi senza influenzare l'altro.

Un Database Server può essere a sua volta composto da più processi ognuno delegato a svolgere una macro operazione sulle strutture logiche o fisiche. 

Questa introduzione vale a prescindere da quale prodotto Database stiamo utilizzando. Nel caso di Oracle, si potrebbe approfondire molti dettagli che stanno dietro alla gestione dei dati in memoria ma per semplicità ci limiteremo ad una introduzione abbastanza basilare.

Per meglio comprendere la gerarchia dei file nel mondo Oracle e delle strutture logiche/fisiche possiamo fare riferimento direttamente al seguente diagramma Oracle:

Strutture Fisiche

La struttura fisica di un Database Oracle si divide in più file che contengono tutti i dati, questi file sono chiamati Datafile.

Le caratteristiche fondamentali dei Datafile sono:
  • Può essere associato ad un unico Database.
  • Può incrementare le sue dimensioni.
  • Un insieme di questi file forma un Tablespace.
I dati contenuti nei Datafile vengono letti e caricati nella memoria cache del Database Server, la modifica dei dati in memoria non comporta immediatamente la scrittura nei Datafile in modo tale da ridurre gli accessi al disco e aumentare le prestazioni.

Le strutture fisiche fondamentali sono:

  • Control File
    • Ogni Database Oracle possiede un Control File che contiene dettagli riguardo la struttura fisica del database (nome, percorsi dei file, data di creazione database ...). Il Database Server può clonare un Control File e mantenerne simultaneamente più copie per evitare eventuali problemi di accesso o lettura contemporanea. 
  • Redo Log File (Log delle transazioni)
    • Ogni Database Oracle possiede un set di due o più Redo Log File che registrano ogni cambiamento sui dati del Database in maniera sequenziale e ordinata. In ogni momento possono essere utilizzate le informazioni contenute in questo file per tornare ad una situazione precedente. 
  • Archive Log File (Opzionale)
    • Se abilitata la funzione di achiviazione, il Database Server si occupa di archiviare i vari Redo Log File.
  • Parameter File
    • Contiene una lista di parametri di configurazione dell'Istanza.
  • Alert and Trace Log File
    • Contiene una lista di eventi e allarmi che possono essere tracciati da una specifica istruzione SQL. Il contenuto di questi file viene utilizzato per scopi di debug o analisi prestazionale.

Strutture Logiche

Come abbiamo detto, Oracle memorizza i dati logicamente e fisicamente attraverso rispettivamente i Tablespace e i Datafile; Abbiamo inoltre specificato che un insieme di più Datafile (almeno uno) forma un Tablesplace. Facciamo riferimento ad una immagine ufficiale per capire meglio:

Generalmente esistono tre tipi di Tablespace differenti:
  • Permanenti
    • Per la memorizzazione dei dati utenti normalmente associate ad uno o più file fisici. In Oracle Database XE tutti i dati sono contenuti di default nel Tablespace USERS.
  • Temporanei
    • Gestiti autonomamente da Oracle Database XE, sono i Tablespace più efficienti e migliorano le prestazioni delle operazioni concorrenti sul Database.
  • Ripristino
    • Gestiti autonomamente da Oracle Database XE, contengono la struttura del dato originale ogni volta che viene modificato in modo tale da poter tornare alla situazione precedente.
Accedendo al pannello di controllo web di Oracle ed accedendo alla sezione Storage possiamo vedere quali Tablespace sono presenti.



In aggiunta a quanto detto riguardo le tipologie di Tablespace, vediamo singolarmente ogni Tablespace presente al momento della installazione:
  • SYSTEM
    • Tablespace Permanente che contiene la struttura del Database sottoforma di Tabelle interrogabili. Viene automaticamente creato all'installazione di Oracle e legato all'utente SYS, vedremo in seguito cosa significa il concetto di "legato ad un utente".
  • SYSAUX
    • Tablespace Permanente ausiliario a SYSTEM, tipicamente utiizzato da prodotti Oracle.
  • USERS
    • Tablespace Permanente a disposizione delle nostre applicazioni. Al momento dell'installazione di Oracle è vuoto. Di default, tutti gli utenti possono accedervi.
  • TEMP
    • Tablespace Temporaneo utilizzato durante il processo di istruzioni SQL da parte del motore database.
  • UNDO
    • Tablespace di Ripristino.

Schema

Uno Schema è un insieme di oggetti di un Database (Tabelle, Viste, Indici, Funzioni...). Uno Schema è di proprietà di un Utente ma può essere condiviso con altri Utenti. 

Qui nasce una grande fondamentale differenza di nomenclatura fra Oracle Database e Microsoft SQL Server, in cui il concetto di Schema era utilizzato per riferirsi ad un namespace.

Non c'è alcuna relazione diretta fra uno Schema e un Tablespace: un oggetto in uno Schema può essere contenuto in Tablespace differenti e un Tablespace può contenere oggetti di Schema differenti.

1 commento:

  1. Complimenti per la guida...molto esaustiva..spero di leggere presto le prossime puntate :)

    RispondiElimina