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

Oracle Discussion :

[Imp]"unique constraint violated" sur un import


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut [Imp]"unique constraint violated" sur un import
    J'ai voulu réaliser un export - import (Oracle Version 9i) d’une table (prog_mel_far):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp nom_user/mdp_user file=c:/temp/expulysse.dmp tables=prog_mel_far
    => l'export s'est bien terminé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp nom_user/mdp_user file=c:/temp/expulysse.dmp tables=prog_mel_far ignore=y commit=y
    => 0 enregistrements importés à cause de violation d'intégrité sur chaque enregistrement :
    IMP-00019: row rejected due to ORACLE error 1
    IMP-00003: ORACLE error 1 encountered
    ORA-00001: unique constraint (GMP366.PK_PROG_MEL_FAR) violated

    Comment faire?

  2. #2
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    ça dépend de ce que TOI tu veux faire !
    vraisemblablement tu essaye d'importer des lignes qui existent déjà (du moins dont les identifiants existents, ce n'est peut être pas strictement les même données).

    donc soit tu veux importer ces doublons, mais c'est mauvais parce que vu que l'index unique qui te bloque s'appelle PK_PROG_MEL_FAR => donc c'est certainement la clef primaire... mais sinon il faudrait au préalable désactiver cette contrainte.

    ou alors tu dois d'abord vider ta table cible si les données importées doivent les remplacer

    ou encore tu veux ajouter les données de ton ficher d'export aux données existantes, mais là alors je pense qu'il serait plus judicieux de passer par du SQL ou du PL/SQL pour générer des clefs uniques valables dans ta table cible... donc par exemple importer ton fichier dans une table de même structure, mais vide PUIS les insérer dans la table finale en respectant les ID.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    Comme dit le cours DBA, l'importation permet "de réorganiser le stockage physique des tables."
    On a appris en formation qu’il fallait faire régulièrement un export/import. (donc sur la même base, avec les mêmes enregistrements)

    Donc, j'importe...ou je tente d'importer. Mais j'ai des violations de Primary Key (PK) partout.
    Même si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONSTRAINTS=N
    INDEXES=N
    En formation Oracle, ça marchait facilement : on travaillait sur une table sans indexe
    Et la, je me trouve devant des tables liées les unes aux autres avec pour certaines tables plus de 100 000 enregistrements.
    Je veux donc réorganiser les tables une par une.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Par défaut
    Pour réaliser ton import correctement, il faut que tu supprime la table avant de l'importer. Ou au moins la vider.

    J'aimerais bien savoir qui ta former sur oracle la restructuration des tables par export/import je ne suis pas sur que ce soit la meilleur méthode de réorganisation.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    La méthode de réorganisation par export / import est indiquée par mon manuel « Oracle 9i administration » édité par Adhara Informatique.
    As-tu une meilleure méthode ?

    Si je choisis de vider la table plutôt que de la supprimer, dois-je passer celle-ci OFFLINE ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Par défaut
    Il faudrait mieu supprimer la table plutot que de la vider. Ou alors modifier ses paramètres de stockage une fois la table vide.

    Attention aux paramètres d'import/export.

    Je crois qu'il existe tout de même d'autre façon de réorganiser les espaces de stockage sans détruire les tables ou les vider et passer par un import/export.

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    Sur :
    http://www.dbazine.com/oracle/or-articles/hordila1
    il conseille de faire la reorg avec cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE/INDEX table_name/index_name MOVE/REBUILD ONLINE;
    Qu'en pense les experts ?

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Bonjour ,

    Ce que je conseille personnellement lors des réorgranisation :

    - Pour les indexs : Faire un drop /rebuild
    - Pour les tables : de faire un move


    Mais cela dépend de la version et du contexte

    Qu'en pense les experts ?
    Ca me rappelle une discussion récemment avec un gars de chez Oracle qui disait qu'il n'y a que trés peu d'expert Oracle et pas en france

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    Mais cela dépend de la version et du contexte
    Version : Oracle Version 9i
    Contexte : surveillance de base, voir plus puisque personne n'a le temps de s'en occuper ...

    …qu'il n'y a que trés peu d'expert Oracle et pas en france
    Je vise une formation chez Oracle France … tu me la déconseilles ?

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par u_roisin
    …qu'il n'y a que trés peu d'expert Oracle et pas en france
    Je vise une formation chez Oracle France … tu me la déconseilles ?
    Non franchement si tu as l'occasion d'y aller fonce , ca accellere réellement la connaissance du produit

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par Jaouad
    Bonjour ,

    Ce que je conseille personnellement lors des réorgranisation :

    - Pour les indexs : Faire un drop /rebuild
    - Pour les tables : de faire un move


    Mais cela dépend de la version et du contexte

    Qu'en pense les experts ?
    Ca me rappelle une discussion récemment avec un gars de chez Oracle qui disait qu'il n'y a que trés peu d'expert Oracle et pas en france
    Je pense la même chose, mais je rajouterai quand même un petit détail.
    Il vaux mieux faire le move de ta table avant le rebuild de tes index car le move rends tout tes index invalides! En effet, ceux-ci s'appuient sur les adresses physique(les rowid) de tes lignes pour acceder aux données. Une reorg de ta table change cela...

Discussions similaires

  1. Réponses: 23
    Dernier message: 22/07/2011, 17h05
  2. Eviter un UNIQUE CONSTRAINT sur un INSERT
    Par Manlis dans le forum PL/SQL
    Réponses: 1
    Dernier message: 29/07/2008, 09h43
  3. ORA-00001: unique constraint (%s.%s) violated
    Par Louisa2005 dans le forum SQL
    Réponses: 1
    Dernier message: 14/06/2007, 16h58

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