Bonjour à tous,
RDBMS 9.2.0.7.
La question à la fin du post - dsl pour la petite tartine -)
Nous menons actuellement des campagnes de réorg de tables partitionnées.
Nous avons identifié en effet potentiellement une assez grande fragmentation de plusieurs segments via la requête suivante (plus de 20000 blocs de 16ko approximativement 20 à 30% de table size)
1 2 3 4 5 6 7 8 9 10
| SELECT owner,
table_name,
round((blocks*16),2) "Table size (Ko)",
round((num_rows*avg_row_len/1024),2) "Data size (Ko)",
round((blocks*16),2)-round((num_rows*avg_row_len/1024),2)
"Fragmentation (Ko)"
from dba_tables
where table_name in (....)
and owner='...'
order by 4 DESC; |
cette requête on le sait très bien ne fournit qu'une approximation en raison du peu de fiabilité d'AVG_ROW_LEN, mais en 9i d'habitude çà nous sert bien de baseline. Procédure testée jusqu'à présent sur des tables non partitionnées
Avant de lancer la réorg, nous avons lancé la requête suivante :
1 2 3
| select owner,segment_name,bytes,blocks,extents from dba_segments
where owner=&owner
and segment_name =&segment_name; |
Processus de réorg :
--export de table
-- Deplacement TBS reorg
alter table <table_name> move partition <partition_name> tablespace <TBS_REORG>;
...
-- Retour TBS original
alter table <table_name> move partition <partition_name> tablespace <TBS_ORGINAL>;
...
-- Rebuild d’index
alter index <index_name> rebuild partition <partition_name>;
Une fois le processus terminé, on relance la requête lancée au départ :
1 2 3
| select owner,segment_name,bytes,blocks,extents from dba_segments
where owner=&owner
and segment_name =&segment_name; |
ET LA MYSTERE DE L'OUEST !!! on obtient aucun gain en terme de nombre de blocs/extents ???
Voyez vous une raison ? maj des stats Oracle du dictionnaire décalée ?
Merci pour vos lumières
Partager