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 :

Comment comprend la view de DBA_HIST_SEG_STAT ? [10gR2]


Sujet :

Administration Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comment comprend la view de DBA_HIST_SEG_STAT ?
    Bonjour,

    Je ne comprend pas surtout les columns de DBA_HIST_SEG_STAT ci-dessous:
    db_block_changes_total,
    db_block_changes_delta,
    space_used_total,
    space_used_delta,
    space_allocated_total,
    space_allocated_delta

    J'ai consulté les documents chez oracle,mais j'ai trouvé seulement des descriptions simples, http://docs.oracle.com/cd/B19306_01/...views_3165.htm

    Je voudrais savoir précisément les informations des columns,les significations,unité de mesure(byte ou block),la différence entre <_total> et <_delta>,etc.

    En fait,je voudrais compter les spaces augmentés des tables entre deux timestamps précisés.( je sais DBA_DATA_FILES et DBA_FREE_SPACE, mais...)

    J'ai écrit deux sqls ci-dessous,cependant ça ne marche pas,les résultats sont faux, par example,le résultat de la deuxième sql est beaucoup différent de celui qui vient de DBA_FREE_SPACE.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select obj.owner,
           obj.object_name,
           sum(a.space_used_total),
           sum(a.space_used_delta)
      from dba_hist_seg_stat a, dba_hist_snapshot sn, dba_objects obj
     where sn.snap_id = a.snap_id
       and obj.object_id = a.obj#
       and obj.owner not in ('SYS', 'SYSTEM')
       and end_interval_time between
           to_timestamp('30-06-2013 19,00,00.0', 'dd-mm-yyyy hh24,mi,ss.ff') and
           to_timestamp('01-07-2013 08,00,00.0', 'dd-mm-yyyy hh24,mi,ss.ff')
     group by obj.owner, obj.object_name
     order by obj.owner, obj.object_name;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select obj.owner, sum(a.space_allocated_total), sum(a.space_allocated_delta)
      from dba_hist_seg_stat a, dba_hist_snapshot sn, dba_objects obj
     where sn.snap_id = a.snap_id
       and obj.object_id = a.obj#
       and obj.owner not in ('SYS', 'SYSTEM')
       and end_interval_time between
           to_timestamp('30-06-2013 19,00,00.0', 'dd-mm-yyyy hh24,mi,ss.ff') and
           to_timestamp('01-07-2013 08,00,00.0', 'dd-mm-yyyy hh24,mi,ss.ff')
     group by obj.owner
     order by obj.owner;

    Pardon de mon français mauvais.
    merci,

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    _DELTA c'est la différence entre le _TOTAL de deux snapshots, c'est donc ce dont vous avez besoin, et qui peut s'additionner.
    SPACE_xxx sont en bytes.

    Dans votre requête les jointures ne sont pas bonnes. Ce sont des segments, obj# n'est pas suffisant pour identifier un segment.

    Comme exemple, la requête suivante donne les segments qui ont augmenté de plis de 1MB entre 2 snapshots sur les dernières 24 heures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select owner,object_name,subobject_name,object_type,begin_interval_time,end_interval_time,space_used_delta/1024/1024 MBYTES 
    from dba_hist_seg_stat 
    join dba_hist_seg_stat_obj using(dbid,obj#,ts#,dataobj#)
    join dba_hist_snapshot using(snap_id,dbid,instance_number)
    where end_interval_time between sysdate-1 and sysdate and space_used_delta>1024*1024
    order by 1,2,3;
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci Franck.

    mais pourquoi obj# n'est pas suffisant pour identifier un segment? je trouve que un segment fait seulement partie de un obj#,non?

    Quand j'exécute votre sql,il y a plus de un résultat dans la même object_name,et ceux pouvent s'additionner?

    merci.

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    mais pourquoi obj# n'est pas suffisant pour identifier un segment?
    Non, obj# est l'objet logique, qui peut avoir plusieurs segments physiques (table partitionnée par exemple)

    Quand j'exécute votre sql,il y a plus de un résultat dans la même object_name,et ceux pouvent s'additionner?
    Oui, la taille d'une table partitionnée est la somme des tailles des ses partitions.
    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci Franck.
    Cdt.

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 992
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut,

    Je suis tombé sur cette discussion après avoir regardé la définition de la table DBA_HIST_SEG_STAT.
    Je pensais pouvoir l'utiliser pour voir l'évolution de la taille d'une table mais j'ai fais chou-blanc, ma requête ne marche pas.

    Voici ce que j'ai fais :
    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
    SQL> SELECT SEG.SNAP_ID, SNA.BEGIN_INTERVAL_TIME, SEG.SPACE_USED_TOTAL, SEG.SPACE_USED_DELTA, SEG.SPACE_ALLOCATED_TOTAL, SEG.SPACE_ALLOCATED_DELTA
    FROM DBA_HIST_SEG_STAT SEG, DBA_HIST_SEG_STAT_OBJ OBJ, DBA_HIST_SNAPSHOT SNA
    WHERE SEG.OBJ# = OBJ.OBJ# AND
    SEG.SNAP_ID = SNA.SNAP_ID AND
    OBJ.OBJECT_NAME = upper('VWQueue1_161') AND
    OBJ.OWNER = 'GAD_ATF_ADMIN' AND
    TO_DATE(TO_CHAR(SNA.BEGIN_INTERVAL_TIME, 'DD/MM/YYYY')) > '01/04/2018'
    ORDER BY SNAP_ID;
      2    3    4    5    6    7    8
       SNAP_ID BEGIN_INTERVAL_TIME            SPACE_USED_TOTAL SPACE_USED_DELTA SPACE_ALLOCATED_TOTAL SPACE_ALLOCATED_DELTA
    ---------- ------------------------------ ---------------- ---------------- --------------------- ---------------------
         40313 02/04/18 07:00:24,387                  -1889968            46449                     0                     0
         40314 02/04/18 07:30:25,545                  -1882759             7209                     0                     0
         40316 02/04/18 08:30:27,766                  -1880711             2048                     0                     0
         40317 02/04/18 09:00:28,861                  -1871454             9257                     0                     0
         40318 02/04/18 09:30:30,019                  -1865228             6226                     0                     0
         40319 02/04/18 10:00:31,105                  -1832214            33014                     0                     0
         40320 02/04/18 10:30:32,275                  -1809604            22610                     0                     0
         40321 02/04/18 11:00:33,389                  -1771347            38257                     0                     0
         40322 02/04/18 11:30:34,526                  -1759960            11387                     0                     0
         40323 02/04/18 12:00:35,628                  -1728093            31867                     0                     0
         40324 02/04/18 12:30:36,760                  -1704336            23757                     0                     0
         40325 02/04/18 13:00:37,909                  -1686805            17531                     0                     0
         40326 02/04/18 13:30:39,157                  -1666161            20644                     0                     0
         40327 02/04/18 14:00:40,250                  -1643469            22692                     0                     0
    Les colonnes SPACE_USEDxxx me disent s'il y a eu des DELETE, INSERT, UPDATE (l'évolution de la taille de ma table), les colonnes SPACE_ALLOCATEDxxx si des bytes ont été alloués pour satisfaire les INSERT et UPDATE (si ici on a 0, j'en conclus qu'il reste de l'espace dans les blocs déjà alloués).

    Mon besoin est de voir la taille de la table lors de chaque snap_id, savez-vous où trouver l'info?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/01/2014, 01h17
  2. comment utiliser street view par adresse
    Par thor76160 dans le forum APIs Google
    Réponses: 0
    Dernier message: 01/03/2010, 18h14
  3. Comment utiliser Model View ?
    Par ebodin dans le forum C++Builder
    Réponses: 0
    Dernier message: 02/12/2009, 16h31
  4. Comment actualiser un View ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2009, 15h15
  5. [2.0] Comment désactiver une view ?
    Par quanou dans le forum ASP.NET
    Réponses: 0
    Dernier message: 19/09/2007, 20h24

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