So extrahieren Sie Prozedur, Funktion usw. Quellcode aus einem Oracle-Export

7

Ich habe eine EXPDAT.DMPDatei einer Oracle-Datenbank mit dem folgenden Befehl generiert :

exp userid=usr/pass@db owner=own rows=n compress=n

Ich habe dann den folgenden Befehl ausgeführt, um eine Datei mit den Anweisungen 'Create Table ...' zu generieren:

imp userid=usr/pass@db full=y indexfile=output.sql

Dies ist ideal für die Anweisungen zum Erstellen einer Tabelle, aber ich möchte auch den Quellcode "Prozedur erstellen" / "Funktion erstellen" / "Ansicht erstellen". Ich kann sie dort in der .DMP-Datei sehen, aber ich habe keine Möglichkeit gefunden, sie zu extrahieren.

Ist es möglich, diese Informationen aus der Datei EXPDAT.DMP zu extrahieren? Oder muss ich eine andere Methode verwenden?

Der Zweck besteht darin, die Quelle in Dateien exportieren zu lassen, die quellengesteuert werden können.

MatthewToday
quelle

Antworten:

8

Wenn Sie Zugriff auf die ursprüngliche Datenbank haben, würde ich DBMS_METADATA.GET_DDL verwenden.

Sie können es mit UTL_FILE so skripten, dass es jedes Objekt (von USER_OBJECTS) durchläuft, den Namen und den Typ verwendet, um das Objekt zu extrahieren, und es dann in eine Datei mit der entsprechenden Namenskonvention schreibt.

Es ist viel sauberer als der Versuch, eine einzelne Datei zu teilen.

Gary
quelle
Können Sie ein gutes Beispiel / Tutorial für DBMS_METADATA.GET_DDL empfehlen? Ich finde meistens 'spool ... wähle dbms_metadata.get_dll () aus dual; über Google abspulen. Ist das ungefähr richtig?
MatthewToday
1
Der erste Ort, an dem ich nach Tutorials suche, ist oracle-base.com. oracle-base.com/articles/9i/MetadataAPI.php
Gary
3

Verwenden Sie den Parameter SHOW , um die DDL anzuzeigen:

imp userid=usr/pass@db full=y show=y log=imp.log
Jack sagt, versuchen Sie es mit topanswers.xyz
quelle
0

Wenn Sie anstelle des herkömmlichen Exports das Dienstprogramm datapump (expdp, impdp) verwenden können, kann der Befehl sqlfile verwendet werden.

- Nehmen Sie expdp

 expdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT

- Unter impdp wird nicht importiert, es wird nur der gesamte Objektcode in der Datei fullcode.sql generiert

impdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT content=metadata_only sqlfile=fullcode.sql
Rajkishore Patro
quelle