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 :

Problème de violation de contrainte unique sur un refresh d'une vue matérialisée. [11gR2]


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut Problème de violation de contrainte unique sur un refresh d'une vue matérialisée.
    Bonjour à tous,

    Voilà je vous expose mon problème.

    J'ai créé une vue matérialisée que j'arrive à alimenter correctement avec le "complet" pour la première alimentation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC DBMS_MVIEW.REFRESH(LIST=> 'ma_vm', METHOD=> 'C');
    Je demande à un collègue d'ajouter de nouveaux enregsitrements, et je réalise un "refresh" (scénario des plus banale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC DBMS_MVIEW.REFRESH(LIST=> 'ma_vm', METHOD=> 'F', ATOMIC_REFRESH=>FALSE);
    Et j'obtiens un message ORACLE ==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ERROR at line 1:
    ORA-12008: erreur dans le chemin de rÚgÚnÚration de la vue matÚrialisÚe
    ORA-02091: transaction annulÚe
    ORA-00001: violation de contrainte unique (ma_base.ma_vm_index)
    ORA-06512: Ó "SYS.DBMS_SNAPSHOT", ligne 2566
    ORA-06512: Ó "SYS.DBMS_SNAPSHOT", ligne 2779
    ORA-06512: Ó "SYS.DBMS_SNAPSHOT", ligne 2748
    ORA-06512: Ó ligne 1
    Je précise que l'ajout de nouveau enregistrement n'a rencontré aucun problème.
    Et donc je ne comprends pas pourquoi j'ai cette violation de contrainte...

    Help me? Je peux donner plus d'info.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    A priori il y a une violation d'une contrainte d'unicité sur la vue matérialisée et non pas sur la/les table/s qui l'alimente.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Merci Mnitu pour l’intérêt que tu portes à mon problème.

    Alors voici une petite précision, les index et autres contraintes que j'ai sur mes VMs sont identiques à celles que j'ai sur les tables qui alimentent mes VMs.

    Je crois me souvenir qu'il y a un problème sur le traitement des UPDATEs sur les VMs.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Normalement votre VM est une agrégation ou tranformation des données des autres tables. Mais peut être que vous pouvez poster un petit jeu d’essai pour qu’on y voie mieux de quoi il s’agit.

  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
    Bonjour,
    Il se peut que la contrainte soit violée temporairement durant le refresh. Dans ce cas, il peut être nécessaire de la passer en deferrable.
    Cordialement,
    Franck.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    @Mnitu, je n'arrive pas à extraire les lignes qui posent problème.
    @Pachot, quelle est la syntaxe de cette méthode?

    (merci à vous)

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Supprimez la contrainte et recréez-la en mode deferrable (attention aux éventuels dépendances).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    alter table toto_1 drop constraint uk_toto_1
    /
    alter table toto_1 add constraint uk_toto_1 unique(a) deferrable
    /

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une contrainte "unique" sur une clé primaire
    Par Invité1 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/04/2010, 21h11
  2. [TopCased] contrainte {unique} sur une composition
    Par big x dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 03/07/2007, 14h04
  3. violation de contrainte unique (KOLOK.IDCONFIG_PK)
    Par Sephiroth Lune dans le forum Administration
    Réponses: 12
    Dernier message: 20/04/2007, 11h51
  4. [hibernate] Violation de contrainte unique
    Par miyabi dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/06/2006, 14h52
  5. Réponses: 2
    Dernier message: 13/02/2006, 11h13

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