Oracle Lessons

Oracle Tabelle Esterne Lezione 5


  Limitazioni, vantaggi e usi possibili delle tabelle esterne. Le più importanti limitazioni che abbiamo sulle tabelle esterne sono le seguenti:Le tabelle esterne sono soggette a limitazioni che potrebbero renderle inadatte per alcune applicazioni per l’elaborazione di transazioni in linea: se nel corso di una transazione viene modificato il contenuto di una tabella esterna sostituendo il file a cui si riferisce, la transazione potrebbe perdere la sua consistenza; Nelle tabelle esterne non si possono effettuare operazioni di aggiornamento o cancellazione. Più dinamica è l’informazione contenuta in una tabella esterna meno appropriato è il suo uso.Le tabelle esterne non possono essere indicizzate, quindi se il numero dei record presenti è consistente i tempi di accesso all’informazione possono degradare;In una tabella esterna non è possibile specificare dei vincoli. Persino il tentativo di creare un vincolo not null o quello di definizione di chiave esterna avrà esito negativo;Per analizzare una tabella esterna si deve utilizzare il package DBMS_STAT, non è possibile analizzarla con il comando analyze; Nonostante queste limitazioni, le tabelle esterne mettono a disposizione molte soluzioni utili:possono essere messe in join con altre tabelle esterne o con tabelle standard. Si può anche ricorre ai suggerimenti per costringere lì ottimizzatore a scegliere percorsi di join differenti, e i risultati saranno visibili nei percorsi di esecuzione delle query;come alternativa al caricamento dei dati, le tabelle esterne offrono ai DBA e agli sviluppatori delle applicazioni la possibilità di accedere ai dati senza dover sviluppare programmi di caricamento;dato che i file possono essere modificati a livello di sistema operativo, è possibile sostituire i dati di una tabella molto rapidamente senza doversi preoccupare delle transazioni in sospeso che modificano la tabella;se il file contiene molti record, è possibile frammentarlo su più file, sui quali costruire più tabelle esterne e successivamente un'unica vista in union all, dando così origine ad una vista di partizione tra più file (il cui accesso è più veloce considerando il parallelismo).se il partizionamento in più file di un file contenente molti record segue logiche opportune, si potranno gestire i dati di ogni tabella separatamente, a livello di file system, sostituendone il contenuto in base alle esigenze.considerata la possibilità di eseguire una query su di una tabella esterna, quest’ultima potrà fungere da origine di dati per un comando “insert as select”. Per migliorare ulteriormente le prestazioni dell’operazione “insert as select”, si dovrebbe usare il suggerimento APPEND per forzare gli inserimenti a livello di blocco;quando si specifica il grado di parallelismo per l’operazione “insert as select”, Oracle avvia più driver di accesso ORACLE_LOADER, per elaborare i dati in parallelo;la disattivazione di “badfile” (con “nobadfile”) elimina i costi associati alla creazione di file e alla gestione del contesto della riga originale.durante l’operazione “insert as select” si possono eseguire funzioni sui dati mentre questi vengono elaborati. Queste funzioni possono essere inserite nella definizione della tabella esterna. Questa capacità sottolinea un vantaggio importante garantito dalle tabelle esterne, ossia la possibilità di centralizzare i requisiti di rappresentazione e elaborazione dei dati, creando così le routine di conversione nelle definizioni delle tabelle.nelle query le tabelle esterne consento di selezionare gruppi di dati specifici tramite la clausola “load when”;la possibilità di accedere in modo limitato ai dati consente di definire delle regole di sicurezza anche per i dati esterni (ad esempio si potrebbe pensare di tenere dei dati riservati fuori dal database in una directory sicura dove solo alcuni utenti hanno il diritto di accesso in lettura); Se nell’architettura del database si utilizzano tabelle esterne, ci si dovrà accertare che i piani di backup e recupero, tengano conto anche di questi file. Se i file esterni cambiano più rapidamente di quelli del database, potrebbe essere necessario eseguire dei backup con maggiore frequenza per sfruttare le capacità di completo recupero da parte di oracle.