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