Oracle Lessons

Oracle Tabelle Esterne Lezione 1


Oracle consente di utilizzare la funzionalità delle tabelle esterne, con le quali è possibile accedere ai file esterni come se questi fossero tabelle contenute nel database.  Importante: quando si crea una tabella esterna in Oracle, la sua struttura viene definita insieme alla sua posizione. Quando si interroga la tabella esterna, Oracle le legge e restituisce i risultati come se i dati fossero stati memorizzati nel database. Dal momento che i dati non sono nel database, non ci si dovrà preoccupare di caricarli nello stesso, un vantaggio notevole per i Data WareHouse e per i database di grandi dimensioni. Le tabelle esterne però hanno dei limiti:non è possibile aggiornare o cancellare le loro righe attraverso Oracle;non è possibile indicizzarle.Dato che fanno parte delle applicazioni del database, le si dovrà considerare come parti integranti dei processi di backup e di recupero. Questa funzionalità è disponibile a partire dalla versione di Oracle 10g, attraverso il driver di accesso ORACLE_DATAPUMP.   Accesso ai dati Esterni. Per accedere ai file esterni di Oracle, per prima cosa occorre utilizzare il comando create directory per definire l’oggetto di una directory che punta alla posizione dei file esterni.Gli utenti che accederanno ai file esterni dovranno disporre del privilegio READ nella directory. NOTA: Prima di iniziare occorre accertarsi dell’esistenza della directory esterna e che l’utente che eseguirà il comando create directory abbia il privilegio di sistema CREATE ANY DIRECTORY. L’esempio seguente crea una directory di nome LIBRO_DIR e concede gli accessi READ e WRITE allo schema PRACTICE: create directory LIBRO_DIR as ‘eoracleexternal’;grant read on directory LIBRO_DIR to practice;grant write on directory LIBRO_DIR to practice; Da questo momento in poi l’utente PRACTICE può leggere i file nella directory e:oracleexternal come se fossero contenuti nel database. Dato che a tale utente è stato anche concesso il privilegio di WRITE, in quella directory potrà creare i suoi file di log.Se un altro utente deve poter accedere ai dati contenuti nei file presenti nella directory e:oracleexternal gli si dovrà concedere il privilegio di READ alla directory LIBRO_DIR. grant read on directory LIBRO_DIR to ..(altro utente)…; I file stessi dovranno anche essere leggibili da parte dell’utente Oracle a livello di sistema operativo. Generiamo di esempio due file utilizzando il listato seguente: select Titolo || ‘;’ || Editore || ‘;’ || NomeCategoria || ‘;’ || Classificazione || ‘;’ from biblioteca order by titolo; spool e:oracleexternalbookshelf_dump.lst/Select Titolo || ‘;’ || NomeAutore || ‘;’From biblioteca_autoreOrder by titolo;spool e:oracleexternalbook_auth_dump.lst/ Spool off  Oltre ai dati, I file di output conterranno anche una singola linea iniziale con il simbolo “SQL>/” e una linea finale che riporta “SQL>spool off”. Per semplificare gli esempi, prima di procedere è consigliabile di modificare manualmente i file togliendo tali righe.