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 Unix/Linux ma e', mutatis mutandis, valido anche per le altre versioni [NdA verificato personalmente a partire dalla versione 5.1 fino alla 23c]. 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).
Le funzionalita' offerte dall'RDBMS Oracle sono veramente molte. Nel seguito riportiamo un elenco approssimativo delle principali funzionalita' raggruppate per finalita':
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. In generale Oracle privilegia la preallocazione degli spazi per costruire strutture di accesso ai dati ottimizzate.
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.
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.
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).
La miglior soluzione, dal punto di vista tecnico, per il Disaster Recovery (DR) con un database Oracle e' l'utilizzo di Data Guard.
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).
La miglior soluzione, dal punto di vista tecnico, per l'alta affidabilita' e la continuita' operativa (HA: High Availabilty, BC: Business Continuity) con un database Oracle e' l'utilizzo di Oracle RAC.
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:
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 un'istanza Oracle il comando da utilizzare e':
$ sqlplus / as sysdba SQL> startupE' anche necessario attivare il listener, che consente l'accesso dai client in rete, con:
$ lsnrctl startLa gestione di una base dati Oracle richiede un DBA competente ma il tool di amministrazione Enterprise Manager la rende piu' semplice:
Come tutti i tool grafici e' piu' semplice da utilizzare che da spiegare...
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.
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
Data: 14 Febbraio 2009
Versione: 1.0.9 -
14 Febbraio 2023
Autore:
mail [AT] meo.bogliolo.name