Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Import/Export
Import/Export Forum d'entraide sur les outils d'import/export Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/01/2012, 11h28   #1
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Par défaut Datapump Oracle 10g (express) complexe

Bonjour à tous et à toutes, et bonne année 2012,

Je reviens vers vous (Ô grande communauté de sagesse et de connaissance) après quelques temps d'absence pour vous demander votre aide sur cette technologie que je découvre: Oracle.

En l'occurrence, plus particulièrement, l'export/import à l'aide de Datapump.

J'ai un soucis de structure sur une des bases que j'ai en local (cette base sera nommée Base P pour plus de facilité).
Sur cette Base P donc, il manque pas mal de champs quand j'ai passé le script sql de création (pas à jour apparemment, et comme je viens d'arriver ...).

J'ai, en revanche, une autre base (appelons la Base C), qui, elle, est à jour.
Elle est donc ma base la plus complète en terme de métadonnées.

Jusque là, rien de méchant. Il me suffit de supprimer la base P, la recréer en vierge pour pouvoir y importer la structure de la base C.

Code :
1
2
3
expdp C/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=CExp.log content=metadata_only
 
impdp P/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=Cimp.log
A dire vrai, je ne sais même pas si je dois préciser le paramètre CONTENT dans la commande impdp ?

Là où par contre, je me pose de sérieuses questions, c'est qu'il y a des tables pour lesquelles ça m'arrangerait de récupérer également les datas.
Des tables qui ne sont pas liées au métier, comme la table des communes françaises.

Ma question est la suivante:
Est-il possible de faire un datapump complexe me récupérant la structure de toute la base C + les datas de quelques tables précises, ou dois-je faire deux exports (ce qui ne me dérange pas, même si je voudrais savoir) ?

Et, dans le cas de deux exports, comment faire l'export de mes données spécifiques ? Je sais que c'est possible, mais je n'ai pas tout compris sur la commande et ses paramètres

