Wenn man keinen Wert für Objekttyp angibt, wird die Transformation auf alle möglichen Typen angewandt.
Um die Auswirkungen der verschiedenen TRANSFORM-Einstellungen zu zeigen, legen wir die Tabelle emp2 im Schema Scott leer neu an und verändern ein paar ihrer Eigenschaften.
(Wenn man die Tabelle vor dem Export nur leert, wird sie mit SEGMENT CREATION IMMEDIATE exportiert).
CREATE TABLE emp2
PCTFREE 0 STORAGE(BUFFER_POOL KEEP)
TABLESPACE example NOLOGGING
AS SELECT * FROM emp WHERE 1=2;
Die Tabelle bekommt einen Primärschlüssel, der auf einem anders benannten Index basiert. Auch hier gibt es ein paar Nicht-Default-Eigenschaften.
ALTER TABLE scott.emp2 ADD CONSTRAINT emp2_pk PRIMARY KEY(empno)
USING INDEX (
CREATE INDEX emp2_empno_idx ON emp2(empno) TABLESPACE indizes
NOLOGGING STORAGE(INITIAL 100K));
Und jetzt der Export (dafür braucht Scott Lese- und Schreibrechte auf dem Verzeichnis data_pump_dir)
conn / as sysdba
SELECT directory_path FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';
-- C:\oracle/admin/o11g/dpdump/
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO scott;
expdp scott/tiger TABLES = emp2 DUMPFILE = data_pump_dir:scott.dmp EXCLUDE = statistics REUSE_DUMPFILES = yes NOLOGFILE = yes
Beim Import lassen wir nur das Metadatenfile erzeugen. Das reicht, um die Unterschiede sichtbar zu machen.
Inhalt des Parameterfiles (im Ordner C:\Oracle\admin\o11g\dpdump)
USERID = scott
TABLES = emp2
DUMPFILE = data_pump_dir:scott.dmp
SQLFILE = data_pump_dir:scott_imp_normal.txt
NOLOGFILE = yes
Der Import mit impdp parfile = imp_scott.txt erzeugt das Metadatenfile scott_imp_normal.txt. Hier ein Ausschnitt daraus. Die NON-Default-Eigenschaften und die Segment Creation-Klausel sind fett gedruckt.
CREATE TABLE "SCOTT"."EMP2"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10 BYTE),
"JOB" VARCHAR2(9 BYTE),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
) SEGMENT CREATION DEFERRED
PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
STORAGE(
BUFFER_POOL KEEP FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "EXAMPLE" ;
CREATE INDEX "SCOTT"."EMP2_EMPNO_IDX" ON "SCOTT"."EMP2" ("EMPNO")
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING
STORAGE( INITIAL 106496)
TABLESPACE "INDIZES" PARALLEL 1 ;
ALTER INDEX "SCOTT"."EMP2_EMPNO_IDX" NOPARALLEL;
ALTER TABLE "SCOTT"."EMP2" ADD CONSTRAINT "EMP2_PK" PRIMARY KEY ("EMPNO")
USING INDEX "SCOTT"."EMP2_EMPNO_IDX" ENABLE;
In diesem Fall ist SEGMENT_CREATION:N gleichbedeutend mit SEGMENT_CREATION:N:TABLE, weil es die Deferred Segment Creation nur für Tabellen gibt.
Inhalt des Parfiles:
USERID = scott
TABLES = emp2
DUMPFILE = data_pump_dir:scott.dmp
SQLFILE = data_pump_dir:scott_imp_normal.txt
NOLOGFILE = yes
TRANSFORM = SEGMENT_CREATION:N
Inhalt des SQLFiles: Hier fehlt nur SEGMENT CREATION DEFERRED. Alle anderen Einstellungen bleiben erhalten
CREATE TABLE "SCOTT"."EMP2"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10 BYTE),
"JOB" VARCHAR2(9 BYTE),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
) PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
STORAGE(
BUFFER_POOL KEEP FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "EXAMPLE" ;
CREATE INDEX "SCOTT"."EMP2_EMPNO_IDX" ON "SCOTT"."EMP2" ("EMPNO")
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING
STORAGE( INITIAL 106496)
TABLESPACE "INDIZES" PARALLEL 1 ;
ALTER INDEX "SCOTT"."EMP2_EMPNO_IDX" NOPARALLEL;
ALTER TABLE "SCOTT"."EMP2" ADD CONSTRAINT "EMP2_PK" PRIMARY KEY ("EMPNO")
USING INDEX "SCOTT"."EMP2_EMPNO_IDX" ENABLE;
Die Tabellen werden im Default-Tablespace von Scott erstellt, bekommen die Default-Storage-Werte und sonstige Default-Einstellungen wie LOGGING und NOCOMPRESS.
Inhalt des Parameterfiles:
USERID = scott
TABLES = emp2
DUMPFILe = data_pump_dir:scott.dmp
SQLFILE = data_pump_dir:scott_imp_normal.txt
NOLOGFILE = yes
TRANSFORM = SEGMENT_ATTRIBUTES:N
Ausschnitt aus dem SQLFile:
CREATE TABLE "SCOTT"."EMP2"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10 BYTE),
"JOB" VARCHAR2(9 BYTE),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
) ;
CREATE INDEX "SCOTT"."EMP2_EMPNO_IDX" ON "SCOTT"."EMP2" ("EMPNO") ;
ALTER INDEX "SCOTT"."EMP2_EMPNO_IDX" NOPARALLEL;
ALTER TABLE "SCOTT"."EMP2" ADD CONSTRAINT "EMP2_PK" PRIMARY KEY ("EMPNO")
USING INDEX "SCOTT"."EMP2_EMPNO_IDX" ENABLE;
Erwartungsgemäß werden bei den Einstellungen TRANSFORM=SEGMENT_ATTRIBUTES:N:TABLE und TRANSFORM=SEGMENT_ATTRIBUTES:N:INDEX jeweils die Segment-Eigenschaften der Tabelle bzw. des Indexes selektiv ausgeblendet.
Beim Import mit TRANSFORM=SEGMENT_ATTRIBUTES:N:CONSTRAINT werden alle Segment-Eigenschaften angegeben, das kann man sich also eher sparen.
Das ist keine Lösung für das Problem der Deferred Segment Creation beim Import in die Standard Edition, sondern zeigt nur eine weitere Möglichkeit des TRANSFORM-Parameters.
Inhalt des Parameterfiles:
USERID = scott
TABLES = emp2
DUMPFILe = data_pump_dir:scott.dmp
SQLFILE = data_pump_dir:scott_imp_normal.txt
NOLOGFILE = yes
TRANSFORM = STORAGE:N
Ausschnitt aus dem SQLFile:
CREATE TABLE "SCOTT"."EMP2"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10 BYTE),
"JOB" VARCHAR2(9 BYTE),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
) SEGMENT CREATION DEFERRED
PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
TABLESPACE "EXAMPLE" ;
CREATE INDEX "SCOTT"."EMP2_EMPNO_IDX" ON "SCOTT"."EMP2" ("EMPNO")
PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING
TABLESPACE "INDIZES" PARALLEL 1 ;
ALTER INDEX "SCOTT"."EMP2_EMPNO_IDX" NOPARALLEL;
ALTER TABLE "SCOTT"."EMP2" ADD CONSTRAINT "EMP2_PK" PRIMARY KEY ("EMPNO")
USING INDEX "SCOTT"."EMP2_EMPNO_IDX" ENABLE;
Auch hier kann man wahlweise die Storage-Klausel der Tabelle oder des Indexes verschwinden lassen. Die Angabe TRANSFORM=STORAGE:N:CONSTRAINT hat wiederum keine Auswirkung
Ab Version 12.1 kann man mit dem Transform-Parameter auch gezielt die COMPRESSION-Klausel loswerden.
Diese Möglichkeit löst ein weiteres potentielles Problem beim Import von der Enterprise in die Standard Edition (oder eine EE ohne Compression Option), wenn in der Ausgangsdatenbank Tabellen komprimiert gespeichert wurden.
Der entsprechende Parameter heißt dann:
TRANSFORM=TABLE_COMPRESSION_CLAUSE:NONE
Wenn Sie mehr über Datapump und seine Optionen wissen wollen, schauen Sie doch mal im DBA-Kurs vorbei und falls Sie weitere Unterstützung beim Export / Import benötigen, helfen wir Ihnen gerne weiter.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.