Wie die Schemen innerhalb einer Oracle Data Pump Export-Datei, um festzustellen

StackOverflow https://stackoverflow.com/questions/95578

  •  01-07-2019
  •  | 
  •  

Frage

  • Ich habe eine Oracle-Datenbank-Sicherungsdatei (.dmp), die mit expdp erstellt wurde.
  • Die DMP-Datei war ein Export der gesamten Datenbank.
  • Ich brauche 1 der Schemata zur Wiederherstellung von in dieser Dump-Datei.
  • Ich habe nicht die Namen der Schemata innerhalb dieser Dump-Datei kennen.
  • So verwenden impdp die Daten zu importieren ich den Namen des Schemas müssen geladen werden.

Also, ich brauche die DMP-Datei zu überprüfen und alle Schemata darin auflisten, wie kann ich das tun?


Update (2008-09-18 13.02) - Detailliertere Informationen:

Der impdp Befehl i aktuellen bin verwendet, ist:

impdp user/password@database directory=DPUMP_DIR 
      dumpfile=EXPORT.DMP logfile=IMPORT.LOG  

Und die DPUMP_DIR richtig konfiguriert ist.

SQL> SELECT directory_path
2  FROM dba_directories
3  WHERE directory_name = 'DPUMP_DIR';

DIRECTORY_PATH
-------------------------
D:\directory_path\dpump_dir\

Und ja, ist die EXPORT.DMP Datei infact in diesem Ordner.

Die Fehlermeldung erhalte ich, wenn ich den impdp Befehl ausgeführt wird:

Connected to: Oracle Database 10g Enterprise Edition ...
ORA-31655: no data or metadata objects selected for job
ORA-39154: Objects from foreign schemas have been removed from import

Diese Fehlermeldung wird meist erwartet. Ich brauche den impdp Befehl sein:

impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP 
      SCHEMAS=SOURCE_SCHEMA REMAP_SCHEMA=SOURCE_SCHEMA:MY_SCHEMA

Aber das zu tun, ich brauche das Quellschema.

War es hilfreich?

Lösung

Wenn Sie die DMP-Datei mit einem Editor öffnen, die große Dateien verarbeiten kann, können Sie in der Lage sein, die Bereiche zu lokalisieren, wo die Schemanamen erwähnt werden. Nur sicher sein, nicht etwas zu ändern. Es wäre besser, wenn Sie eine Kopie des Original-Dump geöffnet.

Andere Tipps

impdp exportiert die DDL einer dmp Sicherung in eine Datei, wenn Sie die SQLFILE Parameter . Zum Beispiel setzen diese in eine Textdatei

impdp '/ as sysdba' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt

Dann überprüfen ddl_dump.txt für die Tablespaces, Benutzer und Schemata in der Sicherung.

Nach der Dokumentation gehen diese auf die Datenbank nicht tatsächlich ändern:

  

Die SQL wird nicht tatsächlich ausgeführt wird, und das Zielsystem bleibt unverändert.

Update (2008-09-19 10.05) - Lösung:

Meine Lösung: Social Engineering, grub ich wirklich hart und fand jemanden, der das Schema Namen kannte
. Technische Lösung: Suche im DMP-Datei haben Ausbeute der Schemaname
. Sobald ich das Schema Namen kannte, suchte ich die Dump-Datei und gelernt, wo sie zu finden.

Platziert wurden die Schemen Namen, in der DMP-Datei zu sehen:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> Dies wurde vor jedem Tabellennamen / Definition zu sehen.

  • SCHEMA_LIST 'SOURCE_SCHEMA' Dies wurde in der Nähe des Endes des DMP gesehen.

Interessanterweise um den SCHEMA_LIST 'SOURCE_SCHEMA' Abschnitt, es hatte auch den Zeilenbefehl verwendet, um den Dump zu erstellen, Verzeichnisse verwendet, par-Dateien verwendet, Windows-Version wurde läuft auf und exportieren Sitzungseinstellungen (Sprache, Datumsformate).

