Oracle: Import Export

Aus Wikibooks


Es gibt das Kommandozeilenwerkzeug exp zum Exportieren einer Oracle Datenbank.

Dieser Export kann dann mit dem Kommandozeilenwerkzeug imp wieder eingespielt werden.

Ab der Version 10 kann Alternativ dazu auch der Enterprisemanager verwendet werden (Export und Import mit Hilfe des Webbrowsers, mir persönlich zu umständlich und unübersichtlich).

Bitte beachten sie, dass bei Oracle 8 und 9 die Datenbank (hinter dem @) angegeben werden muss. Bei der Version 10 ist das nicht erforderlich, hierbei muss allerdings der Datenbankname als Umgebungsvariable zur Verfügung stehen. z.B. unter Linux/Unix export ORACLE_SID=$dbname

Des Weiteren besteht die Möglichkeit bei vielen Parametern y oder yes zu verwenden.

Grundsätzlich gibt es vier verschiedene Modi:

  • full - vollständiger Export bzw. Import, meistens durch den User system durchgeführt.
  • user - nur die Datenbankobjekte exportieren bzw. importieren, die diesem User gehören
  • table - einzelne Tabellen exportieren bzw. importieren
  • tablespace - einzelne Tablespaces exportieren bzw. importieren

exp[Bearbeiten]

Syntax:

exp $username/$password@$dbname $expModes $expOpts

Hilfe:

exp help=y

$expModes:

full=y | owner=$username | tables=$tableName1,$tableName2 | tablespaces=$tableSpaceName1,$tableSpaceName2

$expOpts:

LOG=filename COMPRESS=Y|N ROWS=Y|N QUERY=SQL_string DIRECT=Y|N FEEDBACK=integer STATISTICS=COMPUTE|ESTIMATE|NONE INDEXES=Y|N CONSTRAINTS=Y|N GRANTS=Y|N 
TRIGGERS=Y|N CONSISTENT=Y|N OBJECT_CONSISTENT=Y|N FLASHBACK_SCN=SCN_number FLASHBACK_TIME=DATE BUFFER=Integer RESUMABLE=Y|N 
RESUMABLE_NAME=resumable_string RESUMABLE_TIMEOUT=integer

Beispiele:

Einen kompletten Export einer Oracle Datenbank kann beispielsweise hiermit erstellt werden:

exp system/$password@$dbname file=$exportFile.dmp log=$exportLogFile.log full=yes

Einen userspezifischen Export kann beispielsweise hiermit erstellt werden:

exp $username/$password@$dbname file=$exportFile.dmp log=$exportLogFile.log owner=$username

Falls der Export mit dem Benutzer system durchgeführt wird kann der User mit dem Parameter "owner" angegeben werden.

Ein Export von einer oder mehreren Tabellen kann beispielsweise folgendermaßen aus sehen:

exp $username/$password@$dbname file=$exportFile.dmp log=$exportLogFile.log compress=no 
tables=$tableName1,$tableName2 statistics=none consistent=yes

Ein Export von Tablespace(s) kann beispielsweise folgendermaßen aus sehen:

exp $username/$password@$dbname file=$exportFile.dmp log=$exportLogFile.log compress=no 
tablespaces=$tableSpaceName1,$tableSpaceName2 statistics=none consistent=yes

imp[Bearbeiten]

Der Import funktioniert korrespondierend zum Export, d.h. es gibt auch wieder die vier Modi und etliche Optionen. Hinzu kommt, dass auch "in" einen anderen Benutzer importieren kann.

Syntax:

imp $username/password@dbname $impModes $impOpts

Hilfe:

imp help=y

$impModes:

FULL=Y | FROMUSER=$username1 TOUSER=$username2 TABLES=$tableName1,tableName2 | TABLES=$tableName1,tableName2 |TRANSPORT_TABLESPACE=Y|N

$impOpts:

ROWS=Y|N | COMMIT=Y|N | FEEDBACK=integer | BUFFER=integer | IGNORE=Y|N | DESTROY=Y|N | INDEXES=Y|N | CONSTRAINTS=Y|N | 
SKIP_UNUSABLE_INDEXES=Y|N | STREAMS_CONFIGURATION=Y|N | STREAMS_INSTANTIATION=Y|N GRANTS=Y|N | STATISTICS=always|safe|recalculate|none |
TOID_NOVALIDATE=([schemaname.]typename[,[schemaname.]typename]...) | SHOW=Y|N | RESUMABLE=Y|N | RESUMABLE_NAME=resumable_string | 
RESUMABLE_TIMEOUT=integer | COMPILE=Y|N

Beispiele: Einen kompletten Import einer Oracle Datenbank kann beispielsweise hiermit erstellt werden.

imp system/$password@dbname file=$exportFile.dmp log=$importLogFile.log full=yes ignore=yes