View
5
Download
0
Category
Preview:
Citation preview
Seite 1 Gunther Pippèrr © 2010 http://www.pipperr.de
ORACLE DATA PUMP Moden Exportieren und Importieren
0101
1010101
0101011010
11010110100011
1010101101000000
1000101010101000000
1001110101010000000001
0110101110010100000000001
0101101000110100100000000010
1010010101000111010100000000010
0110101010010000011000000000000101
1011010101010010101000000000000000001
1000011111010010101010100000000000000101
0000110011110100000000000000000000000000000
0100000110001111111111111110010100000000000101
Seite 2 Gunther Pippèrr © 2010 http://www.pipperr.de
Agenda
Imp und Exp – Vergangenheit und Zukunft
Architektur und Grundlagen
Erweiterte Funktionen
Seite 3 Gunther Pippèrr © 2010 http://www.pipperr.de
IMP und EXP
Importieren und Exportieren wie gehabt
Wird vorerst weiter unterstützt
Seite 4 Gunther Pippèrr © 2010 http://www.pipperr.de
Probleme bei Imp/Exp
Schwieriger Neustart bei einem Fehler
Ausführung vom Client 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
Seite 5 Gunther Pippèrr © 2010 http://www.pipperr.de
Wo ist DataPump verfügbar?
Feature des Database Core 10g
– 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
Seite 6 Gunther Pippèrr © 2010 http://www.pipperr.de
Die ersten Schritte
Einen einfachen Export durchführen
1. Versuch (wie gewohnt)
oracle@ncidb01:~> 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
Seite 7 Gunther Pippèrr © 2010 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:=>
Seite 8 Gunther Pippèrr © 2010 http://www.pipperr.de
Die ersten Schritte
Sicherung nach DATA_DUMP_DIR oracle@ncidb01:/opt/oracle/products/10.2.0> expdp 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
Seite 9 Gunther Pippèrr © 2010 http://www.pipperr.de
Die beteiligten Komponenten
expdp impdp Enterprise Manager
Weitere - Client
DBMS_DATAPUMP
Loader
External Table API
DataPump
Direct Path API Metadata API: DBMS_METADATA
Data/Metadata movement engine
Data Pump
Seite 10 Gunther Pippèrr © 2010 http://www.pipperr.de
Die Architektur
Der Export/Import wird über eigene Serverprozesse
auf dem Server durchgeführt
Kontrollprozess Worker Worker
CMD impdp/expdp
Datenbank Job Starten
Exp/Imp Prozess
DumpFile
1..n 1..99
DumpFile
Master Table
Schema
Seite 11 Gunther Pippèrr © 2010 http://www.pipperr.de
Im Detail Master Table
Logfile
Status Queue
control Queue
Master Kontrollprozess
Shadow process
DumpFile
DumpFile Set
Worker process 1
Worker process n
Worker process 2
CMD impdp/expdp
MCP
Seite 12 Gunther Pippèrr © 2010 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 auch immer in eine Export Datei passen!)
Der Master-Control-Prozess gestartet
Seite 13 Gunther Pippèrr © 2010 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
Seite 14 Gunther Pippèrr © 2010 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 aus / gelesen und in die DB oder
Datendateien geschrieben
Seite 15 Gunther Pippèrr © 2010 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
Seite 16 Gunther Pippèrr © 2010 http://www.pipperr.de
Monitoring (1)
Jobs in der DB überwachen
– Views:
DBA_DATAPUMP_JOBS
DBA_DATADUMP_SESSIONS
Seite 17 Gunther Pippèrr © 2010 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
Seite 18 Gunther Pippèrr © 2010 http://www.pipperr.de
Die wichtigsten Funktionen
Parallele Ausführung auf dem Server
Direkte Kontrolle über die Ausführung durch
dedizierten Kontrollprozess
– Status-Übersicht
– Restart eines Prozesses
– Neue Worker-Prozesse hinzufügen
Seite 19 Gunther Pippèrr © 2010 http://www.pipperr.de
Die Größe eines Exports berechnen
Parameterdatei
JOB_NAME=MYEXPORT
DIRECTORY=DATA_PUMP_DIR
LOGFILE=DATA_PUMP_DIR:GPI.explog
ESTIMATE_ONLY=Yes
.................
. estimated "GPI"."PRO_CON" 0 KB
. estimated "GPI"."PROJECTS" 0 KB
. estimated "GPI"."TASKS" 0 KB
. estimated "GPI"."TAS_PRO" 0 KB
Total estimation using BLOCKS method: 31.68 MB
Job "GPI"."GPIXXX" successfully completed at 14:36:05
Auszug aus der Logdatei:
oracle@ncidb01:~>expdp GPI/GPI@oradev parfile=mypar.dpctl
Seite 20 Gunther Pippèrr © 2010 http://www.pipperr.de
1 – 99 Export-Datei erzeugen mit %U
Parameterdatei
JOB_NAME=MYEXPORT
DIRECTORY=DATA_PUMP_DIR
DUMPFILE=DATA_PUMP_DIR:GPI_%U.dmp
LOGFILE=DATA_PUMP_DIR:GPI.explog
STATUS=20
FILESIZE=132K
oracle@ncidb01:~>expdp GPI/GPI@oradev parfile=mypar.dpctl
Dump file set for GPI.GPIXXX is: /opt/oracle/products/10.2.0/rdbms/log/GPI_01.dmp /opt/oracle/products/10.2.0/rdbms/log/GPI_02.dmp /opt/oracle/products/10.2.0/rdbms/log/GPI_03.dmp Job "GPI"."GPIXXX" successfully completed at 14:31:01
Auszug aus der Log-Datei:
Seite 21 Gunther Pippèrr © 2010 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!
Seite 22 Gunther Pippèrr © 2010 http://www.pipperr.de
DDL-Transformation
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
Seite 23 Gunther Pippèrr © 2010 http://www.pipperr.de
Einen Job steuern
Mit Ctrl-C kann der Job in den Edit-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.
Seite 24 Gunther Pippèrr © 2010 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 letzen zu exportierenden Objekt
kann mit „START=SKIP_CURRENT“ dieses übersprungen
werden
In Informationen über den Job sind immer in der aktuellen Master-Tabelle hinterlegt!
Seite 25 Gunther Pippèrr © 2010 http://www.pipperr.de
Das Package DBMS_DATAPUMP
Starten und verwalten von Import/Export aus der
Datenbank heraus
Benötigte Rollen: EXP_FULL_DATABASE und
IMP_FULL_DATABASE
Job anlegen mit: Dbms_DataPump.Open
Seite 26 Gunther Pippèrr © 2010 http://www.pipperr.de
Einen Export aus der DB aufrufen
Starten des Export-Jobs in der DB DECLARE
h1 NUMBER; -- Data Pump job handle
BEGIN
h1 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'JOBNAME','LATEST');
DBMS_DATAPUMP.ADD_FILE( handle => h1
, filename =>'GPI05.dmp'
, directory => 'DMPDIR'
, filetype => 1 );
Dbms_DataPump.Add_File( handle => h1
, filename => 'expdp_plsql.log'
, directory => 'DMPDIR'
, filetype => 3 );
DBMS_DATAPUMP.METADATA_FILTER(h1,'SCHEMA_EXPR','IN (''GPI'')');
DBMS_DATAPUMP.START_JOB(h1);
END;
/
Typ 3 : Log
Datei
Typ 1 : Export Datei KU$_FILE_TYPE_DUMP_FILE
KU$_FILE_TYPE_LOG_FILE
Seite 27 Gunther Pippèrr © 2010 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
Seite 28 Gunther Pippèrr © 2010 http://www.pipperr.de
Wie löst DataPump 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
Seite 29 Gunther Pippèrr © 2010 http://www.pipperr.de
Performance-Überlegungen
I/O-Bandbreite ist der wichtigste Faktor
– DUMP File auf einen anderen Bereich als die Datendateien
legen
Etwas mehr SGA für die JOB-Ausführung
Auf genügend Platz in den Rollback -Segmenten
achten
DUMPFILE=myDumpDirectory1:myExport%u.dmp ,myDumpDirectory1:myExport%u.dmp
Seite 30 Gunther Pippèrr © 2010 http://www.pipperr.de
Ein Performance-Vergleich
Export eines Schemas
Versuch EXP
Versuch EXPD
real 25m58.134s user 12m53.760s sys 4m50.485s
time exp bhgvk2@oradev file=test.dmp
real 6m11.165s user 0m0.311s sys 0m0.148s
time expdp sys@oradev schemas=bhgvk2 dumpfile=dptest.dmp
Ergebnis: - Datapump ca. 3-4 mal so schnell - Dumpfile-Größe ähnlich
Dump file ca. 1.033 MB
Dump File ca. 925 MB
Seite 31 Gunther Pippèrr © 2010 http://www.pipperr.de
Trace für DataPump 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
Seite 32 Gunther Pippèrr © 2010 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
Seite 33 Gunther Pippèrr © 2010 http://www.pipperr.de
Bekannte Probleme
Export / Import von Objekt-Typen 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)
);
Seite 34 Gunther Pippèrr © 2010 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
– Nur zu 10g kompatibel
– Für Installationsroutinen für das Verteilen eines Schematas
zu viel Vorarbeit notwendig
Seite 35 Gunther Pippèrr © 2010 http://www.pipperr.de
Zusammenfassung
Export/Import direkt aus der Datenbank ausführen
Wesentlich bessere Steuerung als mit IMP/EXP
Deutlich bessere Performance
Recommended