web-dev-qa-db-fra.com

Comment extraire la procédure, la fonction, etc. Code source d'une exportation Oracle

J'ai généré un EXPDAT.DMP Fichier d'une base de données Oracle avec la commande:

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

J'ai ensuite exécuté la commande suivante pour générer un fichier contenant la "Table de création de la table ...":

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

C'est génial pour les déclarations de table Create, mais je souhaite également la procédure Créer la procédure/Créer une fonction de vue de la vue/Créer une vue de code source. Je peux les voir là-bas dans le fichier .DMP, mais je n'ai pas trouvé de façon de les extraire.

Est-il possible d'extraire ces informations du fichier expdat.dmp? Ou devrais-je utiliser une autre méthode?

L'objectif est d'avoir la source exportable pour les fichiers pouvant être contrôlés à la source.

7
MatthewToday

Si vous avez accès à la base de données d'origine, j'irais avec dbms_metadata.get_ddl.

Vous pouvez le scripter avec utl_file de sorte qu'il passe à travers chaque objet (à partir d'user_Objects), utilise le nom et le type pour extraire l'objet, écrivez-le ensuite dans un fichier contenant la convention de dénomination appropriée.

Il sera beaucoup plus propre que d'essayer de diviser un seul fichier.

8
Gary

Utilisez le [~ # ~] montre [~ # ~ ~] Paramètre pour voir le DDL:

imp userid=usr/pass@db full=y show=y log=imp.log

Si vous pouvez utiliser l'utilitaire de DataPump (ExpdP, IMPDP), au lieu d'exportation traditionnelle, la commande SQLFILE peut être utilisée.

- Prendre le DEPDP

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

- En dessous de l'import sur IMPDP, il vient de générer tout le code d'objet dans le fichier Fullcode.SQL

impdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT content=metadata_only sqlfile=fullcode.sql
0
rajkishore patro