Introduction into Oracle Data Pump 11g/12c - Export and Import Data

84
Seite 1 Gunther Pippèrr © 2015 http://www.pipperr.de ORACLE DATA PUMP Modern Exportieren und Importieren 0101 1010101 0101011010 11010110100011 1010101101000000 1000101010101000000 1001110101010000000001 0110101110010100000000001 0101101000110100100000000010 1010010101000111010100000000010 0110101010010000011000000000000101 1011010101010010101000000000000000001 1000011111010010101010100000000000000101 0000110011110100000000000000000000000000000 0100000110001111111111111110010100000000000101

Transcript of Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Page 1: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 1Gunther Pippèrr © 2015 http://www.pipperr.de

ORACLE DATA PUMPModern Exportieren und Importieren

0101

1010101

0101011010

11010110100011

1010101101000000

1000101010101000000

1001110101010000000001

0110101110010100000000001

0101101000110100100000000010

1010010101000111010100000000010

0110101010010000011000000000000101

1011010101010010101000000000000000001

1000011111010010101010100000000000000101

0000110011110100000000000000000000000000000

0100000110001111111111111110010100000000000101

Page 2: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 2Gunther Pippèrr © 2015 http://www.pipperr.de

Agenda

Imp und Exp – Vergangenheit und Zukunft

Architektur und Grundlagen

Praktischer Einsatz

Erweiterte Funktionen

Ausblick New Feature 12c

Page 3: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 3Gunther Pippèrr © 2015 http://www.pipperr.de

IMP und EXP in 11g/12c

Importieren wie gehabt

Exportieren mit EXP veraltet und wohl demnächst

nicht mehr verfügbar

Wird vorerst aber weiter unterstützt

– Aber unterstützt keine neuen Features der Datenbank mehr!

– Ab 12c sollte es dann auch nicht mehr verwendet werden

Page 4: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 4Gunther Pippèrr © 2015 http://www.pipperr.de

Die Nachteile vom Imp/Exp

Schwieriger Neustart bei einem Fehler

Keine Parallelisierung

– Ausführung vom Client nur in einem einzigen Thread

Dump Files können relativ groß werden

Optimierung der Performance nur bedingt möglich

Überwachung des Exp/Imp Vorgangs schwierig

Eingeschränkte Filterung der gewünschten Objekte

Page 5: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 5Gunther Pippèrr © 2015 http://www.pipperr.de

Vorteil von imp/exp

Kann von einem Client Rechner gestartet werden

Keine Konfiguration vorab auf dem Datenbank Server

notwendig

Page 6: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 6Gunther Pippèrr © 2015 http://www.pipperr.de

In welchen Editionen ist Data Pump verfügbar?

Core Feature der Datenbank10g/11g/12c

D.h. auf allen Versionen verfügbar

– XE , Standard-One, Standard, Enterprise

– Parallelisierung aber nur unter der Enterprise Edition

möglich!

D:\>expdp parallel=2 schemas=oe8 dumpfile=myoe8.dmp

Export: Release 10.1.0.4.2 - Production on Montag, 19 Juni, 2006 16:38

Copyright (c) 2003, Oracle. All rights reserved.

Benutzername: sys/oracle@xe as sysdba

Angemeldet bei: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product

ion

ORA-39002: Ung³ltiger Vorgang

ORA-39094: Parallelausf³hrung wird in dieser Datenbankedition nicht unterstützt

Aufruf in der Standard Edition:

Page 7: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 7Gunther Pippèrr © 2015 http://www.pipperr.de

Die ersten Schritte

Einen einfachen Export durchführen

1. Versuch (wie gewohnt)

oracle@gpidb01:~> expdp GPI/GPI@oradev directory=/tmp dumpfile=GPI.dmp

Export: Release 10.2.0.1.0 - 64bit Production on Dienstag, 16 Mai, 2006

16:13:43

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -

64bit Production

With the Partitioning, OLAP and Data Mining options

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-39087: directory name /TMP is invalid

Page 8: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 8Gunther Pippèrr © 2015 http://www.pipperr.de

Die ersten Schritte (1)

Pfad-Angabe über ein Oracle Directory

SQL> create directory dmpdir as '/opt/oracle';

Directory created.

SQL> grant read, write on directory dmpdir to scott;

Grant succeeded.

SQL> SELECT directory_path FROM dba_directories WHERE directory_name =

'DATA_PUMP_DIR';

DIRECTORY_PATH

-------------------------------------------------------------------------------

-

/app/oracle/product/10.2.0/rdbms/log/

Standard Directory = DATA_PUMP_DIR

D:\app\oracle\admin\XE\dpdump\XE:=>

Page 9: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 9Gunther Pippèrr © 2015 http://www.pipperr.de

Die ersten Schritte

Sicherung nach DATA_DUMP_DIRexpdp GPI/GPI@oradev directory=DATA_PUMP_DIR dumpfile=GPI.dmp

Export: Release 10.2.0.1.0 - 64bit Production on Dienstag, 16 Mai, 2006

16:50:11

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -

64bit Production

With the Partitioning, OLAP and Data Mining options

