Oracle impdp/expdp

Come portare delle tabelle Oracle dall’ambiente di sviluppo a quello  di produzione? e se ci sono del LOB?

PROBLEMA

Per esportare delle righe di tabella si può scegliere la facile strada di creare un file di insert, magari dal tool tipo Sqldeveloper. Il problema è quando sono presenti dei campi clob. La semplice DML non basta.

SOLUZIONE

DataPump. facile.

Ora nel mio caso erano solo alcune tabelle di un dominio applicativo: iniziavano tutte con “M61” ed appartenevano ad uno schema “MYAPEX”. Queste tabelle erano tutte supportate da una sola tablespace: “MYAPEX_128K” e il database gira sotto Windows.

L’ambiente di produzione è un poco differente:

  • schema -> CLOUD3D
  • sistema -> Linux
  • tablespace -> CLOUD3D128K

OPERAZIONI

Sulla macchina Windows bisogna verificare se esiste una directory-Oracle:

select * from all_directories;

quindi il risultato:

OWNER DIRECTORY_NAME DIRECTORY_PATH 
SYS   M61MAIL        C:\temp

Ora possiamo proseguire con l’esportazione vera e propria:

expdp system/***** schemas=MYAPEX include=TABLE:\"IN (select table_name from all_tables where table_name like 'M61%')\" directory=M61MAIL dumpfile=allm61.dmp logfile=allm61.log

le tabelle da esportare vengono estratte da una query inline:

select table_name from all_tables where table_name like 'M61%'

che deve essere scritta entro i doppi apici. Non dimenticate i metacaratteri (tra i quali appunto i doppi apici) i quali vanno preceduti dal backslash (\).

Dopoaver trasferito il file sul server Linux, dovremo fare il percorso inverso:

select * from all_directories;

quindi cercare il path della directory-Oracle:

OWNER DIRECTORY_NAME DIRECTORY_PATH 

SYS   ECOMMIMG       /home/oracle/lavori/ecomm/images

e quindi copiarlo nel giusto percorso:

mv /home/oracle/ALL61.dmp /home/oracle/lavori/ecomm/images

 

impdp CLOUD3D/***** directory=ECOMMIMG dumpfile=ALLM61.DMP logfile=ALLM61.log remap_schema=MYAPEX:CLOUD3D REMAP_TABLESPACE=MYAPEX_128K:CLOUD3D128K

è importante osservare i due “remap”:

  • remap_schema
  • REMAP_TABLESPACE

e dopo l’importazione:

Import: Release 11.2.0.1.0 - Production on Sun Nov 11 01:21:18 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "CLOUD3D"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "CLOUD3D"."SYS_IMPORT_FULL_01": CLOUD3D/******** directory=ECOMMIMG dumpfile=ALLM61.DMP logfile=ALLM61.log remap_schema=MYAPEX:CLOUD3D REMAP_TABLESPACE=MYAPEX_128K:CLOUD3D128K
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "CLOUD3D"."M61EMAILFORM" 38.33 KB 25 rows
. . imported "CLOUD3D"."M61REPORT" 138.0 KB 2837 rows
. . imported "CLOUD3D"."M61CONFIG" 7.914 KB 1 rows
. . imported "CLOUD3D"."M61EMAILLIST" 22.84 KB 267 rows
. . imported "CLOUD3D"."M61EMAILLIST_BCK" 20.71 KB 290 rows
. . imported "CLOUD3D"."M61GRPLIST" 8.601 KB 30 rows
. . imported "CLOUD3D"."M61GRPMAIL" 35.72 KB 637 rows
. . imported "CLOUD3D"."M61OPERATOR" 7.468 KB 1 rows
. . imported "CLOUD3D"."M61STATUS" 6.695 KB 2 rows
. . imported "CLOUD3D"."M61TESTATE" 6.429 KB 1 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "CLOUD3D"."SYS_IMPORT_FULL_01" successfully completed at 01:21:24

oracle@node1:~/lavori/ecomm/images$

Ora le tabelle sono state ricaricate inclusi i CLOB e tutto può ripartire!

 

Leave a Reply