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 :

Rebuild gros index


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut Rebuild gros index
    Salut
    pour rebuilder un gros index ( 7Go) j'étais contraint d'utiliser les techniques suivantes :

    1/ parallel
    2/nologging

    mais j'ai entendu parler d'astuces au niveau de la mémoire PGA et TEMP permettant faire l'opération plus rapidement et éviter toute erreur liée à une mémoire insuffisante lors du rebuild ? une idée ?

    Sinon le rebuild est-il plus rapide qu'un drop/create ? pourquoi ?
    merci par avance

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Par défaut
    Bonjour,

    Lorsque tu crées un index sur 1 ou plusieurs colonnes C1, C2...Cn, Oracle est obligé de balayer complétement la table pour lire les différentes valeurs de cette(s) colonne(s), et de les trier afin de pouvoir construire l'index.

    Le tri s'effectue normalement en mémoire, dans la PGA. Mais si celle-ci est trop petite, alors Oracle va utiliser le tablespace temporaire, afin d'y stocker temporairement les segments de tri, d'où un ralentissement.

    Il faut donc vérifier que la PGA est suffisamment grande pour éviter l'utilisation du TEMP.


    Sinon dropper et recréer un index est souvent plus long que le rebuilder. En effet, la recréation de l'index nécessite de balayer toute la table (Full Scan Table), alors que le rebuild de l'index nécessite de ne relire que l'index (attention, c'est un Full Scan d'index, et non pas un Fast Full Scan d'index).

    Et souvent, relire l'index est plus rapide que relire la table, car il est moins volumineux. L'inconvénient, c'est qu'il faut temporairement le double de place.

    NB : le seul cas où cela ne marche pas fait suite à un MOVE de la table. En effzet, si tu déplaces ta table, tous ses index deviennent UNUSABLE (à cause des changements de ROWID des lignes). Du coup, le Rebuild d'index va lire toute la table, au lieu de lire l'index.

  3. #3
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    En effet, la recréation de l'index nécessite de balayer toute la table (Full Scan Table), alors que le rebuild de l'index nécessite de ne relire que l'index (attention, c'est un Full Scan d'index, et non pas un Fast Full Scan d'index).
    Non, je ne pense pas que cela soit totalement correct. Il conviendrait de changer légèrement votre texte pour que cela soit exact.

    En effet, la recréation de l'index nécessite de balayer toute la table (Full Scan Table), alors que le rebuild offline de l'index nécessite de ne relire que l'index (attention, c'est un Full Scan d'index, et non pas un Fast Full Scan d'index).

    NB : le seul cas où cela ne marche pas fait suite à un MOVE de la table. En effzet, si tu déplaces ta table, tous ses index deviennent UNUSABLE (à cause des changements de ROWID des lignes). Du coup, le Rebuild d'index va lire toute la table, au lieu de lire l'index.
    Le rebuild, même offline, d'un index ayant un statut UNUSABLE, se fait en se basant sur la table qui lui est associée et non sur l'index lui même.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut
    Merci pour vos réponses.
    et le cas d'un rebuild online ...comment cela se passe ?
    Sinon l'astuce d'augmenter la PGA avant de reconstruire l'index ? efficace ? comment faire et quand exactement ?
    merci beaucoup

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 140
    Par défaut
    bonjour ,
    Je pense utiliser le paramètre caché _pga_max_size (par défault = 200 Mo).
    L'objectif est de booster le rebuild d'index ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set "_pga_max_size"=2000000000;
    votre avis ?merci
    a+

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Question subsidiaire : pourquoi faire un REBUILD de cet index ?

    Est-ce qu'un COALESCE ne suffirait pas (voire, serait plus approprié) ?

  7. #7
    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,
    Citation Envoyé par zidane2012 Voir le message
    ALTER session SET "_pga_max_size"=2000000000;
    Plutôt que de bidouiller l'allocation automatique de la PGA, pourquoi ne pas passer en PGA manuelle avec workarea_size_policy=manual et sort_area_size=2000000000
    (à supposer que votre OS aime bien manipuler des process de 2GB...)
    Cordialement,
    Franck.

Discussions similaires

  1. Erreur sur script de Rebuild d'indexes
    Par tibal dans le forum Administration
    Réponses: 9
    Dernier message: 23/03/2010, 14h48
  2. Comment rebuilder mes index
    Par lucazzo dans le forum Oracle
    Réponses: 2
    Dernier message: 02/11/2009, 23h24
  3. REBUILD des indexs dans les bases systèmes ?
    Par Oxiane dans le forum Administration
    Réponses: 2
    Dernier message: 20/08/2009, 12h06
  4. rebuild d'un gros index
    Par moi26 dans le forum Administration
    Réponses: 18
    Dernier message: 22/03/2008, 14h10
  5. faire un rebuild des indexs d'un schema
    Par fouad77fr dans le forum Administration
    Réponses: 1
    Dernier message: 27/05/2007, 18h57

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