Novita' presenti in Oracle 10g (R2)

La nuova versione Oracle 10g (R2) presenta una serie di nuove funzionalita'. Questo documento presenta brevemente, ed in modo assolutamente poco serio, i principali cambiamenti: appunto le 10 cose che vi faranno impazzire della versione 10!
Alcune funzionalita' introdotte nella 10g sono veramente importanti ed erano attese da tanto tempo... ma altre... Queste cose mi fanno impazzire! Insomma nel bene o nel male c'e' da divertirsi in ogni caso! Ma per sapere cosa e' cambiato veramente bisogna leggere i prossimi 10 punti.

1o Enterprise Manager

Il nuovo Enterprise Manager(EM): finalmente un tool di gestione valido e completo. Consente il controllo di Oracle completo ed e' adatto a tutti: dal sistemista fai-da-te al DBA esperto! Tra i molti elementi importanti la sua completezza (e non solo le cose piu' semplici o comuni) e l'interfaccia web. Da un qualsiasi client, senza necessita' di installare componenti, e' possibile accedere all'interfaccia di amministrazione. Naturalmente e' cambiata l'architettura ed ha un peso non indifferente sui sistemi piu' modesti ma i vantaggi sono notevoli. Molti tool di terze parti diventano superflui ed anche i miei vecchi script (che ho scritto dalla 5.1 ed che aggiorno ad ogni release) rischiano di rimanere definitivamente archiviati.
Per utilizzare l'EM e' necessario farlo partire con emctl start dbconsole (dopo aver settato l'ORACLE_SID) e quindi utilizzare da browser l'URL http://host.domain:1158/em.

2o sqlplus / as sysdba

Questa ci voleva proprio! Ora non sono piu' necessari gli apici!
Serviva un cambio di versione per usare l'argv[]? Pare proprio di si!
Naturalmente non c'e' solo questo nell'sqlplus distribuito con la 10. Altra funzionalita' utile e' la gestione del prompt... Insomma anche i programmi piu' consolidati possono migliorare.

3o Cestino

La nuova fuzionalita' si chiama Flashback Table ed e' un cestino della spazzatura da cui e' possibile riprendere nuovamente tabelle, indici, oggetti vari cancellati per errore. Gia' la versione 9i aveva introdotto la possibilita' di eseguire Flashback Query per recuperare dati modificati dalle transazioni, ora la possibilita' e' estesta ai comandi di DDL.

E' una comodita' (anche se i DBA, dopo una ventina d'anni... si erano oramai abituati ad una certa attenzione con i comandi di drop) ma e' necessario avere qualche avvertenza.
La cancellazione di una tabella non la cancella realmente ma la rinomina (il nuovo nome e' una simpatica stringa di caratteri come BIN$04aloinuhjtATATTAR...). Quindi script di migrazione, controllo dei DB, ... realizzati con le precedenti versioni di Oracle debbono essere ricontrollati per evitare errori. Con lo statement FLASHBACK TABLE si rinomina la tabella al nome originale ma non gli eventuali indici associati... vanno rinominati manualmente. Per la cancellazione anche fisica e' stato introdotto il comando PURGE.
Se vi fa impazzire... PURGE DBA_RECYCLEBIN; ALTER SYSTEM SET recyclebin=off scope=spfile;

4o Regular Expressions

Questa e' una cosa nuova, per Oracle intendo, perche' in molti linguaggi di programmazione e dialetti SQL era diffusa da tempo. Le espressioni regolari sono assai utili! Con l'introduzione di alcuni nuovi operatori (eg. REGEXP_LIKE) e' ora possibile confrontare il contenuto di stringhe con espressioni regolari in SQL senza necessita' di utilizzare un linguaggio procedurale esterno. L'implementazione di Oracle e' molto completa, ad esempio con:

select *
from vehicle
where plate REGEXP_LIKE '^[[:alpha]]{2}([[:alnum]])*$';

la condizione di esempio ricerca le targhe che iniziano con due lettere e quindi sono seguite da un numero a piacere di lettere e numeri.

5o RMAN

RMAN e' diventato con il passare delle versioni sempre piu' completo e le ultime evoluzioni (R2) puo' essere utilizzato anche nella gestione delle librerie. A questo punto non sono piu' necessari SW specifici per effettuare i backup e si utilizzano comandi Oracle per ogni tipo di attivita'. Inoltre la gestione da EM consente di rendere semplici la maggior parte delle configurazioni. RMAN viene anche utilizzato dal DBCA (tool di creazione di un'istanza) per la definizione iniziale.

6o PL/SQL

Anche per il PL/SQL c'e' qualche novita'.
La compilazione condizionale consente di utilizzare costrutti adatti al debug ed alla profilazione e mantenere, in modo efficiente, lo stesso codice, anche in ambiente di produzione. Il blocco seguente sara' attivo a fronte di una compilazione lanciata con ALTER PROCEDURE ... COMPILE plsql_ccflags ='debug_mode:true' ...

$IF $$debug_mode $THEN
  dbms_output.put_line('Here I am!');
$END

L'utilizzatissimo package dbms_output e' stato esteso ed ora puo' generare un file di dimensione qualsiasi (quasi) e con linee non piu' limitate a 256 caratteri. Una possibilita' da tempo attesa poiche' il package e' molto utilizzato sia per il logging che per la generazione di file.

7o Data Pump

Sono state introdotte nuove funzioni di ETL, le utility exp/imp sono state riscritte, sono state introdotte le EXPDP/IMPDP (export/import data pump) e (novita' della R2) queste ultime possono utilizzare la compressione in modo diretto (con exp/imp da sempre si utilizzano le named pipe su Unix).
La gestione dei backup di grandi basi dati e datawhare house risultano cosi' meno onerose.

8o Commit

Quante battaglie si sono combattute tra DBA e programmatori sulla COMMIT? L'esigenza di mantenere la congruenza dei dati, il famigerato SNAPSHOT TOO OLD, le prestazioni, ... Le evoluzioni nel tempo sono state molte e la 10g R2 introduce un'ulteriore possibilita': il commit asincrono. Ovvero l'applicazione effettua il commit ma non attende la sua conclusione. Per applicazioni batch e' probabilmente la scelta piu' efficiente e senza compromessi sulla logica dei dati.
La sintassi? Molto semplice: COMMIT [WRITE [WAIT|NOWAIT|IMMEDIATE|BATCH]]. In pratica utilizzando un COMMIT NOWAIT in programmi batch si ottengono le migliori prestazioni mantenendo la correttezza logica dei dati e correndo solo il piccolo rischio di perdere qualche transazione (ma in un programma batch se vi e' un errore tipicamente si ricomincia dall'inizio). Oppure con un settaggio a livello di SYSTEM o di SESSION si puo' impostare il commit mode di default.

9o AWR

Da diverse versioni Oracle (NdE 8.1.6) fornisce strumenti per l'analisi delle prestazioni del sistema. Per controllare la situazione basta utilizzare exec statspack.snap per effettuare le "fotografie" del DB e quindi @$ORACLE_HOME/rdbms/admin/spreport come utente PERFSTAT.
Con l'AWR (Automatic Workload Repository) le statistiche ora partono in automatico senza bisogno di configurazione. Bene, non e' piu' necessario aspettare che si lamenti qualche utente per accorgersi di aver dimenticato di attivarle!
Collegati a questo l'ADDM (Automatic Database Diagnostic Monitor) e gli Advisor (eg. SQL Tuning Advisor) offrono ottimi consigli al DBA ed ai programmatori.
Con l'ASSM (Automatic Segment Space Management) ed le LMT (Locally Managed Tablespaces), introdotti gia' in precedenza, si completa l'insieme delle modalita' automatiche di gestione. In pratica con la versione 10 si ha una gestione automatica dei piu' importanti componenti di amministrazione di un RDBMS complesso e potente come Oracle.

10o Grid

Il GRID computing fara' davvero ammattire tutti. In realta' non c'e' molto di "grid" nella versione 10g. E' vero... l'EM puo' operare verso sistemi ed istanze differenti, l'ASM gestisce in modo trasparente lo storage, con il RAC istanze diverse utilizzano lo stesso storage, e' ora possibile la trasportabilita' (anche on-line) dei tablespace tra sistemi diversi ...
Naturalmente quella che segue e' solo un opinione personale: il grid diverra' reale soprattutto se vi saranno le necessarie premesse economiche! Installare l'RDBMS Oracle su tutti i sistemi di un'azienda ed utilizzarlo on-demand e' sempre piu' possibile tecnicamente... ma diverra' una pratica comune solo quando sara' anche conveniente.


I punti indicati sono solo alcune delle nuove funzionalita' presenti nell'Oracle RDBMS 10g. Mi sono percio' riservato il diritto di scegliere quelli che, secondo me, sono le novita' piu' importanti.
Con la nuova versione sono stati aumentati alcuni limiti dell'RDBMS (eg. ora un DB puo' raggiungere gli 8M TB, ovvero 8 milioni di terabyte, neanche Paperon de Paperoni ha un deposito cosi' grande!), vi e' una nuova gestione dei VPD e tante altre cose... che si possono trovare sulla documentazione ufficiale!

Interessano le versioni precedenti? La storia di Oracle e' presentata in C'era una volta Oracle.

In conclusione la release 10g e' ora ben stabile, anche sulle nuove funzionalita', ed i vantaggi dal punto di vista della gestione sono notevoli quindi... buon divertimento con la 10g!


Testo: Novita' presenti in Oracle 10g (R2)
Data: 31 Giugno 2004
Versione: 1.0.6 - 14 Febbraio 2008
Autore: mail@meo.bogliolo.name