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 :

Lien entre DBMS_STATS et user_tables/all_tables/dba_tables


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Lien entre DBMS_STATS et user_tables/all_tables/dba_tables
    Bonjour,


    Je dois stocker chaque mois, pour chaque table de ma base de données, le nom de la table et la taille de celle ci.
    Pour cela, j'ai besoin du champ BLOCKS qui se trouve dans la USER_TABLE.
    Voici le problème : pour une trentaine de tables parmi les 600 de ma BDD, je n'ai aucune information à part le nom de la table : pas de nombre de lignes, pas de taille du block etc...
    La question est bête et simple... Pourquoi ?

    D'après ce que j'ai lu sur le net, il existe un lien entre DBMS_STATS et le remplissage de ces tables propres à Oracle, mais je n'ai pas tout compris.
    Merci pour votre éclairage !

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Dans la doc Oracle de ALL_TABLES https://docs.oracle.com/cd/B19306_01...htm#REFRN20286 il est marqué : BLOCKS* : Number of used data blocks in the table.
    Il y a un astérisque à côté de BLOCKS --> la doc précise "Columns marked with an asterisk (*) are populated only if you collect statistics on the table with the ANALYZE statement or the DBMS_STATS package."

    Il est clair que ce champ ne sera renseigné que si tu lances DBMS_STATS sur ta table ou sur le schéma qui renferme les tables sans stats. Attention, cela peut prendre du temps.

    Si le schéma s'appelle USER_EMP, alors sous SQL*Plus il faut lancer EXEC dbms_stats.gather_schema_stats(ownname=>'USER_EMP');
    Il y a bien sur plein d'autres paramètres à cette commande, je te laisse regarder la doc.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    Les valeurs des colonnes num_rows, avg_row_len, blocks et d'autres ne sont pas mises à jour en temps réel. Elles ne sont évaluées que lorsqu'on calcule les statistiques (la colonne last_analyzed indique la date à laquelle ces valeurs étaient valables). Si pour une raison ou une autre, les statistiques ne sont pas calculées régulièrement sur certaines tables, alors les valeurs seront non renseignées ou obsolètes.

    Sinon, personnellement, pour mesurer la taille des objets, je préfère passer par la vue dba_segments. Déjà parce que dans cette vue, les colonnes blocks et bytes donnent la taille actuelle de l'objet, et ensuite parce qu'elle donne des informations non seulement sur les tables, mais aussi sur les index, les lobs... dont la volumétrie m'intéresse également.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci à vous deux pour vos réponses.

    @Ikebukuro : Effectivement, ça semble plus clair maintenant. Merci pour cette technique, je consulte de ce pas la documentation pour ce fameux 'gather_schema_stats'

    @Baldrick : Le problème, c'est que dans la user_tables et ses deux grandes sœurs, j'ai les numéros de lignes qui m’intéressent également. Chose que je ne retrouve pas dans la dba_segments, même si, effectivement, la volumétrie exacte est intéressante. Tiens, comment cette vue est-elle mise à jour d'ailleurs ?

    Merci !

    EDIT: Je viens de voir qu'on avait bien un GATHER_SCHEMA_STATS qui tourne... Mais avec l'option 'GATHER STALE', et si je ne m'abuse le problème vient de là... Je vais tester ça !

Discussions similaires

  1. DBMS_STATS : lien entre partname et granularity
    Par iSylvain dans le forum Administration
    Réponses: 3
    Dernier message: 02/04/2009, 21h24
  2. Lien entre les vues 'Structure' et l'éditeur
    Par Tifauv' dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 13/05/2004, 16h06
  3. lien entre les table de paradox
    Par salim_intic1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 16h00
  4. Réponses: 3
    Dernier message: 11/04/2004, 01h05
  5. [debutant][servlet]lien entre formulaire et servlet
    Par omega dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/03/2004, 08h54

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