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

Administration Oracle Discussion :

Alter Constraint et lock des tables


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 92
    Points : 48
    Points
    48
    Par défaut Alter Constraint et lock des tables
    Bonjour à tous,

    je sollicite votre aide sur un probleme de lock sur une table suite à un alter constraint.

    J'ai une table de 13Go avec des millions de ligne dans laquelle je dois modifier des codes.
    sur cette table j'ai une contrainte que je désactive pour effectuer ma mise à jour

    Une fois ma mise à jour effectuée, je réactive la contrainte.

    Or la réactivation de cette contrainte prend environ 3h et pendant ces 3 heures ma table est locké.

    pour mon client, il est hors de question que l'activité soit bloquée pendant ces 3h (7/7 h24)

    Avez vous deja ete contronté à ce genre de probleme et quelle solution pourrions nous apporter ?

    Merci de votre aide
    It's me !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    c'est le vérification de l'intégrité de la contrainte qui prend du temps.
    Il me semble que tu peux réactiver la contrainte sans vérification des données déjà présente, un option NOCHECK.
    Va voir dans la doc.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    c'est le vérification de l'intégrité de la contrainte qui prend du temps.
    Il me semble que tu peux réactiver la contrainte sans vérification des données déjà présente, un option NOCHECK.
    Va voir dans la doc.
    Merci pour ta réponse

    je n'ai pas trouvé l'option NOCHECK avec le alter constraint

    je l'ai seulement trouver avec le create table whith nocheck add constraint

    Donc ce que je pense faire, c est
    - de complètement supprimer ma contraint
    - faire mes maj
    - ajouter ma contraint a la table avec un nocheck

    vous en pensez quoi ?
    It's me !!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par elkamaro Voir le message
    Donc ce que je pense faire, c est
    - de complètement supprimer ma contraint
    - faire mes maj
    - ajouter ma contraint a la table avec un nocheck

    vous en pensez quoi ?
    De mémoire - ça fait un certain temps que je ne fais plus d'Oracle en prod maintenant - c'est comme ça que l'on procédait.
    Suppression de la contrainte / MÀJ / Recréation de la contrainte avec NOCHECK !

  5. #5
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut novalidate
    Bonjour,
    C'est NOVALIDATE qui permet d'activer une contrainte sans vérifier les données existantes. Et si tu est sur que la contrainte n'est pas violée par tes modifications, tu peux ajouter RELY pour que l'optimiseur puisse se fier à la contrainte.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par pachot Voir le message
    Bonjour,
    C'est NOVALIDATE qui permet d'activer une contrainte sans vérifier les données existantes. Et si tu est sur que la contrainte n'est pas violée par tes modifications, tu peux ajouter RELY pour que l'optimiseur puisse se fier à la contrainte.
    Cordialement,
    Franck.
    Bonjour Franck et merci pour ta réponse,

    En fait au moment ou je desactive ma contrainte je suis sur qu elle n'est pas violé.
    De même au moment ou je voudrais la réactiver, je serai sur que mes données seront aussi cohérente (du moins je tâcherais qu'elle le soit)

    A ce moment la, je peux donc faire un enable novalidate ?

    Par contre pour l'option RELY, je n'ai pas tres bien compris en quoi il agit ?

    Merci pour ton aide
    It's me !!

  7. #7
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Oui c'est ça.
    RELY c'est pour que tu garantisse à Oracle que la contrainte n'est pas violée, et qu'il peut en tenir compte pour ses optimisations.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2003
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par pachot Voir le message
    Oui c'est ça.
    RELY c'est pour que tu garantisse à Oracle que la contrainte n'est pas violée, et qu'il peut en tenir compte pour ses optimisations.
    Merci pachot pour ton aide et ta solution, elle nous convient parfaitement
    It's me !!

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

Discussions similaires

  1. [Toutes versions] Comment lister les CONSTRAINT définies au niveau des tables ?
    Par Tofalu dans le forum Access
    Réponses: 0
    Dernier message: 28/10/2013, 11h02
  2. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50
  3. Afficher noms des tables d'une base
    Par jeff37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2004, 16h00
  4. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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