Esportazione di uno schema di un database ORACLE da server remoto linux e importazione sul db locale su Windows

Database Luca D'Emilio

Software utilizzato:
Oracle XE 11g installato in C:\oraclexe (default)
Client SSH (Putty o simili)
WinSCP

ESPORTAZIONE
(Nell’esempio lo schema da esportare sarà origin_db)
Collegarsi al server remoto tramite SSH con Putty, inserendo i dati d’accesso.
Connessi alla shell remota, inserire le credenziali di accesso.
(Es: login: root password: root)
Collegarsi con l’utenza che possiede privilegi di lettura/scrittura sul db Oracle (nel nostro caso l’utente oracle)
su - oracle

Creare una directory da utilizzare per il file dump

mkdir /home/oracle/oracle_dump


Aprire SQL*Plus connettendosi come sysdba

sqlplus / as sysdba

Creare una directory su oracle chiamata oracle_dump e associarla a quella appena creata sul filesystem.

create or replace directory oracle_dump as '/home/oracle/oracle_dump';

Garantire i privilegi in lettura e scrittura sulla dir appena creata all’user origin_db (sul db)

grant read, write on directory oracle_dump to origin_db;

Garantire il privilegio per l’esportazione del db all’user origin_db

GRANT EXP_FULL_DATABASE TO origin_db;

Uscire da SQL*PLUS

exit

Eseguire dunque da shell il seguente comando per l’esportazione dello schema

expdp origin_db/origin_db SCHEMAS=origin_db DIRECTORY=oracle_dump DUMPFILE=origin.dmp logfile=export.log

Se il processo è andato a buon fine, nella directory /home/oracle/oracle_dump dovreste trovare il file origin.dmp contentente il dump e il file di log export.log

IMPORTAZIONE

Copiate in locale i file di dump. Di seguito la procedura utilizzando WINSCP.
Da WINSCP cliccare sul tab “Nuova Sessione”.
Inserire i dati per la connessione.

Nella finestra di sinistra (locale) selezionare la cartella c:\oraclexe\app\oracle\admin\XE\dpdump

In quella di destra (remoto) selezionare la directory
\home\oracle\oracle_dump

Selezionare i file remoti origin.dmp e export.log e trascinarli nella finestra di sinistra per copiarli in locale.
Apriamo ora una shell di comando in locale e avviamo SQL*Plus connettendoci come sysdba

sqlplus / as sysdba

Creiamo l’utente origin_db con password origin_db

CREATE USER origin_db IDENTIFIED BY origin_db;

Creiamo la directory per il file di dump che punti alla cartella del filesystem in cui abbiamo il file di dump

CREATE OR REPLACE DIRECTORY oracle_dump AS ‘c:\oraclexe\app\oracle\admin\XE\dpdump’;

Garantiamo i privilegi all’utente origin_db per collegarsi, per la directory e per importare un db

GRANT CONNECT TO origin_db;
GRANT read, write ON DIRECTORY oracle_dump TO origin_db;
GRANT IMP_FULL_DATABASE to origin_db;

Creiamo il tablespace TS_ORIGIN di un 1GB con autoextend e dimensione massima illimitata, garantiamo quota illimitata all’utente origin_db su di esso e impostiamolo come tablespace di default; infine usciamo da SQL*Plus

CREATE TABLESPACE TS_ORIGIN DATAFILE
'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TS_ORIGIN.DBF' SIZE 1000M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

ALTER USER origin_db QUOTA UNLIMITED ON TS_ORIGIN;
ALTER DATABASE DEFAULT TABLESPACE TS_ORIGIN;
exit;

Da shell importiamo lo schema col comando

impdp origin_db/origin_db SCHEMAS=origin_db DUMPFILE=origin.dmp DIRECTORY=oracle_dump logfile=import.log

Attenzione! Potreste ricevere errori del genere:

ORA-39083: Object type TABLE:"ORIGIN"."XXX" failed to create with error:
ORA-00439: feature not enabled: Partitioning

dovuti al fatto che la standard edition di Oracle installata in locale non supporta il partizionamento delle table, previsto invece in Oracle EE.
In tal caso creare manualmente le tabelle interessate nello schema locale.

5/5 (4)

Please rate this

Lascia un commento