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

DB2 Discussion :

Requête pour calculer la taille des datafiles


Sujet :

DB2

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut Requête pour calculer la taille des datafiles
    Bonjour les experts DB2,

    Je suis en train de faire un script php pour gérer mes sauvegardes et autre DB2 pour notre parc de bases de données. J'aimerais maintenant faire une requête qui me sort le nom des tablespaces , leur emplacement et leur taille réelle sur disque et l'espace occupe.

    Est ce que quelqu'un aurait une idée de comment faire cela ? ou quelle vue je dois attaquer ou croiser pour trouver ces informations ?

    Pour ce qui est de la mise en forme je m'en arrangerai.

  2. #2
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Infos dans le sys catalog, quelle est ta version de DB2 ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    Bonjour, ma version de test est une 9.7 express-c et la version de prod une 9.5.

    On vient de me suggerer de tester
    List tablespace show detail
    et de fouiller dans les vues de syscat ( je ne connais pas les commandes pour consulter les vues de ce type ).

    ps: je debute sur db2

  4. #4
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    9.5 donc LUW

    Syscat = sys catalog = system catalog

    Tu trouveras ton bonheur ici : http://publib.boulder.ibm.com/infoce.../c0051291.html

    Fait un tour sur SYSCAT.TABLESPACES

    Il suffit de taper dans cette table pour récupérer les infos qui t'intéressent, par exemple si tu veux le nom des tablespaces :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TBSPACE FROM SYSCAT.TABLESPACES;
    A adapter


    .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    Bonjour, merci beaucoup pour vos informations, ca va me permettre de faire rapidement mes nouveaux scripts.

    Cordialement

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    J'ai enfin la requete qui va bien , pour ceux que ca interesse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT varchar(tbsp_name, 30) as tbsp_name, reclaimable_space_enabled,tbsp_free_pages,tbsp_page_top,tbsp_usable_pages FROM TABLE(MON_GET_TABLESPACE('',-2)) AS t WHERE reclaimable_space_enabled=1  ORDER BY tbsp_free_pages ASC
    ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TBSP_NAME                      RECLAIMABLE_SPACE_ENABLED TBSP_FREE_PAGES      TBSP_PAGE_TOP        TBSP_USABLE_PAGES
    ------------------------------ ------------------------- -------------------- -------------------- --------------------
    SYSCATSPACE                                            1                 4692                19880                24572
    USERSPACE1                                             1                 7936                  224                 8160
    SYSTOOLSPACE                                           1                 8028                  160                 8188
    a adapter avec reclaimable_space_enabled=1 ou 0 en fonction de vos besoins.

    Voici une requete propose pour les datafiles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTR(TBSP_NAME,1,20) AS TBSP_NAME, INT(TBSP_ID) AS TBSP_ID, SUBSTR(CONTAINER_NAME,1,45) AS CONTAINER_NAME, INT(CONTAINER_ID) AS CONTAINER_ID, CONTAINER_TYPE, INT(TOTAL_PAGES) AS TOTAL_PAGES, INT(USABLE_PAGES) AS USABLE_PAGES, ACCESSIBLE FROM SYSIBMADM.CONTAINER_UTILIZATION
    ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TBSP_NAME            TBSP_ID     CONTAINER_NAME                                CONTAINER_ID CONTAINER_TYPE   TOTAL_PAGES USABLE_PAGES ACCESSIBLE
    -------------------- ----------- --------------------------------------------- ------------ ---------------- ----------- ------------ ----------
    SYSCATSPACE                    0 C:\DB2\NODE0000\TEST2\T0000000\C0000000.CAT              0 FILE_EXTENT_TAG        24576        24572          1
    TEMPSPACE1                     1 C:\DB2\NODE0000\TEST2\T0000001\C0000000.TMP              0 PATH                       0            0          1
    USERSPACE1                     2 C:\DB2\NODE0000\TEST2\T0000002\C0000000.LRG              0 FILE_EXTENT_TAG         8192         8160          1
    SYSTOOLSPACE                   3 C:\DB2\NODE0000\TEST2\T0000003\C0000000.LRG              0 FILE_EXTENT_TAG         8192         8188          1
    SYSTOOLSTMPSPACE               4 C:\DB2\NODE0000\TEST2\T0000004\C0000000.UTM              0 PATH                       0            0          1
    Je voudrait faire un mix des 2 requetes en mettant tout le contenu de la premiere requete et en rajoutant seulement le container name de la seconde. Pourriez vous m'aider s'y il vous plait ?

  7. #7
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Eventuellement une jointure sur le tablespace (à tester) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT VARCHAR(T.TBSP_NAME, 20) 	AS TBSP_NAME
         , T.RECLAIMABLE_SPACE_ENABLED
         , T.TBSP_FREE_PAGES
         , T.TBSP_PAGE_TOP
         , T.TBSP_USABLE_PAGES
         , SUBSTR(C.CONTAINER_NAME, 1, 45) 	AS CONTAINER_NAME
    FROM TABLE(MON_GET_TABLESPACE('', -2)) T
       , SYSIBMADM.CONTAINER_UTILIZATION   C
    WHERE T.TBSP_NAME = C.TBSP_NAME
      AND T.RECLAIMABLE_SPACE_ENABLES = 1
    ORDER BY T.TBSP_FREE_PAGES

    Attention la table function MON_GET_TABLESPACE et la table SYSIBMADMIN.CONTAINER n'existe pas en DB2 9.5 LUW, seulement en 9.7.



    .

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    Merci bien pour votre solution.

    Citation Envoyé par Peut-êtreUneRéponse Voir le message

    Attention la table function MON_GET_TABLESPACE et la table SYSIBMADMIN.CONTAINER n'existe pas en DB2 9.5 LUW, seulement en 9.7.



    .
    Aie ca risque de coincer alors :s

    edit: effectivement ca coince, il faudrait que je trouve l'equivalent de cette routine compatible pour la version 9.5

    il va donc que je remplace cette routine par un select sur SYSCAT.TABLESPACES. Par contre, venant du monde d'oracle, je n'arrive pas a faire des DESCRIBE DE SYSCAT.TABLES. C'est normal ? J'ai donc du passer par control center pour voir a quoi ressemblent les tables.

    En tout cas je trouve tout ca grisant car si je fais des associations avec syscattables et syscat.tablespaces ca ne me donne que la taille de SYSCATSPACE :'(.

  9. #9
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    OUPS, erreur de ma part : En fait SYSIBMADM.CONTAINER n'est pas dispo en 9.5 MAIS c'est SYSIBMADM.CONTAINER_UTILIZATION que tu utilises, et cette dernière est dispo en 9.5

    Par contre au lieu d'utiliser la table fonction MON_GET_TABLESPACE tu peux essayer de taper sur la table SYSIBMADM.TBSP_UTILIZATION, il semblerait que les informations que tu cherches y soit (free pages, pages top, usable page)

    En résumé : jointure sur CONTAINER_UTILIZATION et UTILIZATION... à voir.

    .

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 146
    Points : 100
    Points
    100
    Par défaut
    Ce qui nous donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  T.TBSP_NAME, T.TBSP_TOTAL_PAGES, T.TBSP_USED_PAGES, T.TBSP_FREE_PAGES, C.CONTAINER_NAME FROM SYSIBMADM.TBSP_UTILIZATION T,SYSIBMADM.CONTAINER_UTILIZATION C WHERE T.TBSP_ID=C.TBSP_ID
    Et c'est parfaitement ce que je voulais

    Merci beaucoup de votre aide.

    Cordialement

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

Discussions similaires

  1. Requête pour calculer le solde des fournisseurs
    Par Issam dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/07/2012, 10h12
  2. requete de calcul de la taille des datafiles
    Par AlternantOracle dans le forum SQL
    Réponses: 2
    Dernier message: 23/02/2010, 09h40
  3. Réponses: 5
    Dernier message: 26/11/2008, 20h05
  4. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  5. Requête pour récupérer le nom des champs
    Par legillou dans le forum JDBC
    Réponses: 1
    Dernier message: 08/02/2006, 16h09

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