EXPDP - IMPDP
In ambiente Oracle 11g la directory di default in cui è salvato il file di dump
è la seguente.
SELECT directory_name, directory_path
FROM dba_directories
WHERE directory_name='DATA_PUMP_DIR';
Se si usa una differente directory, specificarla nel parametro DIRECTORY.
Esportare sempre ORACLE_SID e NLS_LANG.
Estrarre dalla macchina di destinazione su cui deve essere effettuato l’import il parametro
NLS_LANG=<NLS_LANGUAGE>_<NLS_TERRITORY>.<NLS_CHARACTERSET>
dalla seguente query.
SELECT * FROM NLS_DATABASE_PARAMETERS
where parameter in ('NLS_LANGUAGE', 'NLS_TERRITORY','NLS_CHARACTERSET');
Esportare su entrambi server su cui verrà fatto l’export e l'import la variabile con i parametri di sopra.
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
Controllare anche il parametro NLS_NCHAR_CHARACTERSET.
COMPRESSION=ALL;
expdp '"/ as sysdba"' dumpfile=T1401R_ACOL_20180912.dmp logfile=T1401R_ACOL_20180912.log
TABLES=PIPPO.T1401R_ACOL
QUERY='PEP.T1401R_ACOL:"WHERE rownum<=20"'
COMPRESSION=all;
Se si trasferisce il file nella macchina target come root
scp pippo_20180911.dmp root@coslab02:/home/oracle/u01/app/oracle/admin/IAT11F/dpdump
Accedere alla macchina target e da root cambiare i permessi del file
chown oracle:oinstall pippo_20180911.dmp
Se si trasferisce il file come oracle il file importato ha già come proprietario oracle e gruppo primario oinstall.
scp pippo_20180911.dmp oracle@coslab02:/home/oracle/u01/app/oracle/admin/IAT11F/dpdump
select current_scn from V$database
expdp \"sys/xxxxxx as sysdba\" SCHEMAS=PIPPO dumpfile=pippo_20200805.dmp logfile=pippo_20200805.log FLASHBACK_SCN=1296276701
echo $ORACLE_SID
su - oracle
impdp '"/ as sysdba"' schemas=PIPPO dumpfile=pippo_20180911.dmp logfile=impdp_20180911.log
Attenzione: se lo schema già esiste questa operaizone va ad aggiungere dati.
impdp '"/ as sysdba"' schemas=PIPPO DIRECTORY=my_dir dumpfile=pippo_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
...
ORA-31684: Object type USER:"PIPPO" already exists
...
ORA-31684: Object type TABLE:"PIPPO"."TEST_TAB" already exists
Per escludere CREATE USER dall'import, specificare EXCLUDE = USER o EXCLUDE = USER: "= 'TEST'" per escludere una specifica istruzione CREATE USER:
impdp '"/ as sysdba"' schemas=PIPPO EXCLUDE=USER DIRECTORY=my_dir dumpfile=pippo_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
...
ORA-31684: Object type TABLE:"TEST"."TEST_TAB" already exists
impdp '"/ as sysdba"' EXCLUDE=SCHEMA:\"='PIPPO'\" DIRECTORY=my_dir dumpfile=sorgente_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
Viene popolato lo schema nuovo (PEPT) senza cancellare quello vecchio (PEP)
1) creare prima i tablespace associati al nuovo schema sul nuovo ambiente
2) effettuare l'import dei dati vecchi usando l'opzione remap. Non è necessario creare la nuova utenza con lo script.
E s e m p i o
CREATE TABLESPACE TS_PEPT_DATA DATAFILE
'/u01/app/oracle/oradata/s11test1/s11test1/datafile/ts_pept_data01.dbf'
SIZE 1M AUTOEXTEND OFF
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
CREATE TABLESPACE TS_PEPT_INDEX DATAFILE
'/u01/app/oracle/oradata/s11test1/s11test1/datafile/ts_index_data01.dbf'
SIZE 1M AUTOEXTEND OFF
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
SELECT directory_name, directory_path
FROM dba_directories
WHERE directory_name='DATA_PUMP_DIR';
Se si usa una differente directory, specificarla nel parametro DIRECTORY.
Esportare sempre ORACLE_SID e NLS_LANG.
Estrarre dalla macchina di destinazione su cui deve essere effettuato l’import il parametro
NLS_LANG=<NLS_LANGUAGE>_<NLS_TERRITORY>.<NLS_CHARACTERSET>
dalla seguente query.
SELECT * FROM NLS_DATABASE_PARAMETERS
where parameter in ('NLS_LANGUAGE', 'NLS_TERRITORY','NLS_CHARACTERSET');
Esportare su entrambi server su cui verrà fatto l’export e l'import la variabile con i parametri di sopra.
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
Controllare anche il parametro NLS_NCHAR_CHARACTERSET.
Per monitorare l'esecuzione del job
select * from DBA_DATAPUMP_JOBS;
- Export del 5% di uno schema.
- Export di una sola tabella e compressione del dump, Omettere il parametro "schema".
COMPRESSION=ALL;
- Export di solo 20 righe di una tabella..
expdp '"/ as sysdba"' dumpfile=T1401R_ACOL_20180912.dmp logfile=T1401R_ACOL_20180912.log
TABLES=PIPPO.T1401R_ACOL
QUERY='PEP.T1401R_ACOL:"WHERE rownum<=20"'
COMPRESSION=all;
Se si trasferisce il file nella macchina target come root
scp pippo_20180911.dmp root@coslab02:/home/oracle/u01/app/oracle/admin/IAT11F/dpdump
Accedere alla macchina target e da root cambiare i permessi del file
chown oracle:oinstall pippo_20180911.dmp
Se si trasferisce il file come oracle il file importato ha già come proprietario oracle e gruppo primario oinstall.
scp pippo_20180911.dmp oracle@coslab02:/home/oracle/u01/app/oracle/admin/IAT11F/dpdump
- Export consistente di uno schema.
select current_scn from V$database
expdp \"sys/xxxxxx as sysdba\" SCHEMAS=PIPPO dumpfile=pippo_20200805.dmp logfile=pippo_20200805.log FLASHBACK_SCN=1296276701
- Export di tutte le strutture delle tabelle di uno schema e senza dati
expdp
SCHEMAS=DB_AA_OWN
dumpfile=expdp_DB_TAB_20230919.dmp
logfile=DB_TAB_20230919.log
INCLUDE=TABLE
CONTENT= METADATA_ONLY;
- Export consistente di solo i dati delle tabelle di uno schema tranne una tabella
expdp SCHEMAS=EMEN
dumpfile=exp_EMEN_20231228.dmp
logfile=exp_EMEN_20231228.log
FLASHBACK_SCN=8850160797
CONTENT=DATA_ONLY
EXCLUDE=TABLE:\"LIKE \'T1893D_CSIS%\'\"
- Export di uno schema tranne una serire di tabelle
expdp SCHEMAS=EMEN
dumpfile=exp_EMEN_20231228.dmp
logfile=exp_EMEN_20231228.log
FLASHBACK_SCN=8850160797
EXCLUDE=TABLE:\"IN\(\'DHFUNZ\',\'DHMAINAPPL\',\'DHORACONN\',\'DHORASCHEMAS\',\'IPLUNAME\',\'TEKSGN\'\)\"
IMPORT
- Import di uno schema.
echo $ORACLE_SID
su - oracle
impdp '"/ as sysdba"' schemas=PIPPO dumpfile=pippo_20180911.dmp logfile=impdp_20180911.log
Attenzione: se lo schema già esiste questa operaizone va ad aggiungere dati.
- Import di una sola Tabella.
Se la tabella esiste e si effettua il DROP della tabella, omettere il
comando CONTENT.
Se la tabella già esiste ed è vuota (ad esempio prima è stato fatto un
TRUNCATE)
usare il comando CONTENT con importazione dei soli dati.
Se la tabella esiste e si vuole aggiungere altri dati (apppend) a quelli
esistenti non eseguire alcun drop e truncate ed usare il comando CONTENT.
impdp'"/ as sysdba"'
dumpfile=pippo_20180912.dmp tables=<schema>.<nome
tabella> logfile=imxpdp_20180912.log CONTENT=DATA_ONLY;
Il dump file può essere anche l'export dell'intero schema e non solo
puntale della singola tabella.
- Import Schema ad eccezione della "create user"
impdp '"/ as sysdba"' schemas=PIPPO DIRECTORY=my_dir dumpfile=pippo_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
...
ORA-31684: Object type USER:"PIPPO" already exists
...
ORA-31684: Object type TABLE:"PIPPO"."TEST_TAB" already exists
Per escludere CREATE USER dall'import, specificare EXCLUDE = USER o EXCLUDE = USER: "= 'TEST'" per escludere una specifica istruzione CREATE USER:
impdp '"/ as sysdba"' schemas=PIPPO EXCLUDE=USER DIRECTORY=my_dir dumpfile=pippo_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
...
ORA-31684: Object type TABLE:"TEST"."TEST_TAB" already exists
- Import Schema ad eccezione di uno schema completo
impdp '"/ as sysdba"' EXCLUDE=SCHEMA:\"='PIPPO'\" DIRECTORY=my_dir dumpfile=sorgente_yyyymmdd.dmp logfile=impdp_yyyymmdd.log
- Remap Schema
Viene popolato lo schema nuovo (PEPT) senza cancellare quello vecchio (PEP)
- Remap Tablespace
- Remap Schema + Tablespace
1) creare prima i tablespace associati al nuovo schema sul nuovo ambiente
2) effettuare l'import dei dati vecchi usando l'opzione remap. Non è necessario creare la nuova utenza con lo script.
E s e m p i o
CREATE TABLESPACE TS_PEPT_DATA DATAFILE
'/u01/app/oracle/oradata/s11test1/s11test1/datafile/ts_pept_data01.dbf'
SIZE 1M AUTOEXTEND OFF
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
CREATE TABLESPACE TS_PEPT_INDEX DATAFILE
'/u01/app/oracle/oradata/s11test1/s11test1/datafile/ts_index_data01.dbf'
SIZE 1M AUTOEXTEND OFF
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
impdp dumpfile=pep_20190110.dmp logfile=imp_pep5.log
REMAP_SCHEMA=PEP:PEPT
REMAP_TABLESPACE=TS_PEP_DATA:TS_PEPT_DATA,TS_PEP_INDEX:TS_PEPT_INDEX;
- Remap TABLE
logfile=imp_F00_MAND_2024.log
TABLES=F00.MAND
REMAP_TABLE=F00.MAN:MAN_BKP
L'opzione REMAL_TABLE crea una tabella copia della prima. Quindi al termine dell'operaizone di import avremo nello schema F00 sia la tabella MAN che MAN_BKP.