Trasportare Dati

lunedì 18 giugno 2018 alle 18:24 | Pubblicato su 12c, Diario | Lascia un commento

Titolo breve e semplice, tratto da questo capitolo del manuale Oracle. Quello che voglio fare in effetti è solamente un breve riassunto del contenuto di quel capitolo del manuale “Oracle Database Administrator’s Guide” che parla di una tecnica per trasportare in modo efficente e veloce grosse moli di dati da un database Oracle a un’altro. Il principio di base è quello di saltare un passaggio rispetto a un classico export e import tramite Oracle Data Pump. Infatti, se pensiamo di utilizzare un dump per portare dei dati da un database a un’altro dobbiamo esportare i dati su un file di dump, copiare il file di dump sulla macchina dove si trova il database di destinazione e li importare i dati dal dump al database. Con l’opzione TRANSPORTABLE=ALWAYS è possibile in Oracle 12c (e a certe condizioni gia dalla versione 11.2.0.3) effettuare un export che in realtà nel dump generato metterà solo i metadati e nel caso di FULL=Y (intero database) eventualmente anche i dati di oggetti utente che dovessero stare su tablespace di sistema (SYSTEM e SYSAUX).  Credo che nel banale caso di tabelle utente che risiedano su una di queste due tablespace sarebbe anche meglio sanare la situazione prima, poi non so se ci possono essere casi particolari o motivazioni per cui non possa essere fatto. In ogni caso il principio è che in questo modo anche se dobbiamo spostare grossi volumi di dati l’operazione di export dovrebbe essere relativamente veloce. Preventivamente occorre mettere in modalità READ-ONLY le tablespace contenenti i dati utente, infatti, una volta lanciato il comando di export che come scritto sopra si limiterà, nel caso migliore,  a genere un file di dump che conterrà solo i metadati del database di origine. A quel punto si deve copiare sul file di destinazione questo file di dump e i datafile delle tablespace contenenti i dati utente (quelle che abbiamo messo in modalità READ-ONLY). Sul database di destinazione l’operazione di import farà specularmente le operazioni fatte sul database di origine con l’export, importerà i metadati degli oggetti e in più ricollegherà i datafile al nuovo database.  Come si può intuire, se il volume di dati è molto alto con questa tecnica il tempo necessario è solo quello di trasporto dei datafile, le operazioni di export e import non devono elaborare tutti i dati e quindi il risparmio di tempo può essere notevole.

Quello che ho descritto sinteticamente è il caso di Full transportable export/import, ovvero export e import di un intero database e che si attiva con i due parametri FULL=Y e TRANSPORTABLE=ALWAYS. Il parametro (e la modalità) TRANSPORTABLE=ALWAYS in associazione con FULL=Y è una novità di Oracle 12c, con Oracle 11.2.0.1 era stato introdotto ma era utilizzabile solo con il parametro TABLES per esportare tabelle o partizioni con la stessa logica. Già da prima di Oracle 11g esisteva la modalità “Transportable Tablespace Mode” che si basa sempre sullo stesso principio, ovvero esportare sul file di dump solo i metadati e affidarsi direttamente alla copia dei datafile per i dati veri e propri.

Vi sono una serie di limitazioni e casi particolari a cui porre attenzione per poter usare la modalità “TRANSPORTABLE”, prima di tutto occorre verificare l'”endianess” delle piattaforme di origine e destinazione, se sono diverse occorre convertire i datafile. La conversione può essere fatta con i metodi GET_FILE/PUT_FILE del package PL/SQL DBMS_FILE_TRANSFER o con il comando CONVERT di RMAN. Occorre porre attenzione alle tablespace criptate e nel caso di tablespace e tabelle/partizioni occorre fare attenzione al tipo dato TIMESTAMP WITH TIME ZONE, se i database di origine e destinazione hanno versioni diverse del file delle timezone i dati non vengono importati. Un problema analogo vale per tutti i casi, TABLE/PARTITION, TABLESPACE e FULL,  per il tipo dato TIMESTAMP WITH LOCAL TIME ZONE se i database di origine e destinazione hanno diversa “DBTIMEZONE”.

Rimando al capitolo del manuale indicato all’inizio per esempi molto ben fatti e chiari e maggiori dettagli sulle limitazione e casi particolari.

Annunci

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.
Entries e commenti feeds.

%d blogger hanno fatto clic su Mi Piace per questo: