Taille tables

De knowledge
Révision datée du 27 février 2025 à 22:12 par Jpinon (discussion | contributions) (Page créée avec « == 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 pe... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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.