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 :

Taille réelle d'une table


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut Taille réelle d'une table
    Dans DBA_SEGMENTS, je peux trouver la taille alloué a une table. J'aimerais moi savoir quelle est la taille réelle de ma table. Pour essayer d'évaluer quand aura lieux le prochain NEXT extents.

    Merci,

    PS Je suis d'accord que dans une base "normal" on pas besoin de se poser cette question (et heureusement) mais j'en ai besoin pour générer un cas de test.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par Wurlitzer
    Dans DBA_SEGMENTS, je peux trouver la taille alloué a une table. J'aimerais moi savoir quelle est la taille réelle de ma table. Pour essayer d'évaluer quand aura lieux le prochain NEXT extents.

    Merci,

    PS Je suis d'accord que dans une base "normal" on pas besoin de se poser cette question (et heureusement) mais j'en ai besoin pour générer un cas de test.

    la taille réelle correspond à block dans dba_segments

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bytes plutôt non ?

    Edit : autant pour moi, j'avais pas lu

    Sinon, la taille prise ou la taille allouée c'est pareil pour une table non ?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par Fred_D
    bytes plutôt non ?

    Edit : autant pour moi, j'avais pas lu

    Sinon, la taille prise ou la taille allouée c'est pareil pour une table non ?

    Pas tout à fait , il y a toujours une différence entre une taille alloué et taille occupé

  5. #5
    Membre confirmé Avatar de ariesnojf
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    J'avais trouvé sur ce forum ceci pour l'espace des TBS. peut être faut-il amélioré pour descendre sur une table (perso j'en suis pas capable ) ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    select  nvl(b.tablespace_name,
        nvl(a.tablespace_name,'UNKNOWN')) "Tablespace",
        kbytes_alloc "Taille",
            decode(Allouable, 0, kbytes_alloc, allouable) "Extend",
        kbytes_alloc-nvl(kbytes_free,0) "Uti réel",
        nvl(kbytes_free,0) "Lib réel",
        trunc((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc, 4)*100 "Uti réel %",
            decode(Allouable, 0, kbytes_alloc, allouable)-(kbytes_alloc-nvl(kbytes_free,0)) "Lib virt",
            trunc((kbytes_alloc-nvl(kbytes_free,0))/decode(Allouable, 0, kbytes_alloc, allouable), 4)*100 "Uti virt %",
        data_files "Fichiers  "
    from ( select sum(bytes)/1024/1024 Kbytes_free,
        max(bytes)/1024/1024 largest,
            tablespace_name
            from sys.dba_free_space
            group by tablespace_name ) a,
         ( select sum(bytes)/1024/1024 Kbytes_alloc,
          sum(maxbytes)/1024/1024 Allouable,
         tablespace_name,
         count(*) data_files
         from sys.dba_data_files
         group by tablespace_name )b
    where a.tablespace_name (+) = b.tablespace_name
    order by 1;

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par Jaouad
    Pas tout à fait , il y a toujours une différence entre une taille alloué et taille occupé
    ça se joue au bloc prêt quoi... non ?

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Admettons une base "propre" qui vient d'être chargé . On est en droit de s'attendre à ce que taille alloué = taille occupé , et bien même la ca peut ne peut pas être le cas , notamment lors de la définitions de PCT_FREE et s'il y a ou pas du chainage ( notamment lorsque l'on charge des données particuliéres : son , vidéo)
    Mais en régle général il y a une différence trés trés minime

    Par contre suite à des delete ou update une fragmentation peut apparaitre avec une table en gruyéres . Et là la différence peut être plus importante. Elle dégrade forcément la volumétrie mais également les perfs

    Jaouad

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    bonjour Wurlitzer ,
    Citation Envoyé par Wurlitzer
    Dans DBA_SEGMENTS, je peux trouver la taille alloué a une table. J'aimerais moi savoir quelle est la taille réelle de ma table. Pour essayer d'évaluer quand aura lieux le prochain NEXT extents.

    je veut voir les tailles alloués pour chaque table dans ma base de données, ma question est ou je trouve le fichier DBA_SEGMENTS qui contient ces informations.

  9. #9
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Citation Envoyé par infsaf
    je veut voir les tailles alloués pour chaque table dans ma base de données, ma question est ou je trouve le fichier DBA_SEGMENTS qui contient ces informations.
    DBA_SEGMENTS est une table et non pas un fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    SQL> desc dba_segments
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ---------------
     
     OWNER                                              VARCHAR2(30)
     SEGMENT_NAME                                       VARCHAR2(81)
     PARTITION_NAME                                     VARCHAR2(30)
     SEGMENT_TYPE                                       VARCHAR2(18)
     TABLESPACE_NAME                                    VARCHAR2(30)
     HEADER_FILE                                        NUMBER
     HEADER_BLOCK                                       NUMBER
     BYTES                                              NUMBER
     BLOCKS                                             NUMBER
     EXTENTS                                            NUMBER
     INITIAL_EXTENT                                     NUMBER
     NEXT_EXTENT                                        NUMBER
     MIN_EXTENTS                                        NUMBER
     MAX_EXTENTS                                        NUMBER
     PCT_INCREASE                                       NUMBER
     FREELISTS                                          NUMBER
     FREELIST_GROUPS                                    NUMBER
     RELATIVE_FNO                                       NUMBER
     BUFFER_POOL                                        VARCHAR2(7)
     
    SQL>

  10. #10
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    A mon avis,il faut chercher du côté de DBMS_SPACE.UNUSED_SPACE qui retourne pour un segment donnée l'espace non utilisé.

    Si je créé une table (en gestion manuelle des extents) avec un initial de 100M et que je n'y insère rien, j'ai un alloué à 100M et un utilisé à 0. (ou presque)

    et seule une analyse de type dbms_space peut donner cette info.
    Après, les segments/extents (donc tables) se fient uniquement sur l'alloué.

  11. #11
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    ma probléme est comment voir la taille de chaque table à ma base de données , comment je doit utiliser la table dba_segments pour obtenu mes besoin

  12. #12
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    SELECT segment_name "Nom Table", BYTES / 1024 / 1024 "Taille en Mo"
      FROM dba_segments
     WHERE segment_type = 'TABLE'
    Hope this helps

  13. #13
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    (case when segment_type = 'INDEX' then o.table_name else s.segment_name end) "Nom Table", sum(BYTES / 1024 / 1024) "Taille en Mo"
      FROM dba_segments s
      left outer join all_indexes o on o.index_name = s.segment_name
     WHERE 
     segment_type IN ('TABLE','INDEX') 
     group by (case when segment_type = 'INDEX' then o.table_name else s.segment_name end)
     order by 2 desc;
    Légère amélioration

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

Discussions similaires

  1. Récupérer la taille réelle d'une image
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/07/2013, 14h37
  2. Taille réelle d'une table
    Par Doug_ dans le forum Administration
    Réponses: 2
    Dernier message: 10/08/2009, 10h35
  3. taille maximale d'une table en termes physiques
    Par wisstiti3 dans le forum Administration
    Réponses: 3
    Dernier message: 22/09/2008, 10h18
  4. comment modifier la taille maximale d'une table
    Par mysqldotnet dans le forum Administration
    Réponses: 0
    Dernier message: 14/04/2008, 17h38

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