Si quelqu'un peut m'éclairer,
Merci d'avance,
Thomas
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 11h57   #2
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
A ma connaissance, ça ne sera pas possible en un seul export.
Donc il faut faire 2 exports et deux imports (même si dans l'absolu on pourrait faire un seul export, avec structure + données, et être sélectif lors des imports).

Lors du 1er import destiné à créer juste les structures, vous pouvez utiliser le paramètre EXCLUDE pour écarter les tables que vous allez importer plus tard

ou bien

lors du 2e import destiné à créer les quelques tables complètes, vous précisez le paramètre TABLE_EXISTS_ACTION=APPEND, car sinon les tables, qui existent déjà, mais vides, ne seront pas alimentées.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h00   #3
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 537
Points : 537
Bonjour,

Pour votre question, ca me parait tendu, mais bon c'est un avis comme ca.

Dans le cas de deux exports, vous avez le parametre TABLE pour l'export, et peut-etre TABLE_EXISTS_ACTION=REPLACE|SKIP pour l'import selon ce que vous voulez faire.

Edit:
@Pomalaix: Avec ACTION_EXISTS=APPEND ca va doubler les donnees si elles existes deja. Ca peut faire des cafouillages dans d'autres cas.
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h05   #4
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Merci à vous deux.

Je pense que je vais me diriger sur le TABLE_EXISTS_ACTION=APPEND.

Mais dans ce cas, comment puis-je sélectionner les tables qui m'intéresse dans l'export et l'import ?

Merci d'avance,
Cordialement,
Thomas
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h13   #5
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
Citation:
Envoyé par Rams7s Voir le message
Edit:
@Pomalaix: Avec ACTION_EXISTS=APPEND ca va doubler les donnees si elles existes deja. Ca peut faire des cafouillages dans d'autres cas.
Oui mais non, car dans le scénario on a deux fichiers d'export : le premier qui ne comporte que les structures pour toutes les tables, et le deuxième qui comporte le structures plus les données pour les quelques tables choisies.
Dans ce cas il n'y a pas de risque de doublons, en tout cas si on n'exécute ce scénario qu'une fois.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h23   #6
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Effectivement, si l'on n’exécute ce scénario qu'une seule fois. Ce qui est le cas ici

Par contre l'import via les commandes
Code :
1
2
3
expdp C/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=CExp.log content=metadata_only
 
impdp P/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=Cimp.log
ne m'importe rien du tout dans ma base de destination.

J'ai fait une erreur dans la commande impdp ? Là je vois pas

Merci d'avance
Cordialement,
Thomas
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h32   #7
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
Citation:
Envoyé par Delioneras Voir le message
...ne m'importe rien du tout dans ma base de destination.
Que disent respectivement les logs d'export et d'import ?
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h36   #8
Rédacteur
 
Inscription : décembre 2002
Messages : 2 389
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 389
Points : 3 276
Points : 3 276
Concernant le 2e export, il faudra lister les tables à prendre en compte. Pour ça, on remplace le paramètre SCHEMAS par TABLES.

Code :
expdp C/[pwd]@[sid] TABLES=t1,t2,t3 directory=maDir DumpFile=C.dmp logfile=CExp.log
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h40   #9
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Avec les commandes suivantes:
Code :
1
2
3
expdp C/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=CExp.log content=ALL
 
impdp P/[pwd]@[sid] schemas=C directory=maDir DumpFile=C.dmp logfile=Cimp.log content=metadata_only
J'obtiens les logs ci-joints

EDIT:
Merci pour la commande expdp avec l'argument table
Fichiers attachés
Type de fichier : 7z oraDumpLog.7z (2,2 Ko, 2 affichages)
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 12h44   #10
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Une seconde.

Je viens de regarder les logs de l'import.

Je croyais que l'argument schemas, dans la commande d'import, était fait pour définir le schéma à importer dans le dump.

Je vais tester en mettant Poitiers -_-

EDIT:
schéma introuvable ...
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 14h32   #11
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 537
Points : 537
Schemas, c'est quel schema tu veux importer.

Un exemple:
  1. Je fais un export d'un seul schema (les options par defaut)
  2. J'efface le schema dans lequel je vais importer, comme ca c'est tout vide. Comme si j'allais sur une autre base en faits
  3. Je reimporte le tout, en precisant quel schema je veux importer (TMP) juste les metadatas, et la pour l'exemple je l'importe dans un autre schema.
  4. Je verifie, Oracle a cree le schema
  5. J'ai les memes tables pour les deux schemas
  6. Et dans le schema originale, elles sont pleines, et dans l'autre non
(Les erreurs dans l'import sont normales)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
C:\d>expdp tmp/xxxx schemas=tmp reuse_dumpfiles=yes
...
Master TABLE "TMP"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file SET FOR TMP.SYS_EXPORT_SCHEMA_01 IS:
  C:\...\DPDUMP\EXPDAT.DMP
Job "TMP"."SYS_EXPORT_SCHEMA_01" successfully completed at 14:17:01
 
C:\...>sqlplus / AS sysdba
SYS@MINILHC AS SYSDBA>DROP user tmp2 cascade;
 
User dropped.
SYS@MINILHC AS SYSDBA>exit
 
C:\...>impdp tmp/xxxx schemas=tmp remap_schema=tmp:tmp2 content=metadata_only
Job "TMP"."SYS_IMPORT_SCHEMA_01" completed WITH 8 error(s) at 14:23:17
 
C:\>sqlplus / AS sysdba
SYS@MINILHC AS SYSDBA>SELECT username FROM dba_users WHERE username='TMP2';
USERNAME
------------------------------
TMP2
 
SYS@MINILHC AS SYSDBA>SELECT table_name, owner FROM dba_tables WHERE owner IN ('TMP','TMP2') ORDER BY 1,2;
TABLE_NAME                     OWNER
------------------------------ ------------------------------
...
TMP                            TMP
TMP                            TMP2
TMP2                           TMP
TMP2                           TMP2
....
 
SYS@MINILHC AS SYSDBA>SELECT count(*) FROM tmp.tmp;
  COUNT(*)
----------
    999999
 
SYS@MINILHC AS SYSDBA>SELECT count(*) FROM tmp2.tmp;
 
  COUNT(*)
----------
         0
 
Elapsed: 00:00:00.00
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 15h36   #12
Invité régulier
 
Inscription : juin 2007
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 31
Points : 9
Points : 9
Bon, verdict, le remap_schema de Rams7s a marché pour importer les structures.

Merci
Delioneras est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h15.


 
 
 
 
Partenaires

Hébergement Web