Citation

J’ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone.

Bjarne Stroustrup

mardi 22 janvier 2013

Requête d'administration Oracle

Quelques requêtes Oracle permettant d'avoir la taille prise par les tables d'un schéma. Très utile si c'est fait régulièrement pour voir l'augmentation de taille d'un schéma dans le temps.On a parfois des surprises, j'ai eu une table dont les indexes prenaient 18Go pour une table de 8Go ....

Taille prise par les tables d'un schéma

Elle inclus les indexes et les LOB

SELECT   OWNER, TABLE_NAME, TRUNC( SUM( BYTES ) / 1024 / 1024 ) MEG
    FROM ( SELECT SEGMENT_NAME TABLE_NAME, OWNER, BYTES
            FROM DBA_SEGMENTS
           WHERE SEGMENT_TYPE = 'TABLE'
          UNION ALL
          SELECT I.TABLE_NAME, I.OWNER, S.BYTES
            FROM DBA_INDEXES I,
                 DBA_SEGMENTS S
           WHERE S.SEGMENT_NAME = I.INDEX_NAME AND
                 S.OWNER = I.OWNER AND
                 S.SEGMENT_TYPE = 'INDEX'
          UNION ALL
          SELECT L.TABLE_NAME, L.OWNER, S.BYTES
            FROM DBA_LOBS L,
                 DBA_SEGMENTS S
           WHERE S.SEGMENT_NAME = L.SEGMENT_NAME AND
                 S.OWNER = L.OWNER AND
                 S.SEGMENT_TYPE = 'LOBSEGMENT'
          UNION ALL
          SELECT L.TABLE_NAME, L.OWNER, S.BYTES
            FROM DBA_LOBS L,
                 DBA_SEGMENTS S
           WHERE S.SEGMENT_NAME = L.INDEX_NAME AND
                 S.OWNER = L.OWNER AND
                 S.SEGMENT_TYPE = 'LOBINDEX' )
   WHERE OWNER IN UPPER( '&owner' )
GROUP BY TABLE_NAME, OWNER
  HAVING SUM( BYTES ) / 1024 / 1024 > 10 /* Ignore les petites tables de moins de 10Mo */
ORDER BY SUM( BYTES ) DESC;



Aucun commentaire:

Enregistrer un commentaire