6. Juli 2010

Neues Feature für "classic" import: DATA_ONLY

English title: New Feature for "classic" imp: DATA_ONLY

In Oracle 11.2 gibt es beim "klassischen" Import-Werkzeug einen sehr nützlichen neuen Parameter: DATA_ONLY. Damit wird das Import-Utility angewiesen nur die Daten und keinerlei Metadaten wie Tabellen, Typen, PL/SQL-Prozeduren oder Trigger zu importieren (Dokumentation). Wenn die Tabellen, in die die Daten importiert werden sollen, nicht da sind, wird ein Fehler ausgelöst. Ruft man imp help=yes auf, so wird der neue Parameter angezeigt ...
In Oracle 11.2 there is a new feature for the "classic" import utility - and this is IMHO a very helpful one: DATA_ONLY. When specified as DATA_ONLY=Y the import utility processes only the data of an import file and skips all the metadata. That means, no tables, types, PL/SQL objects or other database objects are being created. When a table for the data is not present, import raises an error message. Calling import with help=yes shows the new parameter.
$ imp help=yes

:
FILE     input files (EXPDAT.DMP)    TOUSER       list of usernames
SHOW     just list file contents (N) TABLES       list of table names
IGNORE   ignore create errors (N)    RECORDLENGTH length of IO record
GRANTS   import grants (Y)           INCTYPE      incremental import type
INDEXES  import indexes (Y)          COMMIT       commit array insert (N)
ROWS     import data rows (Y)        PARFILE      parameter filename
LOG      log file of screen output   CONSTRAINTS  import constraints (Y)
DESTROY                overwrite tablespace data file (N)
:
RESUMABLE_TIMEOUT      wait time for RESUMABLE
COMPILE                compile procedures, packages, and functions (Y)
STREAMS_CONFIGURATION  import streams general metadata (Y)
STREAMS_INSTANTIATION  import streams instantiation metadata (N)
DATA_ONLY              import only data (N)
VOLSIZE                number of bytes in file on each volume of a file on tape
:
Früher hat man sich, wenn die Tabellen schon da waren mit IGNORE=Y geholfen, DATA_ONLY=Y ist aber noch besser geeignet - insbesondere, wenn man die Datenbankobjekte ohnehin vorher per Skript eingespielt hat. Die Data Pump kann das natürlich auch - und vieles mehr - daher empfehle ich generell die Nutzung der Data Pump. Aber man kann es sich ja auch nicht immer aussuchen - ab und zu hat man eben ein altes, klassisches Export-File und muss das importieren. Vielleicht ist diese neue Option dann für den einen oder anderen nützlich ...
In the past we worked with IGNORE=Y when the tables were already present. But import then recreated all PL/SQL objects then. So DATA_ONLY is much better suited in cases where all the metadata is already present and we just want to import table rows. In generel I'd recommand to use Data Pump instead of the "classic" export and import utilities - with Data Pump you can adjust the export and import process in a much more fine granular manner. But sometimes we just have an "old" dumpfile and in those cases this new option might be helpful ...

Kommentare:

armhund hat gesagt…

Klassischer import/export unterstuetzt keine mit TDE verschluesselten Daten, es muss Data Pump verwendet werden.

Carsten Czarski hat gesagt…

Hallo,

das ist richtig - aber es verwendet ja nicht jedermann TDE ...

Beste Grüße

-Carsten Czarski

Beliebte Postings