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 :

[ORACLE 9i] Campagne de réorganisation


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut [ORACLE 9i] Campagne de réorganisation
    Bonjour à tous,

    RDBMS 9.2.0.7.

    La question à la fin du post - dsl pour la petite tartine -)

    Nous menons actuellement des campagnes de réorg de tables partitionnées.

    Nous avons identifié en effet potentiellement une assez grande fragmentation de plusieurs segments via la requête suivante (plus de 20000 blocs de 16ko approximativement 20 à 30% de table size)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT owner,
    table_name,
    round((blocks*16),2) "Table size (Ko)",
    round((num_rows*avg_row_len/1024),2) "Data size (Ko)",
    round((blocks*16),2)-round((num_rows*avg_row_len/1024),2)
    "Fragmentation (Ko)"
    from dba_tables
    where table_name in (....)
    and owner='...'
    order by 4 DESC;
    cette requête on le sait très bien ne fournit qu'une approximation en raison du peu de fiabilité d'AVG_ROW_LEN, mais en 9i d'habitude çà nous sert bien de baseline. Procédure testée jusqu'à présent sur des tables non partitionnées

    Avant de lancer la réorg, nous avons lancé la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select owner,segment_name,bytes,blocks,extents from dba_segments
    where owner=’&ownerand segment_name =’&segment_name’;
    Processus de réorg :

    --export de table

    -- Deplacement TBS reorg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table <table_name> move partition <partition_name> tablespace  <TBS_REORG>;
    ...

    -- Retour TBS original
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table <table_name> move partition <partition_name> tablespace <TBS_ORGINAL>;
    ...

    -- Rebuild d’index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter index <index_name> rebuild partition <partition_name>;
    Une fois le processus terminé, on relance la requête lancée au départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select owner,segment_name,bytes,blocks,extents from dba_segments
    where owner=’&ownerand segment_name =’&segment_name’;
    ET LA MYSTERE DE L'OUEST !!! on obtient aucun gain en terme de nombre de blocs/extents ???

    Voyez vous une raison ? maj des stats Oracle du dictionnaire décalée ?

    Merci pour vos lumières

  2. #2
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    PCTFREE trop grand peut être ?

  3. #3
    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,

    S'il s'agit de partitions, il faudrait regarder les stats de dba_tab_partitions au lieu des stats globales de dba_tables.

    Mais c'est peut-être simplement une preuve que la requête en question n'est pas très pertinente...

    Si le but est d'avoir une idée tu taux de remplissage des blocs, alors pourquoi ne pas utiliser dbms_space (en LMT) ? Ce sera probablement plus fiable.

    Cordialement,
    Franck.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Merci bcq pour vos réponses

    donc si la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT owner,segment_name,bytes,blocks,extents FROM dba_segments
    WHERE owner=’&ownerAND segment_name =’&segment_name’;
    lancée AVANT et APRES la réorg donne le même résultat en terme de blocs/extents c'est que les segments n'étaient pas du tout fragmentés ??

    Pour la requête initiale sur la fragmentation, je suis ok sur le fait qu'elle n'est pas parfaite mais sur des tables non partitionnées, elle fonctionne relativement bien.
    Pour ma part, c'est la première fois que je l'expérimente sur des tables partitionnées.

    Pour DBMS_SPACE, on l'emploi depuis la 10g.
    Package fiable en 9i ?

Discussions similaires

  1. Réorganiser vue d'une table Oracle dans un DataGrid
    Par Tatoine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2007, 10h24
  2. [Kylix] sqlconnection + oracle
    Par tibo55555 dans le forum EDI
    Réponses: 1
    Dernier message: 02/09/2002, 09h09
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

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