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 :

[Oracle 10.2] Sequence & import


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut [Oracle 10.2] Sequence & import
    Bonjour à toutes et à tous.

    J'ai un petit soucis sur Oracle.
    Voilà le topo.

    J'ai fait un export/import d'une base.
    Cette base contient entre autre une séquence.

    Or cette séquence, après import, n'est pas à jour, ce qui provoque un plantage en règle d'un de mes traitements qui me retourne une erreur de violation de contrainte unique.

    Mon parfile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BUFFER=4096
    GRANTS=Y
    INDEXES=Y
    ROWS=Y
    CONSTRAINTS=Y
    COMPRESS=N
    FULL=Y
    CONSISTENT=N
    J'aurais donc aimé savoir :
    1. si les séquences sont bien exportées lors d'un export.
    2. comment mettre à jour proprement une séquence après un import ?

    Merci d'avance pour vos réponses.

    Cdt.

    Bahan

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Les séquences sont exportées oui mais pas forcément avec la bonne valeur:

    Exporting Sequences
    If transactions continue to access sequence numbers during an export, sequence numbers might be skipped. The best way to ensure that sequence numbers are not skipped is to ensure that the sequences are not accessed during the export.

    Sequence numbers can be skipped only when cached sequence numbers are in use. When a cache of sequence numbers has been allocated, they are available for use in the current database. The exported value is the next sequence number (after the cached values). Sequence numbers that are cached, but unused, are lost when the sequence is imported.
    Pour les mettre à jour, il faut écrire un script pour:
    - récupérer une bonne valeur pour chaque séquence
    - mettre à jour la séquence: voir http://www.developpez.net/forums/sho....php?t=319906&

  3. #3
    Membre confirmé Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Par défaut
    Ok, merci pour l'information.

    J'ai donc vu ce qu'il me fallait faire.
    1. Récupérer la plus haute valeur que j'ai dans ma table qui utilise la séquence.
    2. Récupérer la valeur actuelle de ma séquence
    3. Faire la différence des deux
    4. Augmenter le pas de ma séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter sequence masequence increment by Difference;
    5. Passer à la valeur suivante de la séquence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select masequence.nextval from dual ;
    6. Remettre le pas à 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter sequence masequence increment by 1 ;
    Est-ce que cela n'irait pas plus vite de faire un :
    1. Récupérer la plus haute valeur de clef primaire que j'ai dans la table qui utilise la séquence.
    2. Supprimer la séquence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     drop sequence masequence;
    3. Recréer la séquence en commençant au maximum que j'ai relevé +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create sequence masequence start with MaxValeur+1
    Est-ce que cela reste propre aussi ?

    Cdt.

    Bahan

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Tout a fait propre (et plus simple)

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

Discussions similaires

  1. migration mssql->Oracle 11g: probleme sequence
    Par zoubeiri dans le forum Oracle
    Réponses: 2
    Dernier message: 05/08/2010, 19h22
  2. [Oracle 9i] les sequences
    Par LeNeutrino dans le forum Oracle
    Réponses: 3
    Dernier message: 14/12/2006, 12h34
  3. [ORACLE] Problème de sequence
    Par youdev dans le forum JDBC
    Réponses: 3
    Dernier message: 08/12/2006, 17h00
  4. Réponses: 7
    Dernier message: 27/10/2006, 15h16
  5. Réponses: 2
    Dernier message: 12/07/2006, 16h41

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