IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Import/Export Oracle Discussion :

[ Oracle 10g ] Probl�me sur les identifiants lors de l'import d'un DUMP


Sujet :

Import/Export Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par d�faut [ Oracle 10g ] Probl�me sur les identifiants lors de l'import d'un DUMP
    Bonjour,

    Je travaille sur Oracle 10g (niveau d�butant...)

    Je vous expose mon probl�me:

    _ J'ai une application 1 qui me cr�e automatiquement un utilisateur/sch�ma (j'ai du mal � voir la diff�rence), avec toutes les tables associ�es
    _ J'ai une application 2 qui est une interface utilisateur pour rentrer des donn�es dans les tables cr��es par l'application 1.

    Nous venons de recevoir une nouvelle version des applications 1 et 2: on pourrait tout recommencer � z�ro , ce serait le plus simple, mais les utilisateurs chez moi ont commenc� � rentrer plein de donn�es (alors qu'on est en phase de test, grrrr) et ne veulent pas recommencer toute leur saisie.

    j'ai fait comme �a:

    1/ Export de la base existante
    Avec la commande exp file=C:\sauvegarde.dump full=y

    2/ Je cr�e un nouveau sch�ma dans ma base Oracle
    Cr�ation d�un nouvel utilisateur/sch�ma dans Oracle avec mon application 1

    3/ Import de la base dans le nouveau sch�ma vide
    Avec la commande imp file=C:\sauvegarde.dump fromuser=<old_schema> touser=<new_schema> ignore=y
    Ca me permet de prendre uniquement ce qui m'int�resse dans mon fichier dump pour remplir le nouveau sch�ma vide, et le "ignore=y" est indispensable pour ne pas avoir un arr�t � cause du fait que les tables existent d�j�


    Ca marche bien en apparence (toutes les donn�es sont copi�es d�un sch�ma � l�autre) mais le probl�me est que l'import ne respecte pas les valeurs pour les colonnes correspondant aux identifiants (cl�s primaires) : lors de l�import, oracle reprend � 1 une num�ration incr�mentale pour chaque ID, ce qui fait que les relations entre tables sont parfois rompues, et donc c�est le foutoir ensuite dans les donn�es!!

    Exemple: j'avais un table nomm�e "IMPROVEMENTS", avec 4 objets saisies dedans, qui portent le ID_IMPROVEMENTS (cl� primaire): 1, 2, 4 et 6
    (ces chiffres ne se suivent pas certainement parce que j'ai du supprimer les objets portant les ID 3 et 5...)
    Et bien, apr�s import, j'ai bien 4 lignes dans la table IMPROVEMENTS de mon nouveau sch�ma, mais les identifiants sont 1, 2, 3 et 4!! Un grand nombre de fonctions de mon application 2 est bas�e sur des liens entre les tables, avec utilisation de ID_IMPROVEMENTS comme cl� �trang�re, il n'y a donc plus rien qui marche...

    Comment faire pour que l'import du Dump me g�n�re des valeurs identiques pour TOUS les �l�ments de toutes mes tables, m�me pour ceux qui sont cl�s primaires?

    Merci pour vos conseils
    (j'esp�re avoir �t� clair...)

  2. #2
    Membre Expert

    Homme Profil pro
    Charg� de D�veloppement et d'Analyse de donn�es
    Inscrit en
    Mars 2010
    Messages
    1 278
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Charg� de D�veloppement et d'Analyse de donn�es
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par d�faut
    Utilise la commande EXPDP pour faire l'export et IMPDP pour faire l'import

    Pour l'export
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    expdp user/password dumpfile=nomDeFichier.dmp full=Y
    Pour l'import
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    impdp user/password dumpfile=nomDeFichier.dmp
    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par d�faut
    Merci d'essayer de m'aider: il y al'air d'y avoir plus d'options avec expdp/impdp qu'avec exp/imp

    Toutefois ces lignes de commande seules ne suffisent pas � m'aider ... j'ai essay� le "impdp" avec les options suivantes:
    REMAP_SCHEMA=<old_schema>:<new_schema>
    TABLE_EXISTS_ACTION=APPEND

    mais j'obtiens exactement le m�me r�sultat qu'avec les lignes de commande de mon message intial.

    Peut-�tre en essayant le mot-cl� EXCLUDE?
    Quelqu'un a une id�e??

  4. #4
    Invit�
    Invit�(e)
    Par d�faut
    �a ressemble � une mauvaise conception du mod�le de donn�es qui n'assure pas l'int�grit� des donn�es.
    Utilisez des foreign key ou clefs �trang�res entre les tables parents / enfants pour conserver le lien entre ces donn�es.
    Est-ce que vous utilisez des d�clencheurs avec s�quences pour les clefs primaires?

  5. #5
    Expert confirm�
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Developer Advocate YugabyteDB
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par d�faut triggers ?
    Bonjour,
    Si apr�s import les ID ont chang�, c'est probablement que l'appli a des triggers sur les inserts qui �crasent la valeur de l'ID en prenant celui de la sequence.
    Il faudrait soit:
    - d�sactiver les triggers avant l'import
    - modifier les triggers pour qu'ils ne mettent une nouvelle valeur dans l'ID que si celle qui est pass�e par l'insert est NULL
    Puis r�activer les triggers, et modifier les sequences pour qu'elle partent � partir du dernier num�ro existant.
    Cordialement,
    Franck.

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Par d�faut
    Merci pour vos r�ponses

    Je viens de v�rifier: il y a effectivement sur chaque table un trigger "before each row" d�clench� par l'�v�nement "insert", donc vous devez avoir vu juste sur l'origine du probl�me.
    Par contre, mon nouveau probl�me c'est qu'il y a au moins une centaine de tables, est-ce qu'il existe une commande pour d�sactiver puis r�activer tous les triggers d'un coup?

    Merci encore pour votre aide

    PS:Concernant le fait qu'il y ait eu une mauvaise conception du mod�le, et des applis de mani�re g�n�rale, je suis tout � fait pr�t � le croire: depuis le d�but nous sommes tr�s m�contents des livraisons du prestataire qui nous fournit les applications en question...

  7. #7
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par jc_13008 Voir le message
    Par contre, mon nouveau probl�me c'est qu'il y a au moins une centaine de tables, est-ce qu'il existe une commande pour d�sactiver puis r�activer tous les triggers d'un coup?
    http://oracle.developpez.com/sources...ers_hors_ligne

Discussions similaires

  1. R�ponses: 1
    Dernier message: 02/03/2008, 22h04
  2. Oracle 10g - calcul sur les dates
    Par themateo dans le forum Langage SQL
    R�ponses: 7
    Dernier message: 17/08/2007, 10h50
  3. [Oracle 10g] Question sur les sous-requetes
    Par hotkebab99 dans le forum Oracle
    R�ponses: 2
    Dernier message: 27/10/2006, 11h25
  4. [Oracle 9i] Triggers sur les updates de tables
    Par zestrellita dans le forum Oracle
    R�ponses: 12
    Dernier message: 07/12/2005, 11h32
  5. Install Oracle 10g R2 sur Mandrake 10.1 ORA-12547
    Par jellox dans le forum Installation
    R�ponses: 1
    Dernier message: 22/10/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo