Oracle RDBMS

Oracle e' il DBMS relazionale commerciale piu' diffuso al mondo. I suoi principali punti di forza sono:

Sull'RDBMS Oracle sono basati altri ambienti distribuiti dalla Oracle Corporation. Tra questi l'ambiente J2EE Oracle Application Server (OAS) e l'ERP Oracle Enterprise Business Suite (EBS). La Oracle Corp. ha inoltre acquisito un grande numero di aziende e di prodotti informatici di straordinaria importanza; solo per citarne alcuni: SUN, Java, MySQL, BEA WLS, PeopleSoft, ...

Questo documento e' stato preparato facendo riferimento alla versione Oracle RDBMS 11g R2 su Linux ma e', mutatis mutandis, valido anche per le altre versioni [NdA verificato personalmente a partire dalla 5.1 fino alla 12c]. Lo scopo di questa pagina e' quella di introdurre le funzionalita' e caratteristiche di Oracle, maggiori dettagli sulla sua storia si possono trovare su questo documento o sul ricchissimo sito ufficiale Oracle (quest'ultimo ovviamente in inglese).

Funzionalita'

Le funzionalita' offerte dall'RDBMS Oracle sono veramente molte. Nel seguito riportiamo un elenco approssimativo delle principali funzionalita' raggruppate per finalita':

Ogni singolo elemento elencato richiederebbe in realta' un'ampia descrizione...

Architettura

L'architettura dell'RDBMS Oracle presenta una certa complessita': vi sono una serie di processi di sistema che si occupano ciascuno di un compito specifico (eg. la scrittura dei dati, il controllo dei processi, l'esecuzione di job, l'archiviazione, ...). Ad ogni connessione utente viene inoltre lanciato un processo dedicato che esegue l'SQL richiesto dall'utente/applicazione. Con il passare delle versioni di Oracle il numero di processi di sistema (background e shadow) e' sempre cresciuto. Con la versione 11g R2 tale numero supera la ventina. Nella versione 12c e' possibile ospitare piu' database (PDB: Pluggable Database) all'interno dello stesso container... ma il numero di processi di background e' comunque cresciuto (40 processi). I vari processi condividono un'area di memoria, implementata come Shared Memory, denominata SGA. La SGA (System Global Area) mantiene i buffer dei dati, l'elenco dei lock, la cache delle strutture della base dati, ... Per l'accesso in Client-Server viene utilizzato il processo listener che crea una processo dedicato per ogni Client. Se il numero di Client e' molto elevato e' possibile sfruttare la tecnica dell'MTS (Multi Threaded Server) che sfrutta un pool di processi per le diverse sessioni.
Oracle utilizza una serie di file:

Con l'eccezione del file di parametri, le strutture di Oracle possono essere definite sul file system oppure possono essere appoggiate direttamente sui device fisici (raw devices) [NdE fino alla 12c]. Con l'ASM Oracle puo' gestire direttamente lo storage fisico senza necessita' di utilizzo di Volume Manager e/o di File Systems. La struttura interna dei datafile e' molto complessa poiche' sono molteplici le strutture di memorizzazione che Oracle utilizza.

Architettura Oracle RDBMS

La gestione delle transazioni e' molto efficiente ed affidabile con l'RDBMS Oracle. Per implementarla Oracle utilizza diverse tecniche.
Quando deve essere effettuata una modifica su un dato Oracle salva il contenuto del blocco che lo contiene su un segmento di rollback e quindi effettua la modifica sul dato. In tal modo e' sempre possibile effettuare un rollback della transazione in corso. Quando la transazione viene confermata il segmento di rollback viene segnato come libero ed il dato e' definitivamente confermato. I segmenti di rollback sono mantenuti sui datafile e la loro gestione, via via con le diverse versioni di Oracle, e' divenuta sempre piu' sofisticata ed automatizzata.
Per migliorare le prestazioni Oracle utilizza una cache in memoria ed effettua in modo periodico (o quando richiesto dal commit di una transazione) l'allineamento sui dischi.
Ogni attivita' di scrittura sui dischi e' riportata sui file di log in modo sincrono al commit delle transazioni. I file di log vengono utilizzati in modo circolare, quindi sono periodicamente ricoperti. Per mantenere la "storia" delle transazioni avvenute su un database e' possibile attivare il log archiving. Con il log archiving attivo quando un file di redo log e' stato completato viene salvato sulla directory definita dal DBA con una numerazione progressiva. Il log archiving permette il point in time recovery ed il backup a caldo.
Oracle non implementa il mirroring dei data file. L'implementazione a livello di RDBMS sarebbe infatti inefficiente in termini prestazionali. Tuttavia Oracle mantiene in mirroring le strutture di limitate dimensioni piu' importanti per il suo funzionamento come i Control File ed i Redo Log.

Configurazioni complesse

Oracle puo' essere utilizzato in configurazioni complesse che permettono la realizzazione di architetture in alta affidabilita' con la gestione della Business Continuity, adatte a soluzioni di Disaster Recovery, ... Nel seguito vengono dati alcuni cenni sull'utilizzo dei cluster, dei database distribuiti, della replicazione, del RAC e del Data Guard.

L'RDBMS Oracle e' facilmente integrato in un failover cluster. Molti cluster hanno gia' script o agenti ideati per Oracle, su altri integrare Oracle e' comunque molto semplice. Oracle stessa fornisce i componenti di integrazione su alcuni prodotti di cluster (eg MS-Windows) oppure ha collaborato con i fornitori per l'ottimizzione dei loro prodotti (eg. Veritas/Symantec). Fondamentalmente il database ed il listener sono visti come servizi in grado di migrare tra i nodi che costituiscono il cluster.

Oracle supporta, in modo completo e senza necessita' di configurazioni specifiche, il protocollo di Two-Phase Commit che consente le transazioni distribuite. Con trigger, database link, sinonimi, ... e' possibile costruire una base dati distruibuita in modo trasparente alle applicazioni. Oggetti quali gli snapshot consentono di realizzare in modo semplice la replicazione di tabelle.
Per i casi piu' complessi l'opzione Advanced Replication permette di impostare replicazioni sincrone/asincrone con multimaster e la risoluzione automatica dei conflitti.

L'opzione Oracle RAC consente la condivisione, da parte di istanze differenti ed attive su macchine distinte, di pool di dischi comuni. In tal modo sistemi differenti utilizzano le stesse risorse sui dischi. In caso di fault di un sistema, il secondo sistema puo' immediatamente sostituirsi ad esso. Si tratta quindi di una configurazione in cluster Active-Active. Nelle versioni precedenti l'opzione era denominata Oracle Parallel Server. Con la versione Oracle 11g R2 e' stata introdotto il RAC one Node: simile ad un ambiente di cluster failover introduce alcune possibilita' come l'Omotion (passaggio trasparente della base dati tra i nodi).

Architettura Oracle RAC

E' possibile mantenere un'istanza Oracle in stand-by. In tale modalita' l'istanza non e' attiva ma viene aggiornata continuamente (passando i file di redo log) rispetto all'istanza di produzione. Tale funzionalita' e' presente dalla versione 7.3 di Oracle (col nome di Stand-by Instance). Nelle versioni attuali la configurazione e' chiamata Oracle Data Guard e dispone, nelle versioni piu' recenti, di un'opzione che consente di aprire in lettura il database secondario mantenendo un costante allineamento rispetto al database primario (Active Data Gard).

Architettura Oracle Data Guard

Utilizzo

L'utilizzo di Oracle e' molto semplice, basta conoscere l'SQL:

$ sqlplus scott/tiger
SQL> create table dummy (c1 varchar2(20));
SQL> select * from dummy;

In caso di errore viene restituito un opportuno codice ed e' possibile consultare un help molto completo direttamente dall'SQL.

Oltre che da linea comando e' possibile utilizzare ambienti grafici Client-Server come Oracle Developer e molteplici strumenti accessibili via web:

Oracle Express Edition

Amministrazione

L'installazione di Oracle non e' banale, ma seguendo la documentazione risulta abbastanza veloce. Innanzi tutto occorre scaricare il software dal sito Oracle. Scaricato il software, impostati i prerequisiti di sistema operativo, per effettuare l'installazione dare il comando: ./runInstaller & In meno di 30 minuti l'installazione e' conclusa ed e' possibile accedere alla base dati.

Per attivare Oracle il comando da utilizzare e':

$ sqlplus / as sysdba
SQL> startup
E' anche necessario attivare il listener con
$ lsnrctl start
La gestione di una base dati Oracle richiede un DBA competente ma il tool di amministrazione Enterprise Manager la rende piu' semplice:
Oracle Enterprise Manager

Come tutti i tool grafici e' piu' semplice da utilizzare che da spiegare...

Licensing

Oracle e' l'RDBMS tecnologicamente piu' avanzato e completo con un ottimo supporto, il prezzo e' corrispondente. Gli aspetti relativi al licensing di Oracle sono quindi molto importanti. E' importante utilizzare la licenza corretta per il proprio ambiente per disporre di tutte le funzionalita' necessarie e massimizzare i propri investimenti.

Vi sono diverse modalita' di licensing. Le piu' comunemente utilizzate sono le Processor e Named User dal significato piuttosto evidente...

L'RDBMS Oracle e' disponibile in diverse Edition con funzionalita' e costi differenti.

Maggiori dettagli si trovano sul listino prezzi.

Varie ed eventuali...

L'evoluzione delle funzionalita' dell'RDBMS Oracle nel tempo e' stata notevole. Maggiori dettagli tecnici sulle diverse versioni di Oracle sono riportate in questo documento mentre l'evoluzione nel tempo viene descritta in modo assai piu' romanzato in questo documento.

L'RDBMS Oracle e' il prodotto di bandiera della Oracle Corporation ma la societa' negli anni ha acquisito parecchie altre societa' allargando di molto le sue attivita'.

Principali acquisizioni (area RDBMS):

Altrettanto significative sono state le acquisizioni sul middleware (eg. BEA WebLogic) e sugli ambienti ERP e CMS (eg. PeopleSoft, Siebel, JD Edwards, Hyperion, ...).


Titolo: Oracle RDBMS: un'introduzione
Livello: Base (1/5)
Data: 14 Febbraio 2009
Versione: 1.0.7 - 1 Luglio 2014
Autore: mail [AT] meo.bogliolo.name