Starting "GPI"."SYS_EXPORT_SCHEMA_01": GPI/********@oradev

directory=DATA_PUMP_DIR dumpfile=GPI.dmp

..................

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

. . exported "GPI"."INGRAM_IMPORT" 16.71 MB 44825 rows

. . exported "GPI"."TECHDATA_IMPORT" 9.100 MB 35497 rows

. . .....

. . exported "GPI"."TAS_PRO" 0 KB 0 rows

Master table "GPI"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for GPI.SYS_EXPORT_SCHEMA_01 is:

/opt/oracle/products/10.2.0/rdbms/log/GPI.dmp

Job "GPI"."SYS_EXPORT_SCHEMA_01" successfully completed at 16:50:30

Page 10: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 10Gunther Pippèrr © 2015 http://www.pipperr.de

Die Architektur von Data Pump

Wie funktioniert das nun im Detail?

Page 11: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 11Gunther Pippèrr © 2015 http://www.pipperr.de

Die beteiligten Data Pump Komponenten

expdp impdpEnterpriseManager

WeitereClients

DBMS_DATAPUMP

Loader

External Table API

DataPump

Direct Path API Metadata API:DBMS_METADATA

Data/Metadata movement engine

Data Pump

Page 12: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 12Gunther Pippèrr © 2015 http://www.pipperr.de

Die Architektur von Data Pump

Der Export/Import wird über eigene Serverprozesse

auf dem Server durchgeführt

Kontrollprozess WorkerWorker

CMDimpdp/expdp

DatenbankJob Starten

Exp/Imp Prozess

DumpFile

1..n1..99

DumpFile

MasterTable

Schema

Page 13: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 13Gunther Pippèrr © 2015 http://www.pipperr.de

Im Detail

Page 14: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 14Gunther Pippèrr © 2015 http://www.pipperr.de

Ablauf Shadow-Prozess

Client startet DB-Prozess (Shadow-Prozess)

Mit DBMS_DATAPUMP.open wird ein neuer Job

angelegt

Die AQ-Tabellen werden angelegt

Die Master-Tabelle wird angelegt

– Log-Tabelle des gesamten Export Vorganges mit den Namen

des Export-Jobs

– Tabelle wird in den Export aufgenommen und dann gelöscht

(muss daher auch immer in eine Export Datei passen!)

Der Master-Control-Prozess gestartet

Page 15: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 15Gunther Pippèrr © 2015 http://www.pipperr.de

Ablauf MCP Master Control Process

Ein Kontroll-Prozess pro Job zuständig

– Prozessname: <instance>_DMnn_<pid>

Überwacht und startet die Worker-Prozesse

Überwacht das Datei-Handling

– Legt neue Dateien an

Berechtigung beachten – Dateien werden unter dem User angelegt unter demdie Datenbank Prozesse auch gestartet wurden!

Im Oracle Real Applikation Cluster muss der Cluster Owner auch Schreibrechte auf das gewünschte Verzeichnis haben!

Page 16: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 16Gunther Pippèrr © 2015 http://www.pipperr.de

Ablauf Worker-Prozesse

Es können mehrere Prozesse pro Job gestartet

werden

– Prozessname: <instance>_DWnn_<pid>

Datenstrukturen der zu exportierenden Objekte

werden extrahiert ( DBMS_METADATA)

Daten werden ausgelesen und in die DB oder

Datendateien geschrieben

Nur Enterprise Edition!

Page 17: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 17Gunther Pippèrr © 2015 http://www.pipperr.de

Ausführung Worker-Prozesse

Der Export wird mit Direct-Path-Export oder External

Table von den Worker-Prozessen durchgeführt

Die Export-Datei kann in bis zu 99 einzelne Dateien

zerlegt werden

– dumpfile=exportname_%U.dmp filesize=650MB

Page 18: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 18Gunther Pippèrr © 2015 http://www.pipperr.de

Monitoring (1)

Jobs in der DB überwachen

– Views:

DBA_DATAPUMP_JOBS

DBA_DATADUMP_SESSIONS

Interaktiver Modus

– Mit CTRL-C laufenden Client in den interaktiven Modus

versetzen

– Mit attach=<JOB_NAME> an den laufenden Export

andocken

Page 19: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 19Gunther Pippèrr © 2015 http://www.pipperr.de

Monitoring (2)

Kommando „Status“ des Clients

Export> status

Job: SYS_EXPORT_SCHEMA_01

Operation: EXPORT

Mode: SCHEMA

State: EXECUTING

Bytes Processed: 0

Current Parallelism: 1

Job Error Count: 0

Dump File: /opt/oracle/products/10.2.0/rdbms/log/dptest.dmp

bytes written: 4.096

Worker 1 Status:

State: EXECUTING

Object Schema: BHGVK2

Object Name: MYTEST

Object Type: SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE

Completed Objects: 2

Total Objects: 2

Worker Parallelism: 1

Mit „CTRL-C“ in den Kommando Modus wechseln

Page 20: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 20Gunther Pippèrr © 2015 http://www.pipperr.de

Ein Performance-Vergleich

Export einer 2,3 GB großen Datenbank

Versuch EXP

Versuch EXPD

PS> Measure-Command { exp "'/ as sysdba'" full=yes file=full_exp.dmp }

PS> Measure-Command { expdp "'/ as sysdba'" FULL=YES

DIRECTORY=WORK_EXPORT DUMPFILE=full_expdp.dmp }

Ergebnis:- Datapump sollte in der Regel schnell sein- Dumpfile-Größe bei Data Pump kleiner

Dump File ca. 209 MB

Dump File ca. 83,9 MB

Minutes : 4Seconds : 48Milliseconds : 681

Minutes : 5Seconds : 47Milliseconds : 716

Page 21: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 21Gunther Pippèrr © 2015 http://www.pipperr.de

Die Top Features von Oracle Data Pump

Parallele Ausführung auf dem Server möglich

Direkte Kontrolle über die Ausführung durch

dedizierten Kontrollprozess

– Status-Übersicht

– Restart eines Prozesses

– Neue Worker-Prozesse hinzufügen

Hauptnachteil:

Zugang zum Server wird benötigt, die Export Daten werden auf dem Server erstellt

Lösung: Share auf das die DB schreiben kann und alle lesen können

Page 22: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 22Gunther Pippèrr © 2015 http://www.pipperr.de

Der Praktische Einsatz von Data Pump

Wie kann ich das am besten täglich

verwenden

Page 23: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 23Gunther Pippèrr © 2015 http://www.pipperr.de

Vorbereitung – Directory Objekt für den Export

Einmalige Vorbereitung

– Anlegen eines Export Verzeichnisses im Betriebssystem

• Schreib- und Leserechte für den Oracle DB Prozess Owner auf den

Directory einrichten!

– DB SYS User: Erstellen eines Datenbank Directory Objects

das auf diese Export Verzeichnis zeigt

• Rechte an den Export User vergeben falls nicht mit SYS exportiert

werden soll

sqlplus / as sysdba

create directory WORK_EXPORT as 'D:\datapump_workshop';

grant read,write on directory WORK_EXPORT to GPI;

Page 24: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 24Gunther Pippèrr © 2015 http://www.pipperr.de

Vorbereitung – Rechte für den Export User

Um nur seine eigenen Objekte zu exportieren

– Rolle CONNECT + RESOURCE + Schreibrechte auf dem

eigenen Default Tablespace

Um alle Objekte der Datenbank zu

exportieren/importieren

– Rolle EXP_FULL_DATABASE und IMP_FULL_DATABASE

sqlplus / as sysdba

grant CONNECT to GPI;

grant RESOURCE to GPI;

alter user GPI quota 10G on users;

grant EXP_FULL_DATABASE to GPI;

grant IMP_FULL_DATABASE to GPI;

Page 25: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 25Gunther Pippèrr © 2015 http://www.pipperr.de

Export

Die Daten extrahieren

Page 26: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 26Gunther Pippèrr © 2015 http://www.pipperr.de

Logisches Backup – Einen User exportieren(1)

Aufgabe: Daten sollen täglich gesichert werden und

bei Bedarf wieder eingespielt werden

Problem: Alle Tabellen müssen im gleiche Stand zu

einander konsistent gesichert werden!

– Sonst passen zum Beispiel die Master Detail Beziehungen

nicht zu einander!

Lösung A: Während der Sicherung wird die Applikation

angehalten

Lösung B: Die Daten werden transaktional zum

Zeitpunkt X exportiert, unabhängig davon die lange

der eigentliche Export dauert!

Wenig praktikabel

So sollte das immer durchgeführt werden!Funktioniert aber nur mit ausreichenden Ressourcen im Rollback Segment

Page 27: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 27Gunther Pippèrr © 2015 http://www.pipperr.de

Zusätzlich ausdem UNDO Segment die alten Daten lesen

Konsistenter Export

Alle Tabelle zum gleichen Zeitpunkt exportieren

Zeit =>

B

C

A

Start Time = SCN

Tabelle A Tabelle B Tabelle C

Daten werde verändert Daten werde verändert

Export File

ORA-01555 „Snapshot Too Old“ Risiko!

FLASHBACK_TIME=SYSTIMESTAMP

FLASHBACK_SCN=582159018

Page 28: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 28Gunther Pippèrr © 2015 http://www.pipperr.de

Logisches Backup – Einen User exportieren(2)

Eine Steuerdatei für den Export erstellen

– Steuerdatei in einem Editor erstellen#Wo soll der Export landen und wie soll der Export heißen

DIRECTORY=WORK_EXPORT

DUMPFILE=gpi_user_export.dmp

LOGFILE=gpi_user_export.log

#Welchen Namen soll der Export in der DB erhalten

#Welchen Name bekommt die Metadaten Tabelle

JOB_NAME=gpi_user_export_05_12_2015

#führe einen konsistenten Export zu diesem Zeitpunkt aus

FLASHBACK_TIME=SYSTIMESTAMP

#Welcher User soll exportiert werden

SCHEMAS=GPI,SCOTT

#Optional, sollen bereits bestehende Exports überschrieben werden

REUSE_DUMPFILES=YES

#Performance

EXCLUDE=STATISTICS

METRICS=YES

Empfehlung: Möglichst immer Steuerdatei statt Kommando Zeilen Übergabe verwenden!

Page 29: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 29Gunther Pippèrr © 2015 http://www.pipperr.de

Logisches Backup – Eine User exportieren(3)

Den Export starten

– Export als SYS lokal aufrufen

– Export als GPI User über SQL*Net

export ORACLE_SID=GPI

$ORACLE_HOME/bin/expdp "'/ as SYSDBA'" parfile=~/export_gpi_user.dpctl

$ORACLE_HOME/bin/expdp gpi/gpi@gpi parfile=~/export_gpi_user.dpctl

Page 30: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 30Gunther Pippèrr © 2015 http://www.pipperr.de

Die Größe eines Exports vorab berechnen

Parameter ESTIMATE_ONLY=YES

– Parameterdatei

#Wo soll der Log von dem Test Export liegen

DIRECTORY=WORK_EXPORT

LOGFILE=gpi_user_export_calculate.log

#Welchen Namen soll der Export erhalten in der DB erhalten

JOB_NAME=gpi_user_export_05_12_2015

#Für welche User soll der Test Export durchgeführt werden

SCHEMAS=GPI,GPI2

#Nur schätzen!

ESTIMATE_ONLY=YES

Objekttyp SCHEMA_EXPORT/TABLE/TABLE_DATA wird verarbeitet

. geschätzt "GPI"."TGPI" 12 MB

. geschätzt "GPI2"."TGPI2" 12 MB

Gesamte Schätzung mit BLOCKS Methode: 24 MB

Auszug aus der Logdatei:

Page 31: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 31Gunther Pippèrr © 2015 http://www.pipperr.de

1 – 99 Export-Datei erzeugen mit %U

%U und FILESIZE

– Parameterdatei#Wo soll der Export landen und wie soll der Export heißen

DIRECTORY=WORK_EXPORT

#Export in 1MB große Files zerlegen

DUMPFILE=gpi_user_export_%U.dmp

FILESIZE=1M

LOGFILE=gpi_user_export.log

#Welchen Namen soll der Export erhalten in der DB erhalten

JOB_NAME=gpi_user_export_05_12_2015

#führe einen konsistenten Export zu diesem Zeitpunkt aus

FLASHBACK_TIME=SYSTIMESTAMP

#Welcher User soll

exportiert werden

SCHEMAS=GPI,GPI2

Page 32: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 32Gunther Pippèrr © 2015 http://www.pipperr.de

Export komprimieren

Parameter COMPRESION

– COMPRESSION=[ALL | DATA_ONLY | METADATA_ONLY |

NONE]

• ALL enables compression for the entire export operation. The ALL

option requires that the Oracle Advanced Compression option be

enabled.

• DATA_ONLY results in all data being written to the dump file in

compressed format. The DATA_ONLY option requires that the Oracle

Advanced Compression option be enabled.

• METADATA_ONLY results in all metadata being written to the dump

file in compressed format. This is the default.

• NONE disables compression for the entire export operation.

https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL838

Page 33: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 33Gunther Pippèrr © 2015 http://www.pipperr.de

Export parallelisieren

Parameter PARALLEL

– Default 1

– Sinnvolle Werte max. CPU Anzahl

Nur mit der Enterprise Edition der Datenbank

Page 34: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 34Gunther Pippèrr © 2015 http://www.pipperr.de

Nur die Metadaten exportieren

Parameter CONTENT=METADATA_ONLY

– Nur die DDL‘s aller DB Objekte werden exportiert

Page 35: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 35Gunther Pippèrr © 2015 http://www.pipperr.de

Nur Teile der Daten exportieren

Zum Beispiel um nur eine Teil der Produktion als Test

Daten einspielen, z.B. nur 10%

– Parameter

SAMPLE=[[schema_name.]table_name:]sample_percent

Nur bestimmte Daten exportieren

– Parameter

QUERY = [schema.][table_name:] query_clause

QUERY=employees:"WHERE department_id > 10 AND salary > 10000"

SAMPLE=scott.employees:10

Page 36: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 36Gunther Pippèrr © 2015 http://www.pipperr.de

Zwischen verschiedene DB Version exportieren

Parameter VERSION

Export

– Daten werden so exportiert, das diese wieder in die „ältere“

Version importiert werden können

– Beispiel : VERSION=10.1.0.0.0

Quelle 12c Ziel 10g R1

Page 37: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 37Gunther Pippèrr © 2015 http://www.pipperr.de

Wie löst Data Pump Abhängigkeiten auf?

Siehe View:

Database/Schema/Table_EXPORT_OBJECTS

SQL> select object_path,comments

from table_export_objects

where object_path like 'TABLE%';

OBJECT_PATH COMMENTS

-------------------- ----------------------------------------

TABLE/AUDIT_OBJ Object audits on the selected tables

TABLE/COMMENT Table and column comments on the selecte

d tables

TABLE/CONSTRAINT Constraints (including referential const

raints)

TABLE/CONSTRAINT/REF Referential constraints

_CONSTRAINT

TABLE_EXPORT/TABLE/A Object audits on the selected tables

Page 38: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 38Gunther Pippèrr © 2015 http://www.pipperr.de

Filter für DB-Objekte

Erweiterte Auswahl von Filtern für DB-Objekte

– Mit include und exclude können für alle DB-Objekte

Filterregeln gesetzt werden

Siehe auch Metalink Doc ID 341733.1

EXCLUDE = object_type[:name_clause] [, ...]

INCLUDE = object_type[:name_clause] [, ...]

SCHEMAS=scott EXCLUDE=SEQUENCE, TABLE:"IN ('EMP', 'DEPT')"

SCHEMAS=scott INCLUDE=FUNCTION, PACKAGE, PROCEDURE, TABLE:"=

'EMP'"

Beispiele:

Entweder include ODER

exclude!

Page 39: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 39Gunther Pippèrr © 2015 http://www.pipperr.de

Nach was kann gefiltert werden?

Nur entweder nach EXCLUDE oder INCLUDE

Je nach Export Type kann nach dem folgenden

gefiltert werden:

Job_type: het_type:• FULL => DATABASE_EXPORT

• SCHEMA => SCHEMA_EXPORT

• TABLE => TABLE_EXPORT

• TRANSPORTABLE => TRANSPORTABLE_EXPORT

select seq_num

, full_path

, het_type

from sys.datapump_paths

order by het_type,seq_num

/

Page 40: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 40Gunther Pippèrr © 2015 http://www.pipperr.de

Beispiel Exclude – Keine Statistiken exportieren

Parameter „exclude=statistics”

– Keine Statistiken exportieren

Page 41: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 41Gunther Pippèrr © 2015 http://www.pipperr.de

Import

Daten wieder importieren

Page 42: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 42Gunther Pippèrr © 2015 http://www.pipperr.de

Export wieder einspielen – Daten ersetzen(1)

Die tägliche logische Sicherung der Daten soll wieder

in die Datenbank unter dem gleichen User eingespielt

und dabei sollen alle Daten ersetzen werden

– Eine Steuerdatei für den Import erstellenDIRECTORY=WORK_EXPORT

DUMPFILE=gpi_user_export.dmp

LOGFILE=gpi_user_import.log

#Welchen Namen soll der Export erhalten in der DB erhalten

JOB_NAME=gpi_user_import_05_12_2015

#Welcher User soll importiert werden

SCHEMAS=GPI

#Was soll mit existierenden Tabellen passieren?

TABLE_EXISTS_ACTION=REPLACE

Page 43: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 43Gunther Pippèrr © 2015 http://www.pipperr.de

Export wieder einspielen – Optionen (2)

Was soll mit existierenden Tabellen passieren?

Parameter

– TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE |

REPLACE]

• SKIP = Überspringen

• APPEND = Daten anhängen

• TRUNCATE = Lösche die Daten und importiere

• REPLACE = Drop Table und importiere

Default

Page 44: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 44Gunther Pippèrr © 2015 http://www.pipperr.de

Export in ein anderes User Schema einspielen

Parameter REMAP_SCHEMA

– <Quelle im export file>:<Ziel Schema in der Datenbank>

– Ziel muss nicht existieren, wird angelegt falls der Import User

genügend Rechte hat (wie Import mit SYS)

– Es können gleichzeitig auch Quellen in ein Ziel importiert

werdenDIRECTORY=WORK_EXPORT

DUMPFILE=scott_user_export.dmp

LOGFILE=gpi_user_import.log

#Welchen Namen soll der Export erhalten in der DB erhalten

JOB_NAME=scott_user_import_05_12_2015

#Welcher User soll importiert werden

REMAP_SCHEMA=GPI:GPI3

REMAP_SCHEMA=GPI2:GPI3

#Was soll mit existierenden Tabellen passieren?

TABLE_EXISTS_ACTION=REPLACE

Page 45: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 45Gunther Pippèrr © 2015 http://www.pipperr.de

Beispiel Include – Nur eine Tabelle importieren

Parameter

schemas=hr include=table/table:\"= \'EMPLOYEES\'\“

– Nur die Tabelle wird importiert

Parameter

schemas=hr include=table:\"= \'EMPLOYEES\'\"

– Tabelle + alle Objekte im Pfad werden importiert

Im Pfad wird gefunden…SCHEMA_EXPORT/TABLE/TABLESCHEMA_EXPORT/TABLE/TABLE_DATASCHEMA_EXPORT/TABLE/GRANTSCHEMA_EXPORT/TABLE/INDEX….

Page 46: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 46Gunther Pippèrr © 2015 http://www.pipperr.de

Tabellen beim Import umbenennen

Parameter REMAP_TABLE

– Beispiel

REMAP_TABLE=emp:mitarbeiter

Page 47: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 47Gunther Pippèrr © 2015 http://www.pipperr.de

SQL/DDL aus einem Export extrahieren

Import nur des SQL‘s des Exports in eine Log Datei

Nur zum Beispiel

Tabellen DDL erzeugen

– Parameter include=TABLE

impdp "'/ as sysdba'" directory=WORK_EXPORT

dumpfile=GPI_USER_EXPORT_%U.DMP

sqlfile=gpi_script.sql

Page 48: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 48Gunther Pippèrr © 2015 http://www.pipperr.de

DDL-Transformation beim Import

Objekt-Meta-Daten werden als XML-Datei gespeichert

Durch eine XSL-Transformation werden während dem

Import Eigenschaften geändert

IMPDP stellt zur Verfügung

– REMAP_SCHEMA

(wie fromUser/toUser beim alten IMP)

– REMAP_TABLESPACE,REMAP_DATAFILE

– TRANSFORM=<storge Klausel>

Damit können die Storage-Klauseln entfernt werden

Page 49: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 49Gunther Pippèrr © 2015 http://www.pipperr.de

Job Control

Exp/Imp kontrollieren und überwachen

Page 50: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 50Gunther Pippèrr © 2015 http://www.pipperr.de

Einen Export Job nur initialisieren

Parameter ABORT_STEP

– -1 Nur Meta Daten Tabelle anlegen

– <n> = Export durchführen bis zu dieser Process Number in

der Master table

Job Tabelle wird unter dem Export User angelegt:

Page 51: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 51Gunther Pippèrr © 2015 http://www.pipperr.de

An eine Job wieder anknüpfen

Parameter ATTACH

– An den Job nun anknüpfen

– Im Interaktiven Modus jetzt starten und Log Ausgaben

anzeigen lassen

• STATUS => Zeigt den Status

• START_JOB => Startet den Job erneut

• CONTINUE_CLIENT => Job läuft im Client Modus weiter

expdp "'/ as sysdba'" ATTACH=GPI_USER_EXPORT_05_12_2015

Page 52: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 52Gunther Pippèrr © 2015 http://www.pipperr.de

Job Control mit Ctr-C starten

Mit Ctrl-C kann der Job in den Interaktiven Modus

versetzt werden

The following commands are valid while in interactive mode.

Note: abbreviations are allowed

Command Description

------------------------------------------------------------------------------

ADD_FILE Add dumpfile to dumpfile set.

CONTINUE_CLIENT Return to logging mode. Job will be re-started if idle.

EXIT_CLIENT Quit client session and leave job running.

FILESIZE Default filesize (bytes) for subsequent ADD_FILE commands.

HELP Summarize interactive commands.

KILL_JOB Detach and delete job.

PARALLEL Change the number of active workers for current job.

PARALLEL=<number of workers>.

START_JOB Start/resume current job.

STATUS Frequency (secs) job status is to be monitored where

the default (0) will show new status when available.

STATUS[=interval]

STOP_JOB Orderly shutdown of job execution and exits the client.

STOP_JOB=IMMEDIATE performs an immediate shutdown of the

Data Pump job.

Page 53: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 53Gunther Pippèrr © 2015 http://www.pipperr.de

Eine Job beenden

Mit „Ctr-C“ oder mit ATTACH eine Job Console öffenen

Mit „KILL_JOB“ den Job beenden

Achtung!

Möglichst IMMER sauber den Job so beenden!

Ansonsten können Leichen/Reste der Jobs in den DB verbleiben wie zum Beispiel die Metadaten Tabelle oder gelegentlich auch mal ein Worker Prozesse!

Page 54: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 54Gunther Pippèrr © 2015 http://www.pipperr.de

Restart

Ein Restart ist immer dann möglich wenn:

– Die Master-Table ist noch intakt

– Die Dump file Set noch in Ordnung

Neustart mit:

– Ein Client kann sich über „ATTACH=<job_name>“ wieder

verbinden

– Bei Problemen mit dem letzten zu exportierenden Objekt

kann mit „START=SKIP_CURRENT“ dieses übersprungen

werden

In Informationen über den Job sind immer in der aktuellen Master-Tabelle hinterlegt!

Page 55: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 55Gunther Pippèrr © 2015 http://www.pipperr.de

Weitere Features

Noch mehr Möglichkeiten

Page 56: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 56Gunther Pippèrr © 2015 http://www.pipperr.de

Der Netzwerk-Modus

Daten zwischen zwei Instanzen austauschen

– Nur zwischen gleiche DB-Versionen zu empfehlen

– Datenaustausch über DB-Link

– Daten werden über „insert as select“ kopiert

– Kann auch Remote „read only“ DBs exportieren, wenn die

Ziel-Instanz die Jobs steuert

– Keine Unterstützung für LONG/LONG RAW

Page 57: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 57Gunther Pippèrr © 2015 http://www.pipperr.de

Beispiel Netzwerk Modus

Kein Export notwendig

Aufruf mit Import

Parameter NETWORK_LINK=<Source DB>

Ziel Quelle

DB Link auf die Quell Datenbank =>

impdp "'/ as sysdba'"

DIRECTORY=WORK_EXPORT

NETWORK_LINK=MYSOURCE

LOGFILE=NET_IMPORT_PRODDEV.LOG

EXCLUDE=STATISTICS

REMAP_SCHEMA=SCOTT:SCOTT2

MYSOURCE

Page 58: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 58Gunther Pippèrr © 2015 http://www.pipperr.de

Performance-Überlegungen

I/O-Bandbreite ist der wichtigste Faktor

– DUMP File auf einen anderen Bereich als die Datendateien

legen

– Mehrere Dump File Locations angeben

Etwas mehr SGA für die JOB-Ausführung

Auf genügend Platz in den Rollback -Segmenten

achten

Page 59: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 59Gunther Pippèrr © 2015 http://www.pipperr.de

Performance-Überlegungen

Ausführungszeiten anzeigen lassen– METRICS=YES

Export:– Statistiken nicht exportieren

• EXCLUDE=STATISTICS

Import– Indexes erste nachträglich erstellen

• EXCLUDE=INDEXES

– SQL aus dem Export extrahieren • INCLUDE=INDEXES SQLFILE=indexes.sql

– SQL überarbeiten und parallel ausführen

Page 60: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 60Gunther Pippèrr © 2015 http://www.pipperr.de

Trace für Data Pump anlegen

Mit „trace=480300“ kann für den Master Control

Process (MCP) und den Worker-Prozess ein Trace

angelegt werden

Metalink Doc ID: Note:286496.1

Page 61: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 61Gunther Pippèrr © 2015 http://www.pipperr.de

Sicherheitsüberlegungen

Problematik des Überschreibens und das Anlegen von

Dateien im Betriebssystem

– Dateien werden mit den Rechten des Oracle-Prozesses in

Verzeichnisse geschrieben

Page 62: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 62Gunther Pippèrr © 2015 http://www.pipperr.de

Bekannte Probleme

Export / Import von Objekt-Typen

Lösung: Neue OID errechnen lassen mit:– Parameter transform=OID:n:type

ORA-39083: Objekttyp TYPE konnte nicht erstellt werden,

Fehler:

ORA-02304: Ungültiges Objektidentifizierungsliteral

Fehlerhafte SQL ist:

CREATE TYPE "OE9"."CUST_ADDRESS_TYP" OID

'88A4AF6A4CD1656DE034080020E0EE3D'

AS OBJECT

( street_address VARCHAR2(40)

, postal_code VARCHAR2(10)

, city VARCHAR2(30)

, state_province VARCHAR2(10)

, country_id CHAR(2)

);

Page 63: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 63Gunther Pippèrr © 2015 http://www.pipperr.de

Neue Feature mit 12c - Export

Eine View als Table

– Parameter

• VIEWS_AS_TABLES=[schema_name.]view_name[:table_name],

Page 64: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 64Gunther Pippèrr © 2015 http://www.pipperr.de

Neue Feature mit 12c - Import

Nologging Mode beim Import

– Parameter transform=disable_archive_logging:y

– Weniger Archive Logs beim Import

– Original Settings auf dem DB Objekten werden nach dem

Import wieder hergestellt

Page 65: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 65Gunther Pippèrr © 2015 http://www.pipperr.de

Neue Feature mit 12c

Log mit Zeitstempel

– Parameter logtime=all

– Timestamp bei jeder Operation

LOB nach Securefile transformieren

– Parameter transform=lob_storage:securefile

Page 66: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 66Gunther Pippèrr © 2015 http://www.pipperr.de

Data Pump aus der DB aufrufen

Eine Export per PL/SQL durchführen

Page 67: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 67Gunther Pippèrr © 2015 http://www.pipperr.de

Das Package DBMS_DATAPUMP

Starten und verwalten von Import/Export aus der

Datenbank heraus

Benötigte Rollen: • EXP_FULL_DATABASE

• IMP_FULL_DATABASE

Job anlegen mit: dbms_datapump.open

Page 68: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 68Gunther Pippèrr © 2015 http://www.pipperr.de

Einen Export aus der DB aufrufen

Starten des Export-Jobs in der DBDECLARE

h1 NUMBER; -- Data Pump job handle

BEGIN

h1 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'JOBNAME','LATEST');

DBMS_DATAPUMP.ADD_FILE( handle => h1

, filename =>'GPI_DBINTERN.dmp'

, directory => 'WORK_EXPORT'

, filetype => 1 );

Dbms_DataPump.Add_File( handle => h1

, filename => 'expdp_plsql.log'

, directory => 'WORK_EXPORT'

, filetype => 3 );

DBMS_DATAPUMP.METADATA_FILTER(h1,'SCHEMA_EXPR','IN (''GPI'')');

DBMS_DATAPUMP.START_JOB(h1);

END;

/

Typ 3 :Log

Datei

Typ 1 :ExportDateiKU$_FILE_TYPE_DUMP_FILE

KU$_FILE_TYPE_LOG_FILE

Page 69: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 69Gunther Pippèrr © 2015 http://www.pipperr.de

Mit dem SQL*Developer DP Skripte erzeugen

DBA Tools verwenden

Import Wizard kann auch den Inhalt von einem Dump lesen!

Page 70: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 70Gunther Pippèrr © 2015 http://www.pipperr.de

Mit dem SQL*Developer DP Skripte erzeugen

Skripte werden über eine Job auf der Datenbank

heraus ausgeführt

Demo

Page 71: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 71Gunther Pippèrr © 2015 http://www.pipperr.de

External Table mit Data Pump

Datenaustausch zwischen Datenbanken

Archivieren von Alt Daten

Page 72: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 72Gunther Pippèrr © 2015 http://www.pipperr.de

Externe Tabelle mit Data Pump anlegen

Externe Tabelle vom Type oracle_datapump anlegen

Abfragen:

CREATE TABLE tgpi_export

ORGANIZATION EXTERNAL

(

TYPE oracle_datapump

DEFAULT DIRECTORY WORK_EXPORT

LOCATION ('tgpi_export_table.dmp')

)

AS

SELECT * FROM TGPI;

select count(*) from TGPI;

Mit Oracle 12c Kompression möglich (Lizenz pflichtig!)ACCESS PARAMETERS (COMPRESSION ENABLED MEDIUM)

Page 73: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 73Gunther Pippèrr © 2015 http://www.pipperr.de

Externe Tabelle einbinden

In einer anderen DB wieder einbinden

CREATE TABLE tgpi_export(

-- Spalten Definition

)

ORGANIZATION EXTERNAL

(

TYPE oracle_datapump

DEFAULT DIRECTORY WORK_EXPORT

LOCATION ('tgpi_export_table.dmp')

)

/

Select count(*) from tgpi_export

/

Page 74: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 74Gunther Pippèrr © 2015 http://www.pipperr.de

Einsatz

Archivierung von Tabellen

– Vorteil:

• Tabelle ist Read Only

• Datenbank wird kleiner (Backup Volumen!)

– Nachteil:

• Langsamer

Transport von Daten

Page 75: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 75Gunther Pippèrr © 2015 http://www.pipperr.de

Transportable Tablespace

Datendateien austauschen

Page 76: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 76Gunther Pippèrr © 2015 http://www.pipperr.de

Transportable Tablespaces

Schnellste Möglichkeit Daten zwischen zwei

Datenbanken auszutauschen

Mit Storage Snapshot Techniken lassen sich TeraByte

an Daten in Sekunden austauschen

– Mit expdp werden nur die Meta Daten erzeugt

– Datendatei zur neuen Datenbank kopieren

• Tipp: ocopy unter Windows verwenden um geöffnete Dateien zu

kopieren

– Datendatei in der neuen Umgebung wieder einbinden

Page 77: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 77Gunther Pippèrr © 2015 http://www.pipperr.de

Voraussetzung bzw. Nachteil

Gleicher Zeichensatz zwischen den Datenbanken

Gleiche BIG/Little Endian Daten Darstellung

Alle transportieren Objekte haben keine

Abhängigkeiten zu anderen Tablespaces wie Indexes

etc.

Daten werden nicht automatisch reorganisiert

Ablauf siehe z.B.:http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/tts/index.html

Page 78: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 78Gunther Pippèrr © 2015 http://www.pipperr.de

Data Masking mit Data Pump

Daten beim laden verändern

Page 79: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 79Gunther Pippèrr © 2015 http://www.pipperr.de

Daten beim Import manipulieren

Parameter REMAP_DATA

– REMAP_DATA=[schema.]tablename.column_name:[schema

.]pkg.function

Daten können bei Import mit einer in der DB

hinterlegten eigenen Funktion manipuliert werden

DIRECTORY=WORK_EXPORT

DUMPFILE=gpi_user_export.dmp

LOGFILE=gpi_user_import.log

#Welchen Namen soll der Export erhalten in der DB erhalten

JOB_NAME=gpi_user_import_05_12_2015

#Welcher User soll importiert werden

SCHEMAS=GPI

#Daten mit einer Funktion ersetzen

REMAP_DATA=hr.mitarbeiter.geburstdatum:hr.dataMappingFunction

Page 80: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 80Gunther Pippèrr © 2015 http://www.pipperr.de

Zusammenfassung

Was bringt uns das?

Page 81: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 81Gunther Pippèrr © 2015 http://www.pipperr.de

Vor- und Nachteile

Vorteil:

– Ausführung aus PL/SQL über eigene API

– Restart möglich

– Wesentlich performanter

Nachteil:

– Je nach dem, läuft nur auf dem Server

Page 82: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 82Gunther Pippèrr © 2015 http://www.pipperr.de

Zusammenfassung

Export/Import direkt aus der Datenbank ausführen

Wesentlich bessere Steuerung als mit IMP/EXP

Deutlich bessere Performance

Page 83: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 83Gunther Pippèrr © 2015 http://www.pipperr.de

AF&Fragen

Antworten

Oracle Data Pump

Page 84: Introduction into Oracle Data Pump 11g/12c - Export and Import Data

Seite 84Gunther Pippèrr © 2014 http://www.pipperr.de

Gunther Pippèrr - IT-Architekt - Berater

• High-Tech• Real Estate• Utility• Communications

• IT System Architekt • Technische Projektleitung• Design und Implementierung

von Datenbank Anwendungen

• Entwurf und Umsetzung von IT Infrastrukturen zum Datenmanagement

Gunther Pippèrr arbeitet seit mehr als 16 Jahre intensiv mit den Produkten der Firma Oracle im Bereich Datenbanken/Applikationsserver und Dokumenten-Management.

Herr Pippèrr hat sich tiefes Wissen über den Aufbau komplexer IT Architektur aneignen können und hat dieses in der Praxis erfolgreich umgesetzt.

Herr Pippèrr hat eine Abschluss als Dipl. Ing. Technische Informatik (FH) an der FH Weingarten.

Industry Expertise

Background

Functional Expertise

Datenbank Architekt für ein Projekt zur Massendatenverarbeitung in der Telekommunikation

Architekt und technische Projektverantwortung für ein Smart Metering Portal für das Erfassen von Energiezählerdaten und Asset Management

Architekt und Projektleitung , Datenbank Design und Umsetzung für die Auftragsverwaltung mit Steuerung von externen Mitarbeitern für den Sprachdienstleister von deutschen Technologiekonzern

Architekt und technische Projektverantwortung für IT Infrastrukturprojekte, z.B.:

Zentrale Datenhaltung für Münchner Hotelgruppe mit über 25 Hotels weltweit,

Redundante Cluster Datenbank Infrastrukturen für diverse größere Web Anwendungen wie Fondplattform und Versicherungsportale, Loyalty Card Anwendungen

CRM- und Ausschreibungsportal für großen Münchner Bauträger

Selected Experience

http://www.pipperr.dehttp://orapowershell.codeplex.com

Web