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

SQL Oracle Discussion :

ORA-01654 Delete puis insert table avec index bitmap [9i]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut ORA-01654 Delete puis insert table avec index bitmap
    Bonjour,

    Nous avons dans notre base une table sur laquelle ont été définis des index bitmap. Jusque ce jour la mise à jour de cette table se fait 2 fois par mois : une fois par un calcul provisoire qui insère des données, une seconde par un calcul définitif consistant à supprimer les données provisoire du mois correspondant puis à les recalculer. Ce fonctionnement ne pose pas de problème.
    Nous mettons en place un mécanisme de purge basé sur un critère de date. Cette purge au premier lancement, supprime les données sur plusieurs années. Une fois la purge jouée dans l'environnement de recette, la procédure de suppression puis ré-insertion de données s'est traduite par une erreur :
    ORA-01654 : impossible d'étendre l'index ... dans le tablespace ...
    Afin de libérer de la place nous avons reconstruit l'ensemble des index bitmap par la commande
    alter index ... rebuild.
    L'espace libre passe alors de 2,6% à 73%.
    Hélas, la relance de l'insertion provoque à nouveau la même erreur ORA-01654.
    Sur notre serveur de développement nous observons le même comportement : l'insertion entraine un accroissement exponentiel des index bitmap (avec ou non l'erreur ORA-01654 selon le mois de données choisi).

    Pourquoi une opération d'insertion de données qui fonctionnait avant la purge massive et/ou le rebuild ne fonctionnerait plus ensuite ?

    Quelles solutions pouvons-nous mettre en place ?

  2. #2
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    Bonjour,

    Les index et tables sont sur les mêmes tablespaces ?

    Sinon, je pense que ton problème porte un nom : high water mark

    mais je me trompe peut être, à faire confirmer.

    Cordialement. GM.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Les index et les tables sont dans des tablespaces distincts.

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 146
    Par défaut
    ce topic peut t'aider je pense :

    par ici

    cordialement, GM

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'ai supprimé puis reconstruit les index bitmap et j'ai toujours le même problème.
    Pour info :
    notre procédure insère les nouveaux enregistrements ligne par ligne (et effectue aussi des update sur ceux-ci).
    Un test d'insertion en bloc à partir d'une table de sauvegarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table1 select * from table2 where condition
    ne provoque pas d'extension abusive des index bitmap. La condition porte sur les données d'un mois de façon à avoir un volume de données du même ordre de grandeur que celui inséré par la procédure de calcul.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Suite à mes tests quelques informations supplémentaires :
    j'ai effectué dans notre environnement de développement un truncate de la table puis ré-inséré des données en jouant en boucle la procédure de calcul qui alimente la table : aucun problème de saturation. J'ai effectué différentes purges suivies de calcul et n'observe qu'une très légére augmentation de la taille des index.
    J'ai alors effectué un rebuild de l'index : suite à ce rebuild une insertion ligne par ligne par la procédure est très ralentie par rapport à la même insertion avant rebuild et la taille des index croit exponentiellement.

    On observe donc qu'un rebuild d'index au lieu d'améliorer le comportement le dégrade complétement.

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

Discussions similaires

  1. MISE A JOUR de grosses tables avec index
    Par soph35 dans le forum SAS Base
    Réponses: 6
    Dernier message: 26/03/2010, 11h03
  2. manipuler une table avec index
    Par aminfire dans le forum SAS Base
    Réponses: 0
    Dernier message: 03/09/2009, 12h17
  3. probleme de delete sur une table avec somation
    Par galaad666 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/10/2006, 16h44
  4. Reconstruction d'une table avec index
    Par Ry_Yo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/04/2005, 09h12
  5. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 16h11

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