Taille tables

De knowledge
Aller à la navigation Aller à la recherche

Comment connaitre la taille d'une table oracle

Lorsque la taille d'une base de donnée (un schéma dans une base pour être précis) commence à devenir trop grande, il faut savoir quelle table occupe la place.

La requête :

 select segment_name, sum(bytes)/1024/1024 table_size
 from user_extents
 group by segment_name
 order by table_size desc

Donne la liste ordonnée des "segments" les plus consommateurs. Ces segments peuvent être :

  • des tables
  • des indexs
  • des SYS_LOB**$$ segment stockant les champs LOB de certaines tables.

A qui appartient un Index?

Un des segments gros consommateurs de place est un index? On connait sa table associée par le requête :

 select * from user_indexes
 where index_name='INDEX NAME'

A quelle table et quelle colonne un segment SYS_LOB est il associé?

Le nom du segment gros consommateur est du style SYS_LOBxxxx$$? Il s'agit d'un segment stockant les données LOB d'une table. Mais quelle table et quelle colonne dans cette table?

 SELECT
   table_name "Table"
 , column_name "Column"
 , segment_name "Segment"
 , index_name "Index"
 FROM user_lobs
 where segment_name='SYS_LOBxxxxxx$$'

On est ensuite libre de faire un peu de ménage.