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

SQL Oracle Discussion :

Taille d'une table partitionnée


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut Taille d'une table partitionnée
    Bonjour à tous,

    Je recherche une requête me permettant de calculer l'espace occupé par des tables. J'ai cette requête qui me permet de réaliser ce calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT s.segment_name "TABLE" , SUM(s.BYTES) /1024/1024 || 'Mo' "Taille Occupé "
    FROM   dba_segments s
    WHERE  s.segment_type = 'TABLE'
    AND    s.OWNER = 'TOTO'
    AND    s.segment_name = ('TABLETOTO');
    Cela retourne la taille de la table appelée TABLETOTO. Cela marche car le nom du segment porte le nom de la table. Mais comment calculer la taille d'une table partitionnée dont les segments n'ont pas le nom de la table ? J'avais pensé à réaliser une requête avec les tables dba_segments et dba_tables mais je ne vois pas comment faire...

    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Avril 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études

    Informations forums :
    Inscription : Avril 2007
    Messages : 135
    Par défaut
    Bonjour,

    Utilise la vue DBA_TAB_PARTITIONS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT p.table_name "TABLE" , SUM(s.BYTES) /1024/1024 || 'Mo' "Taille Occupé "
    FROM   dba_segments s, dba_tab_partitions p
    WHERE  s.segment_type = 'TABLE PARTITION'
    AND    s.owner = 'TOTO'
    AND    s.segment_name = p.partition_name
    AND    p.table_owner= s.owner
    AND    p.table_name = 'TABLETOTO'
    GROUP BY p.table_name;

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Merci pour ta réponse. Elle m'a bien aidée

    En fait il y a plus simple, les segments des partitions portent le nom de la table également et en fait il suffit de rajouter dans la requête que j'avais soumis une condition s.segment_type='TABLE PARTITION'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT s.segment_name "TABLE" , SUM(s.BYTES) /1024/1024 || 'Mo' "Taille Occupé "
    FROM   dba_segments s
    WHERE s.segment_type IN ('TABLE','TABLE PARTITION')
    AND    s.OWNER = 'TOTO'
    AND    s.segment_name = ('TABLETOTO', 'TABLETATA');
    Ainsi on récupère la taille des tables présentes dans la dernière clause qu'elles soient partitionnées ou non.

    Si quelqu'un pouvait confirmer par contre que le nom du segment est bel et bien le nom de la table à chaque fois. Merci.

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par Milo59000 Voir le message
    Si quelqu'un pouvait confirmer par contre que le nom du segment est bel et bien le nom de la table à chaque fois. Merci.
    Oui , c'est le "partition_name" qui est différent pour chaque partition
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Discussions similaires

  1. Taille d'une table MySQL
    Par chnain dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/08/2006, 18h43
  2. augmenter la taille pour une table mysql
    Par zidenne dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/08/2006, 15h01
  3. [MySQL] Taille d'une table/base
    Par Indyana dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 21/10/2005, 11h24
  4. taille d'une table + que 4 Go
    Par amika dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/08/2005, 18h23
  5. taille d'une table
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 11
    Dernier message: 29/12/2004, 13h17

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