Comment générer de l'ensemble de DDL d'un schéma Oracle (scriptable)?
Quelqu'un peut me dire comment je peux générer le DDL pour toutes les tables, les vues, les index, les packages, procédures, fonctions, triggers, des types, des séquences, des synonymes, des subventions, etc. à l'intérieur d'un schéma Oracle? Idéalement, je voudrais copier les lignes trop mais c'est moins important.
Je veux le faire sur une tâche planifiée d'une certaine sorte, et non pas manuellement à chaque fois, de sorte que les règles à l'aide de l'assistant SQL Developer.
Idéalement, puisque je vais être en cours d'exécution sur plusieurs schémas qui ont les subventions et les synonymes l'un de l'autre, je voudrais avoir un moyen de faire un rechercher/remplacer dans la sortie de sorte que le schéma noms correspondent à ce que les noms de mes nouveaux schémas sont en passe de l'être.
Merci!
- SQL Developer pouvez le faire par l'intermédiaire de son interface de ligne de commande, il est possible si vous voulez aller dans cette voie.
- Course Simple : SÉLECTIONNEZ DBMS_METADATA.get_ddl(object_Type, object_name, propriétaire) à PARTIR de ALL_OBJECTS OÙ le PROPRIÉTAIRE = 'OWNER_NAME';
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spool le schéma à un fichier via SQL*Plus et dbms_metadata paquet. Puis remplacez le nom de schéma avec un autre par le sed. Cela fonctionne pour Oracle 10 et plus.
De tout mettre dans un script et l'exécuter via cron (scheduler). L'exportation d'objets peut être difficile lorsque les fonctionnalités avancées sont utilisées. Ne soyez pas surpris si vous avez besoin d'ajouter plus d'exceptions pour le code ci-dessus.
select dbms_metadata.get_dependent_ddl('OBJECT_GRANT', '<YOUR_TABLE_NAME>') from dual;
Si vous voulez individuellement générer ddl pour chaque objet,
Requêtes sont:
--GÉNÉRER DDL POUR TOUS LES OBJETS UTILISATEUR
--1. POUR TOUTES LES TABLES
--2. POUR TOUS LES INDICES
--3. POUR TOUS LES POINTS DE VUE
OU
--4. POUR TOUS LES MATERILIZED VUES
--5. POUR L'ENSEMBLE DE LA FONCTION
===============================================================================================
GET_DDL Fonction ne marche pas de prise en charge de certains object_type comme MÉTIER,de la VUE MATÉRIALISÉE, la TABLE de PARTITION
DONC, États requête pour générer DDL sera:
La get_ddl procédure pour un PACKAGE de retour à la fois spec ET le corps, de sorte qu'il sera préférable de modifier la requête sur le all_objects de sorte que le corps des paquets ne sont pas retournés sur la sélectionner.
Jusqu'à présent j'ai changé la requête à la ce:
Bien que d'autres changements pourraient être nécessaires selon les types d'objet que vous obtenez...
Il y a un problème avec des objets tels que PACKAGE_BODY:
D'abord exporter le schéma de métadonnées:
puis les importer à l'aide de la
sqlfile
option (il ne sera pas importer de données il suffit d'écrire le schéma DDL de ce fichier)Pour générer le script DDL pour un ensemble de SCHÉMA c'est à dire un UTILISATEUR, vous pouvez utiliser dbms_metadata.get_ddl.
D'exécuter le script suivant dans SQL*Plus créé par Tim Hall:
Fournir les nom d'utilisateur lorsque vous y êtes invité.
Le résultat de cette requête est très propre (d'origine ici)