So Problem gelöst:)

Unter der Annahme, dass Sie nicht über die Protokolldatei aus dem expdp Job, der die Datei in erster Linie erzeugt wird, wäre die einfachste Möglichkeit wahrscheinlich sein, die SQLFILE Parameter hat impdp eine Datei von DDL zu erzeugen (basierend auf einem vollständigen Import). Dann können Sie die Schemanamen aus dieser Datei greifen. Nicht ideal, natürlich, da impdp hat die gesamte Dump-Datei zu lesen, die DDL und dann wieder zu extrahieren, um das Schema zu bekommen Sie interessiert sind, und Sie haben ein bisschen Textdatei für die verschiedenen CREATE USER-Anweisungen der Suche zu tun , aber es sollte machbar sein.

Der den impdp Befehl ausführen eine SQLFILE zu erzeugen, müssen Sie es als Benutzer ausgeführt werden, der die DATAPUMP_IMP_FULL_DATABASE Rolle hat.

oder ... es als niedrig privilegierte Benutzer ausgeführt und die MASTER_ONLY = YES Option verwenden, dann überprüfen Sie die Master-Tabelle. z.B.

select value_t 
from SYS_IMPORT_TABLE_01 
where name = 'CLIENT_COMMAND' 
and process_order = -59;

col object_name for a30
col processing_status head STATUS for a6
col processing_state head STATE for a5
select distinct
  object_schema,
  object_name,
  object_type,
  object_tablespace,
  process_order,
  duplicate,
  processing_status,
  processing_state
from sys_import_table_01
where process_order > 0
and object_name is not null
order by object_schema, object_name
/

http://download.oracle.com/ otndocs / products / database / enterprise_edition / Dienstprogramme / pdf / oow2011_dp_mastering.pdf

Schritt 1: Hier ist ein einfaches Beispiel. Sie haben eine SQL-Datei aus der Dump-Datei mit SQLFILE Option erstellen.

Schritt 2: Grep für CREATE USER in der generierten SQL-Datei (hier tables.sql)

Beispiel hier:

$ impdp directory=exp_dir dumpfile=exp_user1_all_tab.dmp  logfile=imp_exp_user1_tab sqlfile=tables.sql
  

Import: Release 11.2.0.3.0 - Produktion am Fr 26. April 2013 08.29.06

     

Copyright (c) 1982, 2011, Oracle und / oder ihrer Tochtergesellschaften. Alle Rechte vorbehalten.

     

Benutzername: / als sysdba

     

Verarbeitungsobjekttyp SCHEMA_EXPORT / PRE_SCHEMA / PROCACT_SCHEMA Job "SYS". "SYS_SQL_FILE_FULL_01" erfolgreich abgeschlossen 08.29.12

$ grep "CREATE USER" tables.sql
  

CREATE USER "USER1" GEKENNZEICHNET DURCH WERTE 'S: 270D559F9B97C05EA50F78507CD6EAC6AD63969E5E; BBE7786A5F9103'

Lot von Datapump Optionen hier erklärt http://www.acehints.com/p/ Website-map.html

Meine Lösung (ähnlich KyleLanser Antwort) (auf einem Unix-Kasten):

strings dumpfile.dmp | grep SCHEMA_LIST

Sie müssen sich für OWNER_NAME suchen.

cat -v dumpfile.dmp | grep -o '<OWNER_NAME>.*</OWNER_NAME>' | uniq -u

cat -v die dumpfile in sichtbaren Text verwandeln.

grep -o zeigt nur das Spiel, so dass wir nicht wirklich lange Schlangen sehen

uniq -u entfernt doppelte Linien, so dass Sie weniger Ausgabe.

Das funktioniert ziemlich gut, auch auf großen Dump-Dateien, und in einem Skript für die Nutzung wird gezwickt